Software Best Practices

Voices on Software Development Best Practices
Welcome to Software Best Practices Sign in | Join | Help
in Search

10x Software Development

Numerous studies have found 10:1 differences in productivity and quality among individuals and even among teams. This blog contains Steve McConnell's thoughts about how to move toward the "10" side of that 10:1 ratio. Add to Technorati Favorites

Classic Mistakes Updated

In Rapid Development I wrote that, "Some ineffective development practices have been chosen so often, by so many people, with such predictable, bad results that they deserve to be called 'Classic Mistakes.'" That was in 1996. At that time I was self-employed and most of my experience had come from working with only a handful of companies.

New Classic Mistakes

After founding Construx, a decade of work with hundreds of companies has enabled us to identify several new classic mistakes. Here are the additional classic mistakes we've identified:

  • Confusing estimates with targets
  • Excessive multi-tasking
  • Assuming global development has a negligible impact on total effort
  • Unclear project vision
  • Trusting the map more than the terrain
  • Outsourcing to reduce cost
  • Letting a team go dark (replaces the previous "lack of management controls")

Next Step: Hard Data on Classic Mistakes 

The next step in our work is to identify just how "classic" these classic mistakes really are. Are they really made very frequently, and is the impact really very bad when the mistakes are made? To answer those questions, we've launched a Classic Mistakes Survey, and I invite you to take it. The survey lists 42 classic mistakes and asks you to rank the frequency and severity of each mistake in your experience.

When we have enough responses we'll post the results of the survey. People who complete the survey will receive a summary of the survey at least 30 days sooner than the general public.

So please, take the survey!

The 36 Original Classic Mistakes

For the record, the table below lists the original classic mistakes from Rapid Development. And here is a link to the full text of the original Classic Mistakes chapter from Rapid Development).

People-Related Mistakes   Process-Related Mistakes   Product-Related Mistakes   Technology-Related Mistakes
1. Undermined motivation

2. Weak personnel

3. Uncontrolled problem employees

4. Heroics

5. Adding people to a late project

6. Noisy, crowded offices

7. Friction between developers and customers

8. Unrealistic expectations

9. Lack of effective project sponsorship

10. Lack of stakeholder buy-in

11. Lack of user input

12. Politics placed over substance

13. Wishful thinking

14. Overly optimistic schedules

15. Insufficient risk management

16. Contractor failure

17. Insufficient planning

18. Abandonment of planning under pressure

19. Wasted time during the fuzzy front end

20. Shortchanged upstream activities

21. Inadequate design

22. Shortchanged quality assurance

23. Insufficient management controls

24. Premature or too frequent convergence

25. Omitting necessary tasks from estimates

26. Planning to catch up later

27. Code-like-hell programming

28. Requirements gold-plating

29. Feature creep

30. Developer gold-plating

31. Push me, pull me negotiation

32. Research-oriented development

33. Silver-bullet syndrome

34. Overestimated savings from new tools or methods

35. Switching tools in the middle of a project

36. Lack of automated source

Take the survey!

Comments

 

Paulo Eduardo Neves said:

Hope it means that a new edition of "Rapid Development" is coming soon:-)

June 16, 2007 8:38 PM
 

chnorton said:

I think lists of "classic mistakes" are extremely useful in software development. Speaking from an educational perspective, it's good for students (and educators) to be able to see the kinds of things that go wrong in real-world software projects and to come up with strategies for how to avoid them. This also teaches them the benefits of risk management. :)

It'll be interesting to see the new list of classic mistakes!

June 16, 2007 11:40 PM
 

mikeramm said:

Last night had my first public speech. I was invited at a seminar organized by the Bulgarian Association of Software Developers (BASD) and I spoke about the classic mistakes of the software development. I was inspired by your book Rapid Development ever since I read it the first time about 10 years ago and I'm still fighting against them.

I think it was just about time to make an update to the list and to evaluate the frequency and the impact of the classic mistakes these days. To make a survey is a great idea - I took it immediately and I encourage my colleagues and the readers of my blog to take it too. I believe it will give us more exact information what are the most common and the most dangerous mistakes that we make.

Thank you, Steve!

Mike

June 20, 2007 10:31 AM
 

Maksym Shostak said:

Does the survey correlate with techologies used (Java, .NET) and what of that communities have better support or understanding in importance of learning core programming principles?

My classic mistake is described in Code Complete 2 chapter 3.1 - where you write about dedication of laymen (managers) in prerequisites of construction...

Currently I'm looking for a job. :-)

June 21, 2007 11:36 AM
 

Steve McConnell said:

The survey doesn't correlate with techologies used (Java, .NET, etc.). If you look at the specifics, there are a couple mistakes related to uncritical adoption of technologies, but the mistakes aren't based on details of any specific technology.  

June 23, 2007 10:20 AM
 

imran said:

It's soemtime unfortunate that software development has come along way and yet, there are these classical mistakes that are dealt with in most cases. Reading the list brings back a lot of 'ah yes - i've been there' situations. The sad part is it though that these are known things but get overlooked or neglected when people are slaves for time. when the time in concern is not planned properly, most of these mistakes arise. IMHO a basic rule that defines a golden triangle; "Requirements-People(Effort)-Cost" in projects. And when this is negelected, i think we dive into most of the mistakes described here.

I think the classical mistakes should be a check-list for all decission makers, planning folks when engaging in a project. The list should be checked during initiation, planning, implementation and tracking of a project. Thanks for this list.

June 23, 2007 8:03 PM
 

Travis Jensen said:

This is a great list.  It would be interesting to view a prioritized list (from your viewpoint).  Personally, my experience has shown (in each category) uncontrolled problem employees, wasted time up front (followed closely by code-like-hell programming as a result), feature creep, and switching tools to be most destructive.

Many of these mistakes I've seen forced into a project by non-technical management, either further up the engineering management chain or outside of engineering altogether.

tj

August 7, 2007 10:44 AM

About Steve McConnell

Steve McConnell is CEO and Chief Software Engineer at Construx Software where he writes books and articles, teaches classes, and oversees Construx’s software development practices. Steve is the author of Software Estimation: Demystifying the Black Art (2006), Code Complete (1993, 2004), Rapid Development (1996), Software Project Survival Guide (1998), and Professional Software Development (2004). His first two books won Software Development magazine's Jolt Excellence award for best programming books of their years.

Steve has worked in the desktop software industry since 1984 and has expertise in rapid development methodologies, project estimation, software construction practices, and third-party contract management. In 1998, readers of Software Development magazine named Steve one of the three most influential people in the software industry along with Bill Gates and Linus Torvalds. Steve was Editor in Chief of IEEE Software magazine from 1998-2002.

Steve is on the Panel of Experts that advises the Software Engineering Body of Knowledge (SWEBOK) project and was Chair of the IEEE Computer Society’s Professional Practices Committee. Steve earned a Bachelor’s degree from Whitman College and a Master’s degree in software engineering from Seattle University. Read more about Steve at www.stevemcconnell.com.

This Blog

Syndication

News

I've split my blog into two pieces. The software-focused blog is 10x Software Development. The more personal blog is Waxing Philosophical.
Seminars           www.Construx.com           Consulting