The Future of Software Engineering is Generative
Like most people in tech, and a lot of people outside of tech, I’ve used genAI more and more over the last year and have come to believe that it heralds a major change in software engineering and how we design, build and change solutions & products.
GenAI isn’t a fad
I’ve been a professional engineer for about 18 years, and about 10 of those have been in full time innovation teams. I’ve seen fads and trends come and go, and I’ve seen technologies arrive that have changed everything about how we build things. Blockchain / Web3 was a big distraction for a while but has faded away, Cloud Computing (mainly AWS, serverless) has revolutionised engineering and AR & VR has been a rollercoaster of hype and disillusionment forever.
Generative AI AKA Large Language Models AKA ChatGPT is not a fad – it’s a game changing technology that already and will continue changing software engineering in many different ways.
The most simple example is that I almost never use StackOverflow anymore – the questions and answers site for coding problems. I just use GPT now – it pretty much always gives me a decent answer, I can ask for refinements, and the level of details and explanations it provides gives me a lot more comfort in what I’m doing.
However – I think this is like if someone gave you a car for the first time, and you used it pull a carriage.
GenerativeAI is capable of much more than just helping us code, I believe that it will eventually be able to do most of the building for us.
I recently saw a post on LinkedIn where a MIT study was mentioned – where different teams used either genAI or Google to solve a problem. The team that used ChatGPT did it quickest, but the team that had to search and research with Google understood the solution better. The LinkedIn poster’s point was that it’s important to put in the hard work so you can understand it, but I just thought – why should we need to understand it?
Long before ChatGPT arrived, I’ve wanted to reduce how much I code. I love coding – it’s my main personal hobby – but I hate writing code that I think could be automated away. Cloud engineering has started us on this journey already – I can use CDK and AWS today to spin up a fully secure production react site on S3 & Cloudfront, and honestly I don’t have to understand how it all works. I could mostly explain it to you, but if I needed to explain the in depth details of the networking layers etc, I’d struggle. But why should I understand it all? I remember ordering physical servers for projects 12 years ago, discussing what load balancers we’d need, and then when we could get them installed in the data centres. That seems like madness now!
Likewise, today we’re still repeatedly writing complex code for building normal solutions and I think that is madness aswell.
In May 2023 I wrote this post about how I used Lambda@Edge & DynamoDB to enable dynamic social media meta tags on my website. This was honestly one of my proudest moments as an engineer — I had a real tricky problem that I’d initially no idea how to solve, then I did a ton of Googling and Stack-overflowing, figured it out and then I did it! However — I shouldn’t have had to do that, I should be focusing on the content of my website, not how to get meta tags working in a one page react site.
The future of software engineering
Most enterprise software project teams are as follows:
- Product owner to steer the solution, what it does etc.
- Designers to understand the problems, design interfaces and experiences etc.
- Engineers to build the UI, API, DB, security, testing etc.
- Maybe some data scientists if needed.
I believe that a lot of what the engineers currently do can be automated with genAI and other approaches, and some of the designer work also. We still need to meet real people, understand what they need, ideate on new products and solutions — but when it’s actually time to build something, firing up an IDE and starting to code seems like it’s wasted effort when we can probably build something using genAI to do it for us.
Imagine if we can just say “I want a react app hosted on AWS, using my company’s security standards, connected to a database using an API. The app is to have 4 screens — a home screen where users can login, retrieve and see data from the database … and make sure it all complies with company’s brand guidelines” and it is all just built for us. Then we look at it, and say things like “ok, on the home screen I now want a carousel of images, then I want the pdfs from the database shown in a scrolling …” and it’s done automatically. If then a few weeks later our users want a new feature, they just ask for it — and it’s automatically re-built, tested and deployed.
I believe that this automated solution building is possible — using traditional tech and genAI; and it’s only a matter of time before someone builds a tool to do it.
Democratisation of building
This generative way of building entire solutions could revolutionise how people get things to market. I used to teach a course on app development at a Dublin college to business & marketing students — its purpose was to help those folks with great business ideas but no technical skills. There were so many amazing ideas — from new ways to share fashion, to where to find the best coffee — and very few of the students had enough knowledge to turn them into a reality without finding technical co-founders or paying for it.
Imagine they could just “ask” a LLM to do it — to turn their ideas into concrete working solutions, and let them focus on the important things — marketing, understanding their customers, generating revenue etc. No longer at the mercy of technology when their actual customers don’t care about the technology, just the products themselves.
Does this mean engineers are out of a job?
No — the opposite! What I’m talking about is the things we do today — like hooking up APIs, figuring out the CSS to style on-screen components, working out how to add a tutorial overlay the first time users hit a screen — a lot of that can be automated away. Let’s focus on the more interesting bits of building solutions — are we building the right thing, how quickly can we iterate and pivot, what do users like and not like about the product?
A genAI tool capable of building complete solutions isn’t a threat — it’s a beautiful opportunity to supercharge your development process, an intelligent assistant to help you go faster and do more.
Engineers aren’t just coders anyway — I have believed for years, long before the recent genAI explosion, that engineers are so much more than just folks who commit code into GitHub. A good engineer is just as comfortable running an ideation workshop with their users as they are logging into AWS to check the Cloudwatch logs; engineering is about solving problems and creating solutions in the most creative and efficient manner. And what’s more efficient than getting another more complex solution (genAI) to do the heavy lifting in the coding?
The team structure I laid out above:
- Product owner to steer the solution, what it does etc.
- Designers to understand the problems, design interfaces and experiences etc.
- Engineers to build the UI, API, DB, security, testing etc.
- Maybe some data scientists if needed.
could be more like:
Engineers who are experts in product, design and coding.
- and still maybe some data scientists if needed!
And don’t forget — who builds these amazing genAI tools?
Don’t forget we need engineers to build these amazing genAI tools!
Though of course, once we have tools capable of doing what I’m describing, we could use them to automatically build better tools capable of doing even more …