The idea of a journey is all very Zen, but we feel that it describes the fact that most engineers view self-improvement as a large motivational factor. The overall destination may be to build the perfect software and to be loved and admired by our peers. Along the way we have smaller destinations ”finish a project, learn a new software tool, improve our productivity, and reduce stress levels. We also like the idea of having fellow travelers. Another important consideration we would like to emphasize is that we are still on our journey, and "perfect" is a very elusive destination, so any help from our fellow travelers would be greatly appreciated.
A project is like a journey as well; some projects can be akin to traveling uphill in mud! Successful projects have a clear destination, a carefully planned route, a map, a compass, and recognizable milestones along the way. Unsuccessful projects have no destination, an unclear destination, or a destination that moves faster than you do. Unsuccessful projects also have inadequate and inaccurate directions or, in the worst case, no directions at all.
This chapter will put meat on the bones of the previous chapters by applying what we've been discussing to an example project. We'll take our project from the very start and discuss along the way the common issues encountered . We'll demonstrate how to apply the techniques discussed in the preceding chapters. Along the way we'll highlight the areas where projects often go bad and discuss why. The demonstration software used in this chapter could be used as a pattern for your own project. We've certainly used it for ours.
Most projects start with an inquiry and an initial meeting to discuss your customers' requirements. Even if you are working internally within a company it doesn't exclude you from having customers such as your manager or the end user , for example.