DEV Community

CodingBlocks

Episode 66 – Project Management Anti-patterns

It’s time for another episode as Joe wants to choke a developer, Michael scraps his new social networking platform, and Allen finally learns of dad jokes while we continuing the anti-patterns conversation.

Using your podcast player to read this? Find this episode’s full show notes at http://www.codingblocks.net/episode66.

Sponsors

  • Linode – Use code “CODINGBLOCKS17” for $20 towards hosting (up to four months free!)

Survey says …

This episode we ask, having multiple monitors is great. But at they …

#yop-poll-container-43_yp59adea5087373 { width: 1000; background:#fff; padding:10px; color:#555; overflow:hidden; font-size:12px; } #yop-poll-container-43_yp59adea5087373 input[type='text'] { margin:0px 0px 5px 0px; padding:2%; width:96%; text-indent:2%; font-size:12px; } .yop-poll-name-43_yp59adea5087373 { font-weight:bold; background:#327BD6; color:#fff; padding:5px; text-align:center; font-size:12px; } #yop-poll-questions-container-43_yp59adea5087373 { font-size:14px; margin:5px 0px; } .yop-poll-question-container-43_yp59adea5087373 { padding: 2px; } .yop-poll-question-43_yp59adea5087373 { background:#327BD6; color:#fff; margin-bottom: 21px; margin-top: -10px; font-style: italic; text-align: center; width: 100%; padding:5px; } .yop-poll-answers-43_yp59adea5087373 { } .yop-poll-answers-43_yp59adea5087373 ul { list-style: none outside none; margin: 0; padding: 0; } .yop-poll-li-answer-43_yp59adea5087373 { font-style:normal; margin:0px 0px 10px 0px; padding:0px; font-size:12px; margin-bottom:20px; } .yop-poll-li-answer-43_yp59adea5087373 input { margin:0px; float:none; } .yop-poll-li-answer-43_yp59adea5087373 label { margin:0px; font-style:normal; font-weight:normal; font-size:12px; float:none; } .yop-poll-results-43_yp59adea5087373 { font-size: 12px; font-style: italic; font-weight: normal; margin-left: 15px; } .yop-poll-customs-43_yp59adea5087373 { } .yop-poll-customs-43_yp59adea5087373 ul { list-style: none outside none; margin: 0; padding: 0; } .yop-poll-li-custom-43_yp59adea5087373 { padding:0px; margin:0px; font-size:14px; } /* Start CAPTCHA div style*/ #yop-poll-captcha-input-div-43_yp59adea5087373 { margin-top:5px; } #yop-poll-captcha-helpers-div-43_yp59adea5087373 { width:30px; float:left; margin-left:5px; height:0px; } #yop-poll-captcha-helpers-div-43_yp59adea5087373 img { margin-bottom:2px; } #yop-poll-captcha-image-div-43_yp59adea5087373 { margin-bottom:5px; } #yop_poll_captcha_image_43_yp59adea5087373 { float:left; } /* End CAPTCHA div style*/ .yop-poll-clear-43_yp59adea5087373 { clear:both; } #yop-poll-vote-43_yp59adea5087373 { } /* Start Result bar*/ .yop-poll-results-bar-43_yp59adea5087373 { background:#f5f5f5; height:10px; } .yop-poll-results-bar-43_yp59adea5087373 div { background:#555; height:10px; } /* End Result bar*/ /* Start Vote Button*/ #yop-poll-vote-43_yp59adea5087373 div#yop-poll-vote-43_yp59adea5087373 button { float:left; } #yop-poll-vote-43_yp59adea5087373 div#yop-poll-results-43_yp59adea5087373 { float: right; margin-bottom: 20px; margin-top: -20px; width: auto; } #yop-poll-vote-43_yp59adea5087373 div#yop-poll-results-43_yp59adea5087373 a { color:#fff; text-decoration:underline; font-size:12px; } #yop-poll-vote-43_yp59adea5087373 div#yop-poll-back-43_yp59adea5087373 a { color:#555; text-decoration:underline; font-size:12px; } #yop-poll-vote-43_yp59adea5087373 div#yop-poll-archive-43_yp59adea5087373 a { color:#555; text-decoration:underline; font-size:12px; } #yop-poll-vote-43_yp59adea5087373 div { float:left; width:100%; } /* End Vote Button*/ /* Start Messages*/ #yop-poll-container-error-43_yp59adea5087373 { font-size:12px; font-style:italic; color:red; text-transform:lowercase; margin-bottom:20px; text-align:center; } #yop-poll-container-success-43_yp59adea5087373 { font-size:12px; font-style:italic; color:green; margin-bottom:20px; text-align:center; } /* End Messages*/#yop-poll-container-43_yp59adea5087373 img { max-width: 1000; } .yop-poll-forms-display{}
Having multiple monitors is great. But are they ...
  • A handicap?
  • A hindrance?
  • A must have?

News

Project Management Anti-patterns

Cart before the horse

  • Focusing too many resources on a stage of a project out of its sequence

Death march

  • A project whose staff, while expecting it to fail, are compelled to continue, often with much overwork, by management which is in denial
  • The project is destined to fail, hence it’s a death march
  • These projects are the result of unrealistic or overly optismic expectations
    • Scheduling
    • Scope
    • Both
  • Coupled with a
    • Lack of documentation
    • Lack of training/expertise
  • Hurts team morale/psyche
  • Management often believes the problem can be corrected by:
    • Everyone working longer hours
    • Adding more people to the project

Ninety-ninety rule

  • Tendency to underestimate the amount of time to complete a project when it is “nearly done”
  • Hofstadter’s Law: It always takes longer than you expect, even when you take into account Hofstadter’s Law. – Douglas Hofstadter
  • Similar: 99 Rule, 80/20 Rule, Hofstadter’s law, Pareto Principle
  • Different definitions of “done”
  • “Put a bow on it”
  • How do you know when you’re falling into this trap? Have you made any estimations?
  • How to prevent? https://stackoverflow.com/questions/1099637/how-does-one-deal-with-hofstadters-law (Yishai)
    • Estimate in small chunks
    • Work in small iterations
    • Focus attention on what caused the deviation from the estimate to make the next estimate better.
    • Don’t estimate

Overengineering

  • Spending resources making a project more robust and complex than is needed
  • Designing of a product to be more robust or complicated than is necessary for its application
  • Overengineering can be desirable when safety or performance on a particular criterion is critical
  • Wasteful in terms of value engineering
  • In contradiction to the KISS principal and less is more
  • Products are more complicated than necessary – Using DDD for CRUD is full on overengineering
  • Can make user interfaces too complex for what the user’s needs really are
  • Making something work for more users than necessary (must scale to the world)

Scope creep

  • Adding new features to the project after the original requirements have been drafted and accepted at any point after the project begins
  • Also known as:
    • Requirement creep
    • Function creep
    • Kitchen sink syndrome
  • Occurs when the scope:
    • Is not defined
    • Not documented
    • Not controlled
  • Similar but distinct from feature creep
  • Can be a result of:
    • Poor change control
    • Lack of defining a project’s success metric … i.e. it’s objectives
    • Weak project manager / executive sponsor
    • Poor communication
    • Lack of versatility
  • Large, mega-projects often fall victim to scope creep
  • Adds additional cost to the project

Smoke and mirrors

Brooks’ law

  • Adding more resources to a project to increase velocity, when the project is already slowed down by coordination overhead.
  • Adding more technical resources (people) late in a project does not increase productivity and reduce the timeline
  • Ramp up time is real
    • Takes time away from existing (productive) people on a team to help educate the newer people on the team
    • Newer members may even slow things down further by introducing bugs because they don’t understand how all the pieces fit together
  • Communication overhead is also real
  • As you add more people to a project, the more people need to intercommunicate in order to stay in sync – this is a real problem that does not scale well
  • Limited divisibility of tasks
    • Compared to adding more people to cleaning a hotel room – at some point people just get in the way of each other

Resources We Like

Tip of the Week

BEEP.

This week in Dad Jokes … Programmer, err Engineer, um Developer Edition:

My collection of terrible puns from ProgrammerHumor

Episode source