This diatribe is in response to something I found truly ludicrous posted on this first day of 2024. IBM seems to think that you don’t need training to be a programmer anymore:
Thanks to AI, you don't need a computer science degree to get a job in tech, IBM AI chief says
I was self-taught as a programmer out of necessity. I came of age with the PC (late 1970s and early 1980s), which meant that most of what was taught at the time was for a platform already on its way out, and few were teaching how to program Z80 or 6502 assembler. However, that self-teaching was done at the University of Illinois in Urbana, which DID have quite a few Apple IIs and IBM PCs in computer labs around campus and did have an active computer science community where I learned immense amounts as I pursued a degree in physics (which also involved some programming). Even given that, I regretted not having a formal education in CS, as it took several years after that for me to develop a good grounding for algorithmic work.
Beyond that, I'd make the argument today that what something like Copilot or ChatGPT does is not so much make a non-programmer into a programmer as let a person who writes pseudocode (with a LOT of luck) have the assistant turn that into Python or java or javascript. These are two very different things.
Pseudocode is very useful when you are trying to specify your intent, but you don't want to take the time to context switch to a specific language and try to remember the particular libraries for that language to do certain things. Computer languages change pretty regularly. I have used C, C++, C#, Perl, Visual Basic, Pascal, Java, Javascript, Haskell, PHP, ASP.Net, Scheme, Forth, F#, Ocaml, LiveScript, TypeScript, Python, R, Ruby, Coffee and many others over the years not to mention SQL, XSLT, XQuery, XPath, OpenCypher, Gremlin, SPARQL, XSD, SHACL, Schematron, and other query languages. Is it any surprise that I DON'T want to learn yet another bloated library set, especially knowing it will become obsolete within five years? A pseudocode compiler? Hell, yeah, bring it on!!
But the key here is that I DO know how to program. I know what a hash function is and how it differs from a hash table. I know how to write recursive code and where it does and does not make sense. I know how to write code that writes code and why that is both a powerful technique and a good way to wrap your brain around a tree. I understand the difference between passing by value and passing by reference and why avoiding side effects is a good thing (and why immutable variables are even better, even if they are a pain to work with at times).
Overall, yes, LLMs such as Copilot, having essentially scraped most of Github (and you wonder why I don't put my stuff on that platform any more), have learned how to identify many basic patterns in programming in different languages. That's not surprising. A lot of code is spent doing the same thing - reading files, processing tokens, mapping and reducing and then generating output streams. Could I tell you how to do that in Pascal today off the top of my head? No - I haven't touched Pascal in thirty years, and it's likely changed significantly since then. This is a GREAT case for Copilot, and yes, I believe that we are already beginning to see some productivity gains as AIs are able to dispense with that 80% of coding that involves telling the system how to do common things.
However, that remaining 20% is where things get harder because THAT differentiates one program from another, and I think this is where the magic fairy dust of AI gets exposed for the illusion that it is. I don’t honestly think that in this day and age, you need a full CS degree, but what you do need is those 10,000 hours of mastering the various technologies to understand algorithms and data structures, architectures, graphics and neural networks and all the various specializations that make one a programmer or data scientist not only competent as a general programmer but unique in their own right. It is this expertise, not the number of lines of code being written, that is what companies are actually paying for, though all too often, this distinction gets lost on managers who have never coded before.
In some respects, this is very much analogous to other code frameworks, such as Angular or React, in the Javascript world. These frameworks do a lot of the heavy lifting if you happen to be writing applications that fit within their purview, but they also add complexities of their own that can, in many cases, more than outweigh their benefits. If you know what you’re doing, the productivity gains are worthwhile, but if you don’t, then they won’t help much, if at all, and may in fact be counterproductive. This is just as true of AI code assistants, IBM’s claims notwithstanding.
The danger of all of this is that it enhances the perception that coding is trivially easy and in imminent danger of being completely automated, so companies can consequently pay their programmers far less for what had, only a couple of years ago, been reasonably well-compensated rates, or even dispensed with entirely. However, supply and demand are tricky things.
I have not, to date, heard of any case studies where AI code-bots have been used successfully to replace one programmer, let alone millions. I’m sure for very basic tasks - building a storefront website comes to mind - this may be taking place, so long as you work within fairly strict parameters in your expectations because for the most part configuring these kinds of sites has already been figured out repeatedly. Or, put another way, you can do it because it is a very common use case that has been done (and documented) repeatedly, but that’s not going to give a business a competitive edge, either.
Whether you need a CS degree any more is kind of a semantic distinction - in a field as fast-changing as this, certifications are likely to be far more current in getting you up to speed on a given technology, given the glacial pace of approving programs at the university level (but that’s an argument for another rant, but I think the only ones who benefit from this kind of hype are late-stage investors looking to juice their dividend checks.
Kurt Cagle is the managing editor of The Cagle Report. If you are interested in contacting Kurt for a free consulting session, check out my calendly account.
.