“Are they developers or donkeys?” This rhetorical question, posed to me by one of the technology leaders in a small software firm, pretty much sums up the years-in-the-making mood in the software development world.
Large software vendors to a great extent, and outsourcing providers to a certain extent, are the culprits who have reduced software development to a mechanical job in which developers require more hands than brains. The argument for doing this is the quintessential pursuit of making software development an “engineering” process where things are repeatable, driven by statistics and mathematical rigor rather than creativity.
Advocates of this philosophy believe it is too risky and dangerous to rely on “whimsical coders” to run an organization, and instead require coders who follow processes, structures, and methods. They also purport this approach enables them to “create” many more software developers than if they relied solely rely on “creative developers.” This belief set has resulted into a parallel multi-billion industry of certifications, training, and coaching.
Some of the critics of this approach allege that large software vendors make their developers “robots” to meet their financial and time-to-market commitments. Recognizing this, Pete McBreen’s 2001 book Software Craftsmanship set the ball rolling and questioned this fundamental assumption that making software development an “engineering” process was more valuable than enhancing the craft of the developers. In the same year, The Agile Manifesto also questioned some of the concepts of software engineering and extolled the quality of software developers and their collaboration over tools, processes, and documentation.
Nothing meaningfully changed. As software continued to be used for business efficiency instead of growth, the software development world chose following structure, tools, and frameworks over developers’ fundamental capability to create something meaningful.
However, with digital transformation and the increasing adoption of software across businesses, the value an organization can derive by becoming a “software organization” is many-fold. Software is not only a support for business… in many cases, it has become the business itself. It is the most essential component of both the modern organization and traditional company.
The critical nature of software will push the demand for craftsmanship in software development beyond existing structures and frameworks. Organizations have started to realize that as the impact of software expands to revenue generation and customer delight, they will have limited competitive advantage if all software is made in just one way using the same set of tools and processes. Software built by creative developers is what will drive competitive advantage. And despite the growing adoption of standard packages for back-end operations, most organizations continue to rely on, and will possibly increase adoption of, custom software for client-related activities.
We all understand and appreciate that such drastic change will come in small steps, and the significant required changes may possibly kill some of existing organizations. However, I believe craftsmanship must return in software development to make it an intriguing and interesting field that goes beyond rote copy paste of code to meet some random deadlines.
Of course, not all software will be developed in this manner, and the industry will always require pieces made through structured development. In fact, these may be far more prevalent than “crafted” software. However, technology companies, enterprises with large IT pools, and IT service providers that are unable to realize the importance of making their developers think on feet, and instead dumb them down to achieve self-assigned financial and client objectives, will risk not only losing talent but also market relevance.