Radical change
I like the talk “The Future of Programming”, given by Bret Victor (view at vimeo or at youtube). Since I first saw it, several years ago now, it resonated with me. The setup, the clothing, the layout and typography of the sheets, the pencils in the pocket of his shirt, it all just made sense. Even his overall theme to learn from the past, break with the status quo and try some new radical ideas did feel just right. But, ignoring the examples chosen in the talk, is a radical change possible?
In this relative short digital era we’ve seen develop several paradigms: different programming paradigms, software development paradigms and a lot of different methodologies. In each category just one, and sometimes a few paradigms prevailed. But looking at them you see them building upon earlier knowledge. One could say as programming paradigm the procedural and object-oriented paradigms prevailed, however the functional paradigm is making a re-entrance for a few years already. In software development, Agile is the prevailing paradigm building upon the Incremental paradigm, the Spiral paradigm and others. Finally, it looks like Scrum is the ‘winning’ methodology, essentially compressing the DSDM and RUP methodologies. Apparently we do learn from the past.
So the next question is, can we reasonably expect a radical change? I don’t think so. Looking at historical inventions in more detail learns us that most inventions were iterations of small steps. With few exceptions like peniciline. But these were mostly accidents and lucky shots. In IT one would argue we have several disruptive inventions ongoing. One, cloud computing. However, this is (yes I know, at a very high abstraction) a re-iteration and vast improvement of centralized computing. And with Apple moving to edge computing this wave may already have ended, or at least be more foggy. Two, Artificial Intelligence. These are not radical changes in my view. The current state of AI is heavily building upon previous knowledge. It’s just accelerating.
But, why is it accelerating? In my opinion it is because the tooling, methodologies and frameworks are pushing each other forward. They are demanding changes and enabling possibilities from each other. During the 90s several lightweight software development methods evolved, like DSDM, Scrum and XP. These methods advocate Continuous Integration. To avoid breaking other developers changes and stall the development this (among other reasons) calls for TDD. In 2001 this culminated into the Manifesto for Agile Software Development. Not long after this AWS was outlined, followed by Microsoft Azure and Google Cloud Platform. In addition, Continuous Delivery and Docker appeared on the scene. Together with (the rediscovery of SOA as) Microservices this required an increase of automated deployments and production scaling—provisioned by Jenkins, Ansible, and Kubernetes.
Apparently different areas reinforce each other to accelerate innovations, taking ‘historical’ knowledge into account. In my opinion this is still not a radical change—it’s an incremental change. What we do see from these examples is that we should break out our bubble. As discussed in my previous blogpost, innovations occur when several disciplines reinforce each other.
Reflecting back on the original question—is radical change possible? I’d argue yes, but we shouldn’t look back to past paradigms. We should expand our view, learn from other disciplines and above all take advantage of the possibilities these other disciplines provide. Just like these disciplines do with the possibilities of IT.