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
- Thank you for our latest reviews:
- iTunes: Laserath, ReallyOldCoder, thejungn
- Stitcher: frostblooded, joseluah, andre_macedo
- How do you pronounce kludge?
- Paul Spoon had the idea of pronouncing it as difficultly as possible
- Ambix on Episode 65 – TVP – poor performance? Use a temp table…also…terrible people
- Joe Recursion Joe on Ep 65 as well – great example of that magic pushbutton
- http://www.codingblocks.net/episode65
- Facebook Patent / Licensing Uproars?
- Allen finally built his Hackintosh and loves it.
- Wanna know his favorite part? Did you guess the CPU cooler?
- Is sql server utilizing alien technology? Pyramids, Who shot JFK, Long Island Medium?
- What’s your preferred title?
- Blind programmer listens to code at sonic the hedgehog speeds
- New mics, let us know what you think!
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
- Demonstrating unimplemented functions as if they were already implemented
- Every E3 demo ever
- Smoke and mirrors is an idiom for a deceptive, fraudulent or insubstantial explanation or description
- Think about the illusionists
- BTW David Copperfield made the Statue of Liberty disappear: http://gothamist.com/2016/05/04/david_copperfield_statue_of_liberty.php
- Volkswagen: $200k and 40 months… https://www.theregister.co.uk/2017/08/25/vw_engineer_gets_3yrs_for_emissionbusting_sw/
- How do you know…just kidding…you know!
- Is this an anti-pattern, or a way of life?
- Often times the prototype becomes the product
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
- Use multiple desktops in Windows 10
- https://www.cnet.com/how-to/how-to-use-multiple-desktops-in-windows-10/
- In GIT, undo a rebase or a merge, or just go back in time
- https://haveibeenpwned.com/
BEEP.
This week in Dad Jokes … Programmer, err Engineer, um Developer Edition: