Flylib.com

Books Software

 
 
 

Section 1.3. Dirty Secrets of Software Projects


1.3. Dirty Secrets of Software Projects

Software projects can fail for many reasons, and one of them is a bad development environment. Here is an informal list of some frustrations and embarrassing mistakes commonly made in producing software. None of these have anything to do with failures caused by things like missing specifications, specifications changing over time (the dreaded "feature creep"), poor estimates of how long a project will take, or even whether the problem being solved is a really difficult one. Each of these problems is due to the tools or processes of the environment in which the software was produced:

  • We can't rebuild the same product that we shipped to the customer, so we'll ship her the latest version, just to be safe.

  • Building from scratch (also known as a clean build ) each time is often the only way to get the product to build reliably. This takes so long that the developer goes off and does something else. Consequently, every developer thinks that his build tool is too slow.

  • Testers, technical writers, and managers can't build the latest version of the product. Even if it has already been built for them by someone else, it's unclear where to find the latest version.

  • Fixes for known bugs are not released, because it's too hard to properly test the required changes and they may break other parts of the product.

  • Everyone finds the bug tracking tool awkward to use.

  • The environment used by developers and the one in which the product is used by customers are different in some important ways, so the developers never actually see problems the same way that a customer does.

  • Getting a product ready to release takes so long that any late-arriving changes don't get tested or documented.

  • The wrong set of bits gets shipped to the customer. This one should make anyone involved in developing software wince, but it does happen.

  • Nobody knows when to remove a feature from a product, because no one knows whether the feature is actually being used.

  • Communication between groups happens by reading printouts left at the printer nearest to the coffee machine.

Sadly, the list could go on and on. Its contents are obviously subjective , but each entry has happened in real projects. The good news is that none of these Dirty Secrets are inevitable and they can all be eliminated with careful attention to the development environment. The promise of this book is that you can stop these kinds of embarrassments from happening to your project.



1.4. What Does "Practical" Mean?

What makes something practical? The title of this book strongly suggests that its contents are about practical solutions to common problems in development environments. Here is what practical means for the tools used in development environments:

  • Available (whether open or closed source)

  • Appropriately priced (for open software, this often means no cost)

  • Usableinstallation and configuration to match the local development process is possible, the tool doesn't crash regularly, there aren't too many bugs , and documentation is adequate

  • Can eventually produce software for the platforms used by the customer

On the other hand, impractical tools for development environments are those that are:

  • Deadno longer sold or supported

  • Too expensive to even consider spending any time evaluating

  • Tortuous to get working or configured as needed, or impossible to maintain and upgrade

Abstract frameworks, conceptual models, and design patterns are all useful for categorizing solutions to problems encountered in development environments, but the aim of this book is to provide ideas that are more practical. The basic areas of projects that are summarized in the next chapter are ideas that are applicable to all software projects, whatever the product's purpose is and whoever the customers are.