Back in 2019, after deciding to leave Beat, I was contemplating starting a new project. It was an ML-based project, informed by my experience at both smaller and larger companies, like Beat: An ML-based Code Reviewer. The idea was that smaller companies, founders aside, seldom have senior engineering talent on board, and the quality of the first few iterations of the product is low. Similarly, in larger companies, the few truly senior engineers expend a disproportionate amount of their time on code reviews, which is a waste of their time. The idea was to build a tool that would help both types of companies.
Assembling a competent team to complement my skills was hard, the Netdata offer came fast and the project was relegated to the backburner. A few months later, Amazon came out with CodeGuru, which is a very similar product. I knew that Amazon, Microsoft Research and others were working on similar technology, and while disappointed, I was also happy that I was on the right track, but also that I didn’t spend time building it, as I would have probably been crushed by Big Tech.
Fast forward a few years later, and the advent of code-trained LLMs has made the original idea obsolete. The idea was to use ML to help engineers write better code, but now we can use ML to write code for us. In a way, the need for code reviews is higher than ever, but the need for someone to write the code is lower than ever.
These past several days I spent quite a bit of time prototyping some new ideas. I used both GPT4 and GitHub’s Copilot, as integrated in VS.Code. The former provided rich and very helpful pointers, deep knowledge as well as initial code for many parts of my prototypes, while the latter repeatedly helped me Tab-away boilerplate code, making the process of building much more satisfying and fast. I was able to build a prototype of a new product in a few days, that would certainly have taken me weeks or months to build.
In a few years, we may be able to build complete platforms from mere high level specifications, a return to the days of bespoke software applications, but with the speed and scale of modern software engineering.
And while we’re not yet anywhere close to having a computer automatically generate the software we want for us, we are very close to having very small teams of engineers build very complex, full-featured, well-tested, production-grade software in a fraction of the time it would have taken a much larger team a few years ago.
This is a very exciting time to be a software engineer.
P.S.: I found this article on the New Yorker quite interesting and somewhat related to this post.