no, the software apocalypse isn't coming
Journalists are now penning dire warnings for programmers as AI learns to code. But their job obituaries show just how little they understand what's next.
According to a recent article in The Atlantic, new AI tools like GitHub’s Copilot mean that programming jobs are doomed since writing code will be relegated to machines, and we should start mourning the end of a stable, lucrative career path for millions of refugees, immigrants, and kids trying to achieve upward mobility in a country where it’s been steadily declining. If you want to get ahead, you have to do it as early in your career as possible to bake in that premium compensation with every offer, and jobs as a hotshot programmer are a terrific way to do that today. Or, at least, they used to be, and are supposedly now in limbo as AI takes over.
But are they really? Should I start saving up before an app takes over for me because my tech days are officially numbered thanks to my colleagues’ hubris? If writing code was all there is to the job, then yes, I would absolutely start panicking. But code is an end product of my work and if anything, I’d actually welcome a smarter Copilot plugin or a competitor to help me deal with boring boilerplate setups, construct scripts for a reusable cloud deployment, and help manage the tedious functions of infrastructure configurations and updates. It would be a major force multiplier that would remove a lot of stress and infuriating trial and error loops.
You see, what I really do is solve problems with math by trying to understand the root cause of the request, recommend and test different approaches, pick the right tools or figure out how to build custom frameworks and tech stacks for hyper-specialized and novel problems, manage how code is stored, organized, deployed, and verified, work with end users to identify new problems, and restart the cycle. The code itself is just an ephemeral exercise to see what would work and what gotchas there are in the idea you’re testing, or the end result of a design process which may take months or years, depending on the scale of the aforementioned problem.
it’s not writing the code, it’s what code to write
Hence the old programmer joke that to replace us, end users would have to tell the AI exactly what they want to build and know exactly what they want, and because they can’t even do that with us, we’re probably safe. If that sounds like an insult, it’s really not. Many of the problems intended to be solved by custom software are so complex or so domain specific they require many iterations and experiments to nail down what you actually need to build, or a rethinking of practices and workflows to create a truly successful design. This means whatever you thought you’d be making may not be the right product, which is why 7 in 10 software projects fail in management’s eyes.
So, because we frequently we end up doing the equivalent of building a plane around us while already mid-flight, we end up doing a lot of creative problem-solving at every level. Yes, code will involved throughout, but it won’t last long. In a typical codebase, a particular function or method lives only about a year and a half before it’s altered, and the typical program makes it five to eight years before needing to be rewritten for new technologies or more efficient paradigms. Computer science in the real world involves doing all that interrogation, design, and testing, while also actively anticipating what’s next. To so blithely reduce it to “writing code” is both insulting and misleading.
In fact, over the years, I’ve written numerous code generators to save myself hassles associated with overly complicated tasks that require inhuman attention to detail not to mess up a database script, or to set up the scaffolding of a new service and nudge others to use an optimal design intended to maximize the tech stack we were using at the time. As the tools, ideas, and requirements changed, so did those generators. Yet, somehow, I still have a job, still write code to figure out how to build something next or to find the gotchas in a new stack or approach, and an AI code generator would only make me happy by letting me test and prototype even faster.
the great work disconnect plaguing us today
With that in mind, let’s return to journalists’ concerns that people like me are now on borrowed time. In their minds, we write code. If we aren’t needed to sit there and write that code, far fewer of us will be working. After all, if a machine can build a widget that used to be hand assembled by humans, no one needs the humans. Sure, some senior ones will be left to troubleshoot and do quality control but by in large, we humans are out of the widget business. From there, they go on to extrapolate a narrative that jobs we were told could save coal miners and impoverished areas with few other prospects are about to go bust, and run with it for clickable gloom and doom.
In reality, right now is a fantastic time to be in computer science. There have probably never been more frameworks, tools, options, ideas, and opportunities. What there will be less of are coding boot camps that teach a trendy, buzzy framework and unleash a class on potential employers. There will need to be focus on the fundamentals like the basic parts of a computer language, object-oriented vs. functional, database designs, and different architectural paradigms. There will be calls to elevate thinking and basic instruction. But there will still be more and more jobs. Why? Guess who builds those code generating AI models and makes sure they’re properly trained.
And this is the difference between industrial and knowledge work. Industry needs you to do things and has been the predominant mindset of productivity and worth for the last 200 years. Knowledge work requires you to know things and understand how and when you do things. You’re being compensated not for the many hours of coding — and there will always be projects in which you’ll feel like your hands are about to give out after 16 hour days of pounding elaborate custom code into an IDE, even while an AI is helping you fill in the basic algorithms and templates — but for knowing what the code really needs to do to be truly useful, what tools it needs to manipulate, and how.
As long as humans have problems that need to solved by technology, as long as there will be more than one way to create software or program hardware, as long as brand new tools and frameworks are invented, there will be a need for those of us who, yes, write some sort of code, but whose primary function will be to design solutions, find, troubleshoot, and fix bugs and bad designs, and come up with new technologies that can help fulfill human aspirations. Don’t worry about us. Worry about how to help the people truly in danger of having their jobs automated away transition into new jobs so they can still find purpose and meaning in life instead of just more toil.