AI
Thirty years ago I graduated with a Computer Science Applications degree from CU Boulder. CU was experimenting with a hybrid CS degree that spread across their Engineering and Liberal Arts programs; myself and several others took the bait. My reasoning for pursuing the degree was that I foresaw software increasingly becoming a part of all of our lives, no longer kept in the corners, and I wanted a broader awareness and application of how and where it should be used. Aside, CU reconstituted the CSAP degree (under a new name) fifteen years later and it has been the fastest growing, and largest, major in the Engineering school since. Things change. We adapt.
Personal Computers were becoming quite common, and the Internet was starting to come online. I took a job at Netscape Communications and wrote C/C++ on the small networking library team for the browser.
Over the past few decades, a handful of major things contributed to software eating the world. Stable, high-bandwidth networking connections became common for homes; this enabled the backbone for software use, the Internet, to become available to all. Unstable, high-bandwidth, IP enabled mobile devices/phones started to connect to the Internet in a decent way over cell tower backplanes (the greatest trick Steve Jobs ever pulled was convincing AT&T that IP deployment for the iPhone was a good idea; an industry was born therein). The popularity of interpreted languages enabled more and more people to build software. A robust mobile app ecosystem (App Stores) came to be.
The proliferation of software, as well as its creators followed these robust distribution frameworks.
I’ve been struggling to come up with words to describe what’s now happening with generative AI increasingly becoming part of our lives, and in particular what this is supposed to mean to us software developers. On one hand this is arguably the most exciting time to be alive. On the other, it is a threatening time to be alive.
I had always viewed my role in writing software as one of utility. Some skill in writing software provided me with a means to earn a living, and impact the world around me in a scaled manner; software I wrote could touch others’ lives in a meaningful way. It took me a few years early on in my career to realize what I was doing was also artistic in nature. I’d previously only considered it on the science end of the spectrum. Writing software can be artful.
I started writing code deterministically in vi as many others did. Every character painfully mattered when writing C that then had to be compiled. Then JavaScript came along and popularized a language that didn’t have to be strongly typed. This frustrated me, as my literal mind needed the boundaries and structure and determinism in strongly typed C. I ultimately conformed though, as it was clear the industry was going to write a lot of JS; I had to stop complaining and get on board.
Code generated by language models large and small feels like an evolution of this to me. It’s another leap in non-deterministic thinking and non-deterministic coding. The advantage of it being non-deterministic is that more people can engage with it. While I’ve enjoyed the relative scarcity of my skills, it has also been deeply isolating (as many/most other software developers can attest). I have lived the vast majority of my life within a small community of like minded engineers. I have loved it, but, it has been lonely. All around me I’m seeing people create software that was entirely inaccessible to them just a few years ago. On one hand that is liberating and powerful. On the other, it is scary and threatening.
I have used my skills to help myself, and others, bring software into the world. I don’t see that part of my role changing at all. Navigating the path to productionized software is challenging. Consistent software at scale is challenging. I have always used software to create more software, and I view LLMs in similar light. They’re just software that I use to create more software.
If you write software solely as a means to an economic end, I can imagine this new era feels particularly threatening to you. If you write software because you are amazed by what you can create, then these are exciting times my friend.