We see two distinct and yet complementary macro-trends driving the way we can improve software development. One could be called “Methods & Tools;” the other could be called “Professionalism & Craftsmanship.” These two trends are not new; they have been around as long as we have built software. Both are based on the fact that it is people who develop programs, rather than methods and tools. But they take different approaches to the problem by focusing on different aspects of software development.
Trend “Methods & Tools,” exemplified by the Semat Initiative, is based on the thesis that the way most of us develop software is immature and in need of being revolutionized. Yes, these are strong words, but the initiative is supported by more than 30 renowned scientists, scholars and practitioners in the software engineering field, including leaders from major industrial corporations (e.g., ABB, Ericsson, Fujitsu, IBM, Samsung, Microsoft, etc), academia (researchers, professors, institutional managers), and thousands of practitioners around the world.
Methods seem to be based quite often on fashion and fads; and there are almost an infinite number of methods that cannot be assessed or compared with each other. The number itself is not a problem. There should be many methods focused on different problems and cultures; however, these methods must be designed in such a way that they can be compared, assessed and improved. Finally, there exists a big barrier between academic research and industrial practices, which must be torn down.
The way forward is based on the observation and understanding that:
Every method is just a composition of practices, either human- or technology-related.
Practices are reusable over many application areas and technologies.
Underneath all practices is a small kernel of universals described and composed by a small kernel language.
Universals are things that we always have, do or produce when building software.
Practices and universals are described by a small Process Kernel Language.
Using this kernel and the language, we can describe all known methods, and, because practices are comparable, methods that are composed from these practices can be compared. The impact of the Semat initiative is that we will streamline the entire software world, from academia to industry, from practitioners to teachers and researchers. We will become better, faster, and cheaper—and even happier—in developing software.
And since after all, it is people who develop software, not methods and tools, we must address the “human” side of software development as well as the technical side.
Trend “Professionalism & Craftsmanship,” is especially popular with the original founders of the agile movement, for instance by Bob Martin (“Uncle Bob”). This trend takes a very different standpoint. From this perspective, the big problem is not the lack of methods or tools, but how we train, educate and mentor programmers to become professional craftsmen. Code can be written by anyone at any time, but what makes us professionals?
We must be proud of what we do. We must be able to say “no” to either the boss or the customer, if necessary. We have our professional practices and these cannot be compromised.
The boss and the client must accept the fact that our work is technical in nature; so let them think we are geeks, but we have ethics and process.
Anything that is worth doing should be done well and with quality. When we ship code, we must know that it works. Acceptance testers should not find any errors.
Become competent through an apprenticeship program. Choose a master and learn from him or her. After some years you may select a new master and also learn from him or her.
Both trends are of course important. We can focus on both, and we can measure both.
Proponents of methods & tools suggest that it is clear that we must constantly improve professionalism. However, it would be much easier to be professional if we can elevate the level of our understanding of methods & tools.
Proponents of professionalism & craftsmanship are concerned that such an elevation means enforcing restrictions, and many are therefore hesitant or reluctant to work with or support initiatives related to methods & tools.
It is clear to us that we must do both. There are adherents to both of these “trends” in the Semat signatory list, so we hope it is clear to many other people as well!
— Ivar Jacobson, Richard Soley