Skip to content

Reminders

Ziang Lu edited this page Aug 16, 2018 · 1 revision

Welcome to the Software-Development-and-Design wiki!

Classic Mistakes in Software Development [Applicable for Me]

on Best Practices Column in IEEE Software by Steve McConnell

1. Undermined Motivation

Study after study has found that motivation probably has a larger impact on productivity and quality than any other factor. However, motivation is a soft factor: it's difficult to quantify, and it often takes a back seat to other factors that might be less important but are easier to measure. Thus, many common management practices are penny-wise and pound-foolish, trading huge losses in motivation and morale for minor methodology improvements or dubious budget savings.

2. Abandoning Planning under Pressure

Without a coherent plan, projects tend to fall into a chaotic code-and-fix mode, which ios probably the least effective development approach for all but the smallest projects.

3. Shortchanging Upstream Activities

Projects that are in a hurry try to cut out nonessential activities, and since requirement analysis and architecture design don't directly produce code, they are easy targets for the schedule ax. This is also known as "jumping into coding". Time is wasted implementing hascks, which later have to be thrown out and redeveloped with more care. Projects that skimp on upstream activities typically have to do the same work downstream at anywhere from 10 to 100 times the cost of doint it earlier.

4. Silver-Bullet Syndrome

Silver-bullet syndrome occurs whenever managers or developers expect any single new tool or methodology to solve all their productivity problems. Silver bullet tools and methodologies damage projects in two ways:

  • New tools or methodologies virtually never deliver improvements as dramatic as promised.

  • Belief in silver bullets leads to serialization of improvements that could be made in parallel.

    Because managers or developers put all their faith into one single silver bullet, they try promising new tools and methods one at a time, rather than two or more at a time, which slows the adoption of potentially beneficial new tolls and methods other than the silver bullet.

5. Adding Developers to a Late Project

Generally, when a project is behind schedule, new people substract more productivity from existing staff than they add through their own work.

6. Shortchanging Quality Assurance to Improve Development Speed

Short-cutting a day of QA activity early in the project is likely to add 3 to 10 days of unnecessary activity downstream.

7. Insufficient User Input

Projects without early end-user involvement increase the risk of misunderstanding the project's requirements and are especially vulnerable to time-consuming requirements creep (需求蠕变).