The topic of AI in the area of software engineering is quite controversial. People seem to have taken sides on this issue, often times these are at one of two extremes:
Extreme 1: Software Engineering is dead. AI powered by increasingly powerful LLMs will replace all software engineers.
Extreme 2: LLMs are just token predictors, these tools don’t understand the context of your application nor do they create clean maintainable code. As such this is just another fad like the promise of no-code a few years ago.
There are compelling cases to be made for either of these extremes. However, I think the truth is definitely somewhere in the middle.
The “AI arms race” is heating up
There is absolutely no shortage of announcements today in the space of code writing LLMs & SaaS applications that leverage AI to write code. The most recent one as of this writing (13 March) is Devin from Cognition. Devin promises to provide complete code, end to end, and even claims to solve 14% of GitHub issues assigned to it all by itself. It’s incredible. Here's a tool that is now laying claim to a very lofty goal - that it can probably already replace junior engineers today.
Apart from this, there are various other releases in the world of AI, from Claude Opus being a fantastic code companion, to Cursor’s AI first IDE (my personal favorite), to GPTs in the ChatGPT store that really do provide fantastic value for developers.
But there’s a catch
And that catch is - LLMs & AI apps still do need human hand holding. The design & the specifications of the software applications that any AI is providing today, is still necessarily a task to be done by humans. Why? Because developing software is messy, and the actual task of writing code is only one part of the entire process. So providing a “2 line prompt for creating an app” might give you a very early and (barely) functioning prototype, but that’s about it. The application then needs to go through multiple cycles with the end users, multiple rounds of redesign and redevelopment. And eventually, a competent software engineer will have to get their hands dirty and get into the deep end of the code that these tools are churning out. I love this snippet that I’ve saved from the book “Clean Code”. The book is more than 15 years old but some of this wisdom is timeless
Which brings me to the (un?)happy medium - the AI Augmented Software Engineer
The happy medium I'm alluding to is where the potential of AI in software engineering truly shines. This is about combining the best of both worlds. The AI-Augmented Software Engineer where the next generation of software engineering is heading.
Can we define it? It’s very hard to do in this dynamic landscape, but I’ll give it a shot:
“The AI Augmented software engineer is someone who adeptly blends the speed and efficiency of AI tools with a deep understanding of software engineering principles. They use AI to automate the mundane, accelerate development cycles, and bring innovation at a pace previously unimaginable. Yet, they also know that AI is a tool, not a crutch. It's something that enhances their skills, not replaces them. This engineer values the precision of well-crafted code, understands the architecture deeply, and ensures that the AI-generated code fits seamlessly into the broader system, maintaining clarity, maintainability, and scalability.”
My guess is that AI Augmented Software engineers will have massive demand over the next 1-3 years. These are the folks that embrace the power of this AI technology while still developing software with a first principles approach. This in my opinion is where the next batch of 10x Engineers will come from. If you’re a software engineer, new or experienced, you absolutely MUST embrace these tools to enhance your skills and productivity. Not doing so is a recipe for stagnation.
My Final conclusion: A call to action for software engineers and software teams
The message is clear: the resistance to AI integration in your software engineering processes is a massive roadblock to progress. Clinging to outdated notions of software development in an AI-accelerated world is a recipe for stagnation. It's time for software teams to foster environments where AI-augmented engineers thrive, blending AI's computational prowess with human ingenuity. Some of the things all software engineers & teams can do is as follows:
Foster AI Fluency: Cultivate a culture where understanding and utilizing AI tools is as fundamental as coding itself.
Encourage Continuous Learning: Promote ongoing education in both AI advancements and core software engineering practices.
Innovate Fearlessly: Use AI to push boundaries, encouraging teams to explore AI-driven solutions without fear of diminishing their roles.
Embrace Agile Evolution: Adapt to the rapid pace of AI development, ensuring your teams and technologies remain at the industry's cutting edge.
At Newtuple, we’ve mandated the use of AI tools for a lot of our software engineering work. Everyone in the team gets paid accounts to the best tools available, and are also free to choose their own tools. For example some of us love using Cursor, while others like the flexibility of Cursor + ChatGPT Plus, and some others will use VSCode plugins. The constant for everyone is to make use of AI in their development processes. It’s an evolving landscape and it’s best to be flexible today.
コメント