This post offers a perspective on the current state of software development, viewed through a historical lens.First, let’s acknowledge something: software development is a complex undertaking. While Function Points might not be the most fashionable unit of measurement today, however you measure size this assertion remains valid: “developing software system with 100,000 Function Points is one of the most complicated projects a human team can undertake” (misquoted from memory from Capers Jones)
For half a century, we’ve been striving to overcome this complexity. And I remain optimistic. I believe we now possess all the necessary components to effectively tackle this challenge and consistently deliver exceptional software. However, a crucial element in this equation is that the problem must be approached with discipline. And that is easier said than done!
The Evolving Ages of Software Development
My perspective on the evolution of software development is shaped by the process improvement thriad: the PEOPLE who develop the software, the PROCESS that organizes their work, and the TOOLS they utilize.
The 1980s and 1990s: The Age of Process
Perhaps starting with Royce’s work, we began to understand software development as a PROCESS. This understanding matured, leading to the development of various process models like CMM-CMMI, SPICE, and ISO standards.
However, for many, these process models became unwieldy. Misinterpretations led to them becoming ends in themselves, rather than the means to achieving better software. The focus shifted from the intended outcome to rigid adherence to often cumbersome frameworks.
The Late 1990s to 2020s: The Age of People
I mark the beginning of this era around OOPSLA 95, where a confluence of ideas that ultimately led to the signing of the Agile Manifesto seems to have come together.
Agile placed a significant emphasis on PEOPLE, and the industry embraced this shift. The early 2000s were a period of significant learning and innovation (also in tools, I immediately think of XJunit and related technologies).
Yet, once again, we failed at the challenge of consistent and correct implementation, underpinned by discipline. Over time, for some, the focus on people waned, and “doing Agile” became synonymous with blindly following specific methodologies like XP, Scrum, or DevOps.
Since 2020: The Age of Tools
The advent of generative AI tools has fundamentally altered our interaction with technology. Their capabilities are truly remarkable. We’ve even heard industry voices suggesting that these tools are so advanced that developers might become obsolete (a sentiment I recall hearing with the rise of Visual Basic in the late 90s- before I started uni -, so I remain sceptical). Reports from Google indicate that a significant portion – around 25% – of their code is now generated by AI.
As in previous ages, the industry is driven by fashion and trends. Vendors are pushing these tools into our IDEs and operating systems. Generating the demand for new products. And of course, it is a thousand time easier to sell a tool than an intangible concept of discipline.
What is really happening? My hunch is that for probably the first time, the synergy of our learnings from the previous ages, combined with the transformative impact of AI tools, is bringing many software development organizations closer to aligning external demand with internal production capacity. And I understand this is unsettling. As I don’t recall observing these before, since I entered the industry, software development has been the CERO unemployment industry. So managers lack prior experience with a system where the bottleneck is outside the front of their organization. However, I anticipate that demand will surge in the near future. As industries learn the use cases for modern technologies, demand will return to software-producing organizations and it will absorb this newfound capacity. And as history has shown with previous “Ages,” tools alone will not be able to solve the problem of delivering large, complex, interconnected software systems.
This “Age of Tools,” too, shall pass. Ultimately, we will emerge in a stronger position to tackle the enduring challenge of developing high-quality software. Having navigated the ages of PROCESS, PEOPLE, and now TOOLS, we will hopefully arrive at a more balanced and mindful center.
Your organization doesn’t need to wait for these trends to fully unfold. Each of the periods I’ve described offered valuable insights. The key is to selectively adopt and apply these lessons within your specific context. Embrace the potential of new AI-powered tools – they offer significant advantages – but don’t expect them to be a silver bullet.
The strategy that consistently delivers results is a balanced approach. This involves empowering your PEOPLE, organizing them with PROCESSES that align with your organizational goals and policies, and supporting them with appropriate training and the TOOLS that fit your technology landscape.
While simple to articulate, implementing this balanced strategy requires consistent discipline and sustained effort. This is precisely where evidence-based coaching can be a game-changer, accelerating your journey towards sustainable productivity gains. I’d be delighted to explore with you how a balanced, mindful approach that respects your unique organizational needs and context can help you consistently deliver quality software that delights your customers and your development teams enjoy building.
Discover more from The Software Coach
Subscribe to get the latest posts sent to your email.