If I think about, my day job for the past 7 years, it’s been arranging layers of software to ship value to customers. Writing the code has always been the easiest and most enjoyable part of my job. But as I’ve gained experience, I’ve noticed that some of the most difficult (and enjoyable) parts are designing, organizing, and coordinating the arrangement of that software and the release of the product.

Over the past few months there have been some remarkable progress made on the AI front that has eliminated a lot of the time I spend writing literal code.

That’s incredible! Three years ago, large language models weren’t a thing I’d use tens or hundreds of times per day, during the course of my work. Now it’s ingrained in most of the work that I do. It frees up enough of my time to be able to think about everything about the software that isn’t the code.

I believe large language models are going to raise the floor and the ceiling for software engineering productivity and the types of products we are building.

Instagram co-founder, Mike Krieger interviewed by Yahoo:

Krieger expects that as the act of coding itself increasingly involves artificial intelligence, software developers will tackle the more abstract work that AI models can’t handle and learn how to effectively oversee the systems themselves.

“That’s what I think the work looks like three years from now,” Krieger said. “It’s coming up with the right ideas, doing the right user interaction design, figuring out how to delegate work correctly, and then figuring out how to review things at scale — and that’s probably some combination of maybe a comeback of some static analysis or maybe AI-driven analysis tools of what was actually produced.”

The skill and ability to figure out what to build, how to design it, reviewing the AI-generated portions, and arranging the milestones are going to be valuable skills. AI will continue to eat the part of our jobs that is purely coding, whether it is business logic or infrastructure work.

Having taste and design sense is going to matter a lot more than it has. AI will continue to build software in ways that humans have always built software because this is what it’s been trained on. Its output will be average (or below average) without any type of intervention from a human. However, the ability to generate it quickly is valuable. If I can generate multiple iterations of all of the layers of my next web app in hours, days, or weeks, the getting answers to these questions:

  • Does the code work? If so how does the code work?
  • How is the product arranged?
  • How are features prioritized?
  • How is the user going to interact with it?

…are going to matter a lot more.

Lightcone Podcast at Y Combinator get’s into this in “Vibe Coding Is The Future”:

Humanities, art, and social sciences will become really important again because it’s going to be how people can build their sense of taste and decide what’s good and what’s not so good. Having engineers from a wide variety of backgrounds and thought is going to matter a lot more. LLMs provide rapid, average output. True innovation lies in how we leverage that output creatively. The teams building the most interesting products on that output will be the most creative in how they leverage their experiences and diversity.

For software engineers of my generation, those who have spent the bulk of their early careers without AI tools and large language models, trained in classical computer science at a four-year universities, bootcamps, self-taught, etc…there’s gotta be a fundamental shift with how we think about these tools. The companies we work for, especially the older companies, are going to need to make this shift as well. Prolonged focus on code alone will hinder progress. The most productive engineers and organizations will master rapid iteration.

Code generated by an LLM is inherently, no worse, it’s code proposed to me, the engineer, that I need to determine if it adequately solves a problem, no more, no less. Code that I generate is not the greatest code on the planet either, it’s just an expression of my solution to a particular problem. All code eventually becomes tech debt. We must shift our focus from code worship to the broader craft of software development and collaboration. Let’s stop putting the code on a pedestal and focus on our craft as software builders and collaborators. Remember, the code is only a portion of that craft.

🧇