Software engineers have effectively been on a path of self-erasure from day one. Once upon a time, they noblely set forth into this world to lead the charge on innovation and champion human progress. Time and time again, they built programs that helped us automate the menial tasks no human would want to do, or often even could do. Now, sixty years later, they find themselves staring down the barrel of Copilot and ChatGPT and are realizing they may actually have just been architecting their own demise this entire time.
Ironically, they don’t seem too upset about it. A sense of existential dread seems to be creeping up on professionals across every other industry, but for now, the engineers actually seem to be reveling in their ability to automate themselves away. After all, actually insinuating that AI will catalyze the imminent extinction of their entire profession is a bit melodramatic of us, and devs seem to understand this. Just like the next cover of Vogue will not be produced by telling Midjourney to imagine a pretty lady in pretty clothing, the next iteration of applications like Netflix or Uber will not come out of a one line prompt to GPT. What does remain a very likely and near term reality, however, is AI leading to a massive transformation of the normal software development process and the rate at which engineers are able to work.
What’s already happened: Copilot and ChatGPT
The impact AI is already having on software development is undeniable. Estimates on the amount of code written by AI are nearing 50% and only continuing to rise. Studies are showing that 90%+ of developers are already using AI coding tools on the job. The staggering adoption rates make the utility of AI in the development process clear, and you might even go as far as to say it is actually making the job more fun.
You’ll hear time and time again that engineers just want to spend more time coding. But, that doesn’t mean they just want to be staring at their screens menially typing away at something. What they crave is that famous developer ~flow~, and AI has proven the ability to give them more of it. Rather than feeling like they are being replaced by AI, they find the tedium of the job reduced and the creativity of the coding process revived. Instead of switching between your IDE and Stackoverflow in your browser five times to figure out how to get from a string to an int in that language you haven’t used in three years, you can now just hit tab a few times. Ask any engineer who uses an autocomplete tool regularly if they have ever turned it off – it feels like you’ve had one of your hands cut off. Staring back at your own incompetence without autocomplete these days is a disturbing exercise.
While autocomplete dominates popular imagination of what AI dev tools look like today, it isn’t the only piece of AI becoming integrated into developers’ daily lives. ChatGPT, and chat assisted programming more broadly, have become a regular part of developers’ workflows. LLMs have proven extremely effective for unpacking error messages and debugging, suggesting code improvements, explaining code, etc. There are now even several ways to get chat capabilities integrated directly into your IDE, giving the models the ability to ingest the full context of the error or issue in question.
Chatbots’ coding capabilities don’t stop there. Looking at what ChatGPT is capable of, we wouldn’t be surprised if someone questioned our earlier claim that it won’t be prompted into creating Netflix 2.0 anytime soon. To be abundantly clear, we are well aware that for certain tasks, ChatGPT is capable of producing a fully functional application with a little back and forth from the user. However, getting something from nothing or quickly scraping together an MVP is not the same as rebuilding Netflix. Most modern enterprise applications consist of thousands of microservices coupled with laboriously designed, granular frontends. They adhere to incredibly complex design standards and architectural decisions that cross organizational teams pore over for what can literally be months or years before shipping to production. The limitation on rebuilding something that complex in ChatGPT is more likely to be the upper bound on the lifespan of humans than the capabilities of the model, because anyone that tried to write a prompt that long would literally be dead by the time they finished.
The future of AI in software development is not about replacing the engineer in one fell swoop. It’s about improving these models’ abilities to understand the intention of the engineer to get them where they were already going faster.
What’s happening: AI enabled software development 2.0
Even though creating Netflix in a day is probably off the table, AI is still well on its way to go beyond just autocomplete and disambiguating error messages. As GitHub’s CEO, Thomas Dohmke put it, pretty soon, “the skills of the developer will be to figure out, ‘How small do I have to go until I can leverage AI to synthesize that code for me?’” AI is well on its way to meeting the developer halfway. Tools like Copilot, TabNine, and Replit’s Ghostwriter, got us to a line (or a few lines) of code being a viable unit for AI synthesis. While startups like CodeComplete, Codeium, etc. are looking to continue moving the needle here, an exciting wave of new tools are now taking us to AI development 2.0 by biting off even more.
There are clear opportunities for AI to improve workflows across the entire software development lifecycle. Uncoincidentally, it seems like some of the most popular places companies are looking to tackle next are the parts of development that engineers hate the most. Afterall, developers have always gladly paid to outsource the work they don’t like. Thus, rather than trying to replace the senior engineer that edits ten files at once in Vim before you can blink, one of the best roles for AI today might look more like “software janitor.” For example, handling tasks like:
- Unit testing – the job you give to your intern
- Code review – the job you have to ask your coworker to do 10 times
- Your backlog – the job that no one will ever actually do
- Migrations and refactoring – the job you literally hire another company to do for you
- QA – the skinniest bottleneck there ever was
While these are use cases surrounding the integrity and maintenance of your code as part of the “release” and “manage” process of the software lifecycle, there are also the players trying to move the needle by taking a more general approach earlier in the development process. Companies like Cursor and CodeStory are trying to reinvent the IDE to create something that is conducive to a more AI native development experience. Others are going after the holy grail – startups like Poolside, Magic, Factory, etc. are looking to take us from AI-assisted development to AI-led development.
As models become increasingly capable overtime, their ability to handle more tasks out of the box will continue to improve, and it is likely that the lines between these solution spaces will blur. Across the lifecycle of develop, release, and manage, we are already seeing companies expand past their initial wedge and into adjacent domains. The Codiums and qqbots of the world that started unit testing are quickly getting into PRs, and the PR assistants like Codegen are getting into your backlog. Before long, the autocomplete tools will likely try to sweep up some of the software janitor work too. The density of competition in the space is undeniable, and the pressure comes not just from startups – the not-so-incumbent-like incumbents like Replit and Copilot are trying to eat everyone else’s lunch too.
However, it is important to note that the quality of a developer tool will never be determined exclusively by the capabilities of the underlying technology (i.e. the model). Building a successful product for developers is contingent on prioritizing user experience and effectively integrating with their existing workflows. Moreover, companies building in this space will have to adapt to accommodate for the fact that the introduction of AI will likely change the actual software development workflow itself, and as a result, change the needs and expectations of developers using these tools. What will the software life cycle look like when AI and engineers are working side by side? How will the expectations for testing and reviewing AI generated code differ from those of human generated code? How much responsibility can we comfortably entrust AI with in the near term?
Many of these questions begin to get at the primary concern surrounding the adoption of AI in the software development process. While AI may feel like steroids for developers, the remaining limiting factor is, and should be, the requirement that AI is adopted into software development safely.
The risks of programming with AI
We’ll try to keep this short. After all, there is nothing more annoying than getting a new toy just to have some adult lecture you on being careful. But yes, engineers beginning to operate at 10x speed comes with all the risks you probably think it would. AI generated code does not necessarily mean top tier code. It might not even mean good code, and it could very well mean bad code (recent studies on this show valid cause for concern).
- Bad (and potentially unsafe) code – Most of these models have ingested the good, the bad, and the ugly of the internet. That means they are capable of spitting any of that right back into your codebase in all of its potentially non-performant, outdated, vulnerability riddled, and unaligned with company standards glory. Just because the fancy new AI in your CLI figures out that
sudo chmod -R 777will be the path of least resistance for fixing your permissions error does not mean you should execute it.
- Untested code – Maintaining test coverage standards if you suddenly begin to ship at lightspeed might get tricky. But in a world where you aren’t even writing all of your code yourself anymore, you better be sure it works how you think it should.
- Technical debt – An increased rate of shiny new code inevitably means an increased rate of accumulated junk code down the line. Everyone knows that cleaning up your old stuff is never as fun as eyeling something new.
- Poor visibility and understanding – The continued improvement of these models will come with an increase in the scope and complexity of the code they generate. As a result, understanding the underlying logic of AI generated code will become an increasingly daunting task. But just like copying your friend’s homework is a great idea until you’re sitting down for the test, slapping unreviewed AI output into your codebase will probably stop feeling like a shortcut when it comes time to change or debug it.
Having said all that, none of these concerns should preclude the use of AI developer tools. More than anything, they should act to reinforce the same best practices of software development that have always been there – review your code, ensure the safety of your code, test your code, know what’s going on in your code, etc.
And if it wasn’t already obvious, the most ironic part of it all might just be that many of the AI enabled tools coming out now are meant to help you do all of that too.
What does this all mean? An adapt or die moment
Ultimately, it’s not that complicated. Productive developers = productive businesses. There is a reason the companies at the top of the mountain in Silicon Valley (yeah, yeah, an oxymoron) are known for pouring inordinate amounts of money into making their engineers more productive. And now that AI is presenting us with what could potentially be the biggest step change in developer productivity to date, you can expect that they will be doing whatever they can to make sure they aren’t missing out.
That also means that any other company building a software-dependent product is likely going to find itself at an adapt or die moment. AI dev tools are on the path to make engineers magnitudes more productive. But “magnitudes” should not have to be the point at which you decide to look up. Even a 10, 15, 20% productivity gain can make a world of difference. For an early startup, that might be the difference between beating your competitor to be first to market or what determines whether or not you can outpace an incumbent.
So, if you are a founder building in the AI dev tools space, good for you. It’s a good bet that if your stuff works people are going to pay you for it. A lot. And since any VC blog post wouldn’t be complete without a shameless plug, reach out to us (email@example.com) because as an investor, I would love nothing more than to support you and live vicariously through your success.
As self aware individuals, we can admit that it has become a VC rite of passage over the past year to have a regular crisis between (a) your confidence that AI will disrupt everything and (b) some sort of holier-than-thou sense of disillusionment with overblown AI hype. But, waffling over what disruption will look like and when it will happen often ends when you realize the explosive adoption of the new tech in the markets where it hits its stride. For software development, the quality of the underlying models, the eagerness of the adopters, and the willingness to pay have created a trifecta that is setting AI up to have its moment in the sun.