loading...

Is Software Engineering moving towards a Codeless world?

peibolsang profile image Pablo Bermejo ・5 min read

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.

Towards better connection with business

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

Baby Steps towards Codeless

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.

Conclusion

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.

Discussion

pic
Editor guide
Collapse
martinhaeusler profile image
Martin Häusler

No, programmers will never become obsolete.

This isn't the first time this discussion comes up. Around the year 2000, Model-Driven Architecture (MDA) was in its heyday. The idea? Let's create a detailed UML model of our application, run it through a generator and receive the runnable app. No programmers needed anymore. It really got a lot of hype and attention, and it did look promising.

So what happened? Shitty tooling and technical issues aside, there was one crucial problem. The automated generation of a full app without coding required a very detailled input model. So detailed that business people couldn't do it by themselves. Experts were required for handling those properly. Sounds familiar? Yeah, we call those people programmers...

Nowadays it's not called MDA anymore, now it's "low code" or some other buzz phrase. Don't fall for it. Those approaches are doomed to fail for the very same reason MDA failed. Any specification, no matter if it is textual or graphical, which is detailed enough to generate the code of a full application from it, effectively IS code.

Collapse
daniel13rady profile image
Daniel Brady

No, programmers will never become obsolete.

I 💯 agree, and perhaps so does the author. But that isn't the topic of discussion here: the author is questioning the nature of our work, not its value.

Any specification, no matter if it is textual or graphical, which is detailed enough to generate the code of a full application from it, effectively IS code.

I think the author agrees with you there, too 😄

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.

Collapse
peibolsang profile image
Pablo Bermejo Author

Absolutely. Although my last sentence is intentionally provoking, that's the point.

Too many people think the hard part of software development is writing code. So if you get rid of the "writing code" part, anyone can do it.

The hard part is the thinking that goes along with writing code, and the thinking doesn't go away when you get rid of the "TEXT"

It's always good when we get software-development tools that are better than writing code. But they are software-development tools, and you will want good software developers using them.

In the coming years, we'll se like us, Software Engineers, have new tools at hand to build (not write!) software

Collapse
fioribazarello profile image
Fiori Bazarello

Good discussion, Pablo! Please, let me share my opinion:

I believe codeless can be the future and the process of development can be easier, but I would not say everybody can be a software engineer or even that everybody can build software (Or, at least, good software), because there is some things in our area that are not related to code, like design patterns, for example. But the knowledge of concepts will be more important than the knowledge of code, this is for sure.

Collapse
dexygen profile image
George Jempty

No it's not. Software engineers are elite professionals like lawyers and physicians, and they're not going anywhere. It's been attempted for decades by the way.

Collapse
gayatriganeshan87 profile image
gayatriganeshan87

What if a Software Engineer who has around 5 Years of Development and Support experience has been hired as Full Stack developer but is given Low Code work. I am in such situation now and I am actually not liking this Low code Platform. The development or even Support platform was interesting and challenging but Low code platform doesn't seem to be that challenging or interesting to me. May be Low code platform may provide to good easy to use features but these Products development itself needs skilled developers right. So I feel software engineering is the heart for any such Low code platforms as well. I really want to get into Engineering but as you mentioned everything is moving towards low code so thats what is happening. Even skilled Software engineers are or will be forced to get into Low code platforms which may not be utilizing their skills to the best.