It's Still Hard to Write Great Software
In my last post, I alluded to the anxiety I’m feeling about watching the type of work I’ve been doing for the last twenty years seem to evaporate. AI tools have made coding faster, cheaper, and more accessible than ever. If a machine can do what I do, do I still matter?
Unless you’ve been asleep since October, you know that there has been a step change in how software is being created. People who have never opened a terminal before are now showing off fully formed applications. My son created an activity scheduling app for a class project and won himself a Starbucks gift card.
The simple truth is that just about anyone today can probably provide a few prompts and will an app into existence pretty quickly. Another truth is that what they’re going to get is likely going to be something that a really complicated computer algorithm has determined is the most probable output. The hardest part of making great software is still really hard.
Ultimately, software is a way for a human to tell a computer how to perform an action for the benefit of a fellow human. Computers don’t understand people. What it feels like to be delighted. What it really means to have your time wasted. What it feels like to be frustrated. They have no idea. Computers don’t experience joy. They don’t sense the passage of time. LLMs perform a sophisticated mathematical magic trick that connects word fragments and returns a series of word fragments that satisfy predetermined acceptance criteria. At scale, that can look like reasoning. To a certain extent, maybe that’s partly what humans do too, but we are undeniably capable of a lot more. I think so anyway. That one’s for the philosophers to ponder.
When the cost of making something falls, value migrates. It moves toward whatever the cheap version can’t easily replicate. Red Hat built a multi-billion-dollar business on free open-source software. Reliability, support, and trust are worth something, even when the software itself costs nothing. I understand that this might not be the most apt example. Linux started out free, and Red Hat went into it knowing that. A better example might be when Napster upended music distribution. Musicians were forced to turn to live performances to earn a living. I don’t think programmers are suddenly going to begin live coding for audiences, but I do think that the types of software that will succeed are the ones that enable positive human experiences.
The code part is fast now. I plan to resist the urge to just pump out a bunch of code. Rather, I’ll use the benefit of fast coding to spend more time on the things that make the experience of a human using software better. I’ll take more time to really explore the problem I’m trying to solve. I’ll spend more time refining workflows that ensure my software has fewer bugs and that it performs well when a lot of people use it. I’ll spend time on delightful surprises that I previously might not have had time to include.
So do I still matter as a software developer? I’ve been letting that thought marinate in my brain, perhaps a little too much, and I think I’ve concluded that the answer is “yes.” Am I deluding myself? Maybe. But I think it’s healthy to be a little bit delusional sometimes. A little bit. Sometimes.