I have to say that this brave post brought my attention the other day. Well, that is not 100% true: Grady Booch's reaffirmation on Twitter did. And it got me thinking like "hey, one of our best Computer Scientists and Developers ever isn't building his own Web sites, that's interesting". For my own education, I started to dig into more details and facts about Wordpress, and it appears he is not alone.
Today's world runs on code and us, Software Engineers, tend to have a peculiar fetish around tools rather than what can be done with them, as well as an exacerbated sense of pride for the things we have built ourselves. However, creators and people willing to leave their footprint in our digital era exceed those with engineering skills, by far. That's why the Democratization of Software is so important, where more people can build Software (or Apps, or sites) easier and faster by lowering the entry barriers. This is a challenge that requires a significant rethink of how we write code.
In my particular opinion, I think we are leading towards a world where writing code is less and less required. Of course, this is the eternal promise of No Code / Low Code platforms where Software developers can build applications without writing any code and instead use other more visual mechanisms for wiring things up together. While I second this may be where we are heading, I totally disagree with the term No Code / Low Code and I think it is completely misleading: there is still code, but it is not TEXT. The fact that the intentions or behaviors we are trying to transmit are not expressed in a written format using text that does not mean it's not code. We are still coding, we are still translating human desires expressed in human language into something understandable by a computer, even if it is expressed by a higher-order abstraction such as configurations in a more visual editor ... or a conversation with an assistant
For this reason, I like the term Codeless more. Behold, I see you coming: just as there are servers in serverless, there is code in codeless. It's a result of the coevolution of practice that Simon Wardley has been talking about for a long while. Serverless is a new abstraction so Infrastructure Engineers do not have to deal with the nuances of hardware (i.e. switches, cables, interfaces). Codeless is also a higher abstraction so Software Engineers do not have to deal with the complexities of traditional programming languages (i.e syntax, types, imports). In reality, the line between an Infrastructure Engineer and a Software Engineer is gradually getting blurrier, but that's material for another discussion.
Of course, this Democratization of Software does not mean that Software Engineering will become a devalued skill. It's actually the other way around as Pieter Levels mentions in this article:
Up to 95% of the Software of the future will be built following a Codeless approach. Creators will be pulling APIs, components, and applications together from Ecosystems and Marketplaces for building brand new systems.
This leaves a total of 5% of the Software towards complexity with custom high-level engineered code. This is where Software Engineers will play. It's probably going to be a thousand's people game, not a million like today, but highly rewarded because of the custom code.
Serverless technologies are helping to move Infrastructure Engineers' contributions higher in the value chain. It is now easier to include Infrastructure as Code scripting in our DevOps pipelines, something that we have never seen before and it is helping to connect the business with the infrastructure. Complementarily, Codeless will have the same effect and will help developers connect better with the actual needs of the businesses and focus less on the perks of application bootstrapping with the framework of choice. This will help companies (Amazon anyone?) move towards offering solutions in Marketplaces rather than custom integrations in Digital Platforms. Or in other words, making business solutions a commodity
Predicting the future is hard (unless you are a meteorologist) but this is what I see for ourselves in the future: there will be one day when we have Disposable Apps and throwing an application away and starting a new one from scratch will be faster and cheaper than adding a new feature or fixing a bug to an existing application. This is what Codeless will bring to all of us.
The reason behind all this is complexity. The complexity around all the existing programming languages, the complexity around all the current frameworks, the complexity around cloud infrastructure, deployments, and APIs. Why is that to build an application today we need to learn from installing libraries with NPM to setting up Load Balancers for Docker in an AWS platform with Terraform?
There are some technologies out there that are helping us walk this path. Although we may not be there yet (they are very much oriented to build static sites and landing pages) they represent this vision well and they are in the right direction:
Exhibit 1: Weblow. A SaaS application that allows designers and creators to build responsive Web sites without any coding knowledge. Webflow is trying to unleash all the innovation and economic growth trapped behind the code barrier today. The democratization of Software at its finest. Although it's mainly oriented to build Web sites, this looks like the right strategy and the team knows that.
Exhibit 2: StaticKit. I see this as an interim step towards full Codeless, but I still love how it is helping in this disintermediation we are talking about.
Exhibit 3: Dark. I have mixed fillings about this one. One side I think it is really powerful, it has been praised by people like Kent Beck, and it fits well with the Coevolution of Practice that we mentioned above. However, on the flip side, I still see this as a niche technology for the backend only. Who knows.
In my opinion, it's all about the economics of the coevolution of practices. Modern society leaves without stock: no property (Airbnb), no car (Uber), no stable relationship (Tinder), no kitchen (Deliveroo). These consumers will be the executives of tomorrow. They will want the same for their companies and that means serverless, NoOps, automation and codeless. They will have to manage their big companies and organizations like today’s startups. Where every company is a Software company. When everyone can build Software.