For many years I have written postcards to those of you who have subscribed to them on our web sites. I will discontinue writing the postcards, but instead talk about the many different aspects on software development on this blog. And I am not the only one who will write for you. I am so lucky because I am surrounded by world-class experts coming from around the world. These people will publish notes here. Thus, you will here from Kurt Bittner, Ian Spence, Svante Lidman, Pan Wei Ng and several other people. I will introduce them as they come forward.We will use this blog to talk about our visions and our results.
I like to dream about the future, but I also would like to reach that future at some point in time. I believe that when it comes to software, dreams only come true if the dreamer drives the realization of the dream. Too many people have dreams. Very few actually have the guts to make their dreams a reality.
In 1992 I wrote an editorial in IEEE Software that started like this: “We all have dreams. Just a little over 25 years ago, I had a dream. I dreamed that the technology known today as "object- oriented" could be used to design telecommunications systems. I dreamed that this technology would be generalized and given a wealth of wholly different applications. I dreamed that the computer scientists who - in those days - ridiculed this technology and saw it as a dead-end street would one day accept it. I dreamed that this technology would in time become an indispensible element in the mainstream of computer science.”
In my summary I wrote: “Our long-term goal (which I hope we can achieve within another 25-year period) is to become as industrial in our handling of computer techniques as engineers are within their various disciplines. This requires, among other things, development of the architecture in large- scale object-oriented systems; it requires that the development process support project management as well as product management; and it requires that we find other, more sophisticated languages - specification languages as well as programming languages - compared with those we have today.”
Now 15 years after I wrote this article, it is interesting to see how far we have gotten. We have got UML which is a standard modeling language for software development. Before UML we had lots of different notations with almost no semantics. UML basically took all of these notations out of the picture and replaced them with one single notation with reasonable well-defined semantics. It is not perfect but it is practical. It is being applied around the world for all kinds of software and for all kinds of models including business, requirements, architecture, analysis and design.
When it comes to process and methodology, we have also made substantial progress. When I wrote the IEEE article there were more than 26 published methods identified by the OMG (Object Management Group). The most successful one of these methods (and tragically basically the only one that really survived) was Objectory which became the Unified Process.
In parallel with the success of the Unified Process, new kinds of methods have come into play. The most successful of these other methods are labeled agile. However, the meaning of agile has been confused by its proponents. What really is unique about agile is that it cares about people. Thus it is about social engineering. No process has ever developed software. Only people develop software. They may get help by tools. They may get advices from process or methodology, but eventually we must make our people motivated and competent. Nothing is as effective in getting software quickly and at low cost as having motivated and competent people.
Given that no methodology has everything you need, and even if it has most of what you need, it won’t be the methodology you want to use in ten years time. New ideas and new technologies will come into play. These will come from individuals and companies throughout the world. If you try to extend your methodology with these ideas, it will grow until it collapses under its own weight. Instead of publishing branded complete processes or methodologies we should focus our skills on single practices. Usually a methodologist is good on one or a few practices, but not on all practices that a team needs when developing software.
Now it is time to formulate one of my new dreams. My dream is that great people around the world will contribute their best practices to the world maybe in the form of a community. These practices can be of different kinds. They can be technical such as those from the Unified Process camp, or they can be social engineering practices from the Agile camp. A team can then select from these practices and compose the selected practices into a way of working that helps the team develop good software, quickly and at low cost. This is my dream. Now, we are not just dreaming. We have come a long way in realizing this dream. We have developed a practice platform EssWork where you can find a whole set of practices, you can author your own practices and you can select the practices you like and compose them. There is still a lot to be done before we are finished, but with your help the dream will come true.