Sunday, August 9, 2009

excellent article on managing tight deadlines + my comments

A job usually involves many phases: investigation, brainstorming, design, implementation, testing and documentation. A quality job requires effort and time in every phase. However, when push comes to shove, many of the phases can be skipped. The problems will show up much later. By that time, nobody would care who's to blame. And companies are more than willing to budget for these problems, in the form of increased support, more bug fixes, or even a brand-new system. You just have to be WILLING and ABLE to produce imperfect software.

"The second important thing to managing work load is that you have to be the master of your domain, not your boss. This means you don't tell your boss everything. And you make a lot of decisions yourself. Otherwise, you lose control." ---- My GS team lead knows too much about my project. I tell him everything about my project.

It starts from estimates. You know better than anyone else how long each piece will take. A hard piece to others might be easy for you. But a simple task might end up taking a lot of your time. Don't tell your boss that you've worked on something before and can borrow a lot of code from previous projects.

The same applies in the middle of your project. A seemingly complicated piece could turn out to be smooth sailing. Yet a small issue could bog you down for many hours. Again, don't tell your boss you finished something in an hour which was budgeted for half a day. But do tell him that a bug from another team cost you many hours unexpectedly.

"What do you do when you see something wrong in the requirement? Or something wrong with other people's work which you depend on? If you're pressed for time, act as if you didn't see them. Act like a fool. You may be punished for missing your own deadline, but you're unlikely to be punished for not spotting other people's mistakes." ---- By not reporting the issues early, project will suffer but you will not, but avoid making your boss look bad -- try to give him a scapegoat. Project will suffer -- project will need more time, and the reason is other people's mistakes. You expand the impact of their mistakes to get more time for yourself. Conversely, when your mistake affects them, they might do the same.

"What do you do when deadline approaches and you discovered a big hole in your work? Again, act like a fool. Act as if you didn't see them. You hand in your work. And a week later, people would find issues. But that's normal. Nobody's perfect. You and your boss get punished for missing deadline; but neither(???) of you would be held responsible for (non-critical) bugs. Rather you will be given new budget to fix things, probably after a relaxing break in the sun."

---- Slogan says "tell your manager the bad news early". If it's your mistake, then decide if he will find out you were hiding it. Some managers ask "any problem?" periodically. Often he can't be sure you were knowingly hiding problems -- you could act like a fool.

---- There are different bugs and different levels of impact. Manager may say some functionality is important or some timeline is important, but question them in your head.  It takes a lot of observations to figure out which ones are really important to your manager's bonus. Many delays and missing features are manageable or expected.

My GS colleagues know what bugs are tolerable to the manager. If manager must explain it to users and other teams, then you know it's a visible bug. This knowledge comes from experience. However, initially you need to do some quality work to win trust.

---- In fact, the best GS (and other) team members often contribute non-trivial bugs, partly because they are more productive and change lots and lots of modules.


Every decision you make affects your schedule. Be flexible. Be creative. Be able to accept imperfections. Be a liar if need be. The important thing is to look good, not to be good. Image is everything. And you can cut a lot of corners without affecting your image.

No comments:

Total Pageviews

my favorite topics (labels)

_fuxi (302) _misLabel (13) _orig? (3) _rm (2) _vague (2) clarified (58) cpp (39) cpp_const (22) cpp_real (76) cpp/java/c# (101) cppBig4 (54) cppSmartPtr (35) cppSTL (33) cppSTL_itr (27) cppSTL_real (26) cppTemplate (28) creditMkt (14) db (65) db_sybase (43) deepUnder (31) dotnet (20) ECN (27) econ/bank` (36) fin/sys_misc (43) finGreek (34) finReal (45) finRisk (30) finTechDesign (46) finTechMisc (32) finVol (66) FixedIncom (28) fMath (7) fMathOption (33) fMathStoch (67) forex (39) gr8IV_Q (46) GTD_skill (15) GUI_event (30) inMemDB (42) intuit_math (41) intuitFinance (57) javaMisc (68) javaServerSide (13) lambda/delegate (22) marketData (28) math (10) mathStat (55) memIssue (8) memMgmt (66) metaProgram` (6) OO_Design (84) original_content (749) polymorphic/vptr (40) productive (21) ptr/ref (48) py (28) reflect (8) script`/unix (82) socket/stream (39) subquery/join (30) subvert (13) swing/wpf (9) sysProgram` (16) thread (164) thread_CAS (15) thread_cpp (28) Thread* (22) timeSaver (80) transactional (23) tune (24) tuneDB (40) tuneLatency (30) z_ajax (9) z_algoDataStruct (41) z_arch (26) z_arch_job (27) z_automateTest (17) z_autoTrad` (19) z_bestPractice (39) z_bold (83) z_bondMath (35) z_book (18) z_boost (19) z_byRef^Val (32) z_c#GUI (43) z_c#misc (80) z_cast/convert (28) z_container (67) z_cStr/arr (39) z_Favorite* (8) z_FIX (15) z_forex (48) z_fwd_Deal (18) z_gz=job (33) z_gzBig20 (13) z_gzMgr (13) z_gzPain (20) z_gzThreat (19) z_hib (19) z_IDE (52) z_ikm (5) z_IR_misc (36) z_IRS (26) z_javaWeb (28) z_jdbc (10) z_jobFinTech (46) z_jobHunt (20) z_jobRealXp (10) z_jobStrength (15) z_jobUS^asia (27) z_letter (42) z_linq (10) z_memberHid` (11) z_MOM (54) z_nestedClass (5) z_oq (24) z_PCP (12) z_pearl (1) z_php (20) z_prodSupport (7) z_py (31) z_quant (14) z_regex (8) z_rv (38) z_skillist (48) z_slic`Problem (6) z_SOA (14) z_spring (25) z_src_code (8) z_swingMisc (50) z_swingTable (26) z_unpublish (2) z_VBA/Excel (8) z_windoz (17) z_wpfCommand (9)

About Me

New York (Time Square), NY, United States