Mission statement
Seven months ago, for some reason or other, I wrote a mission statement for my weblog. Here it is:
Software projects are seldom successful—at least if the definition of a successful project is that it is completed on time, within budget, and that it delivers the features that its stakeholders want. Finding out what they want is in itself a huge challenge—and if you add to that a deadline, and a budget, you have what seems to be an insurmountable task.
Much effort is put into trying to understand what makes a successful software project. Some people believe the solution lies in a disciplinary approach with discrete phases, where the system to be developed is carefully planned, after a thorough initial analysis; then the plans are signed off by the stakeholders, and the system is built according to those plans.
Others mean that such an approach resists change, and that since change is the only constant, it has to be acknowledged; they believe that the surest way to know that you are developing the right system, is to build it and see whether the stakeholders like it. Thus, they are advocates of an adaptive approach, where the system is developed incrementally, guided by continuous feedback from the stakeholders and users.
Why do we, when we face challenges, seem to gravitate toward the disciplinary and rationalistic approaches, focusing on one thing at a time, one after another? Isn’t software development essentially a creative activity, based on experimentation and exploration—that is, isn’t it nonlinear in its nature and thus incompatible with a disciplinary approach? Then, can we really expect to gain full control over software projects, committing to a particular scope, timeframe, and cost? This is what I intend to explore in this weblog.