I’ve felt privileged to live in what historians will call the “Information Revolution.” The last year has felt even more incredible with the release of ChatGPT, the emergence of LLMs, and the accessibility of AI tools. There are a few technologies in my career that were watershed moments for me as a coder - things that have changed the way I’ve developed applications. Here are the top things that impacted me and gave me “orders of magnitude” in productivity gains:
Search Engine - We take search engines for granted today, but I remember in the early 1990s going from having a pool of computers that we shared at work to getting my own PC, and then getting all our PCs wired together, and then getting email and an internet browser called Mosaic. Later we got a version of that browser called Netscape Navigator, and it ran a scripting language called JavaScript (which I thought was Java at first, but that is another story). Before that, if you wanted to learn about software you took a class or read the manual. I even subscribed to magazines about coding (I’m serious). Suddenly I could find information on a search engine called Yahoo!
Stack Overflow - I don’t know when I came to depend on Stack Overflow. A quick search shows that it was started in 2008, and it was probably within a few years that I began using it. It wasn’t always a conscious decision, but when I had a technical problem, and I did a search, all of a sudden I could find my answer on Stack Overflow. The site was part blog, part Q&A, with a dash of gamification thrown in, and it was amazing. Problems that would take days to work through I could get fixed in minutes.
Bootstrap (aka front-end frameworks) - This was the first library I worked with. Way back, I tended to avoid libraries and frameworks, as I didn’t necessarily need them and I liked to have control. Honestly, I was a bit naive to their value at the time. With Bootstrap, I tried it just because I wanted an easier way to make my UI look good on mobile, but it opened all sorts of paradigm shifts for me as a developer.
Package Managers (aka NPM, Composer) - Reusable code libraries meant no longer needing to reinvent the wheel. I imagine every language has a library/catalog of some sort, but most of my work has been in JavaScript and PHP, so these were the two libraries that impacted me directly - ok add PyPi to the list.
Github - A central place where we could all store our code. Open source became accessible, and where Stack Overflow helped me solve a specific issue, Github helped me see how people approached entire projects.
…and now AI. Tools like Github Copilot, Google’s Gemini Code Assist (formerly Duet AI which was formerly Bard - hmm, interesting marketing approach), or Codeium will all connect right into your dev environment and help you start coding immediately. They are IntelliSense on steroids, and they are really great. Does this mean programming is dead?
What does history tell us
I started this post this way because I have the lucky perspective of 30 years of experience. Here are themes that I think are important:
You can see the theme above. Half the population of programmers are not going to disappear in an instant, even though it feels that way, but change is a constant in the age we live in. Developing software today looks nothing like it did 30 years ago, and that looked nothing like 30 years before that (think punch cards). Successful developers enjoy learning, and high-performing software companies make sure their developers are allocating some time to exploring new tech.
The beauty of the developer community is that it’s selfless. Stack Overflow never would have worked if people didn’t share their tricks and pain points. It was a way for developers to share answers. Package managers were a way for them to share ideas. Github was a way to share work.
AI, at least today, is just a way to share effort. All the tech I listed above made me more productive, but AI is the first one that can take my unbound idea and help me build it. Sometimes, I can prompt out a script requirement and get a perfect solution. Sometimes the answer either doesn’t work or is incorrect, and sometimes AI doesn’t know the answer. It’s not perfect, but it’s way less total work for me to do something than it was two years ago, and it’s only going to get better.
Now, we can view this as doing our job, or we can view this as giving us time to do more cool stuff. I choose the latter POV.
Right now, AI is good at scaffolding, it’s a better autocomplete, and it’s a better search engine. It’s awesome, and you should be leveraging it if you’re not, but it’s not a software developer. It can’t have a conversation, it can’t understand the unsaid things that a business person is trying to communicate, it can’t anticipate a problem that might happen, and it has difficulty understanding aesthetics (depending on who you ask). Most importantly, it can’t be accountable.
Earlier this year (2024), a company promoted their new “AI Software Engineer.” They built a demo that showed a person asking questions from an AI engine and then validating that work. The demo itself appeared to be vaporware, but as I watched the demo, I thought to myself, “Wait, that’s what I already do.” The person engaging with the AI needs to understand development. They need to properly prompt the AI to get appropriate code and they need to be able to vet that code. Does AI make the job easier? Absolutely, but it doesn’t make the job go away.
Finally, writing code is different from writing good code. It’s putting all the pieces together where the magic happens, and that still requires skill and perspective to do it right.
What’s next
Is AI going to continue to advance? Yes. If you look at the pattern I outlined above, we average a watershed moment every 3-5 years, and didn’t even talk about things like mobile and cloud computing. As we move beyond effort, maybe the next thing we standardize is intellect, and AI is the perfect medium for that.
No-code development is something companies have been working towards for years. Website building went from being a scarce skill to a point-and-click exercise. I see AI really doing the same for no-code development (I know, duh). It’s just reversing the direction of the workflow. AI will continue to improve the life and productivity of professional developers, but it’s going to have the bigger impact on non-developers, allowing them to do more interesting things.
For us, that means focusing on the harder stuff. How we integrate AI smartly into our applications, and how we use machine learning to augment our computerized business logic.
Again, development doesn’t go away, but it does change. I can’t wait to see what happens next, and I can’t wait to be a part of it.
Dave DuBois
April 4, 2024