It’s all about the Artificial Intelligence?
I can remember when in the 1980s and 90s, we programmers were talking about things such as SmallTalk, Lisp machines, the Prolog programming language, and this upstart C++. Lots of discussions around modularity, simulation, patterns of programming and whatnot. Back then, we even had the discussions around neural networks, back propagation, and even nano scale computers, driven by push rods…
The machines of the time were not anywhere near as capable as even my now ‘older’ iPhone 12. I mean, a machine with a few megabytes of RAM, let alone a hard disk with a 100Megabytes, would have been extraordinary. And yet, we envisaged the rise of the machines (Terminator – first DVD ever!), and if you were a programmer, “Snowcrash” fueled fantasies of a world of connected intelligence, that drove a generation to create the distributed multi-player gaming environments we have today.
If we had then, what we have now, in terms of hardware, would we already be served by our robotic assistants? Probably not, but we’ve had decades to stew on the science of the tech, to refine the ‘artificial’ in the intelligence, and finally, the neural networks of yore have enough horsepower and training data today to fulfill a lot of the fantasy operations we envisaged back then.
I have mentioned a few key technologies in newsletters over the past year, so here I want to launch into a bit more detail about what I’ve been using, and how I see it impacting the future of programming. I have been working with Microsoft recently on the topic of “The Future of Work”. In particular, I have been exploring how roles change, how engineering itself changes, and how and when we might expect those changes.
One particular thing of note is that it’s very hard for anyone, even those creating the tech, to predict which specific features will be emerging in any given timeframe. Just like early on, it was hard to know when a machine might be able to beat a chess grand master (Feb 1996). Instead of trying to predict the feature futures, I’ve instead started to predict a chronology. For example, I don’t know when copilot or ChatGPT will be able to write code for any given situation better than I can, but I know this will happen eventually. Knowing this, I also know that my job as a ‘software engineer’ will change over time, to the point where I am no longer doing the mundane code writing, but have switched to the more abstract systems design, so I can prepare for that.
Artificial Intelligence is a very broad term of course. In common speech, I take it to mean “that which we don’t quite understand, but we know it’s related to computers, and it’s going to be taking my job some day”. This can be a fearful interpretation. It’s the unknown. Much like the emergence of the ‘horseless carriage’, it might cause some fear at first, but over time, with gained experience, it becomes less a thing to fear, and more a tool to fuel a whole new industrial age.
What are some of the sign posts in my chronology? I’ll use “computers” to represent the thing that is evolving.
Computers will be able to assist in the development of software. That assistance will be rudimentary, more of a ‘copy/paste’ on overdrive, but it will accelerate software writing by 30%
Computers will be able to create a small scale system based on domain knowledge and coding abilities.
Computers will be able to interpret large scale system designs and generate and verify code for such systems, according to a human derived specification
Computers will be able to create systems on the fly via human conversational interactions.
Computers will be able to create new systems without human input, to satisfy the needs of a group of people, or other entities.
Those are sign posts along a journey of development, only considering software development. Over the next few months, I will explore further what each of these sign posts might really look like, and what we can do to prepare for their arrival and maximize our benefit from them.
I’ve been doing tech for 40+ years at this point. It’s been a year since I left Microsoft, and for that entire time I’ve been using the likes of ChatGPT and GitHub copilot to enhance my coding capabilities. I have been able to create a level and quantity of software in that short amount of time that I would not have been able to do in the past without such tools. We are at an inflection point, where the tools are good enough that we need to make very conscious choices about how to engage and use them to ensure we reap the benefits to the betterment of humanity, rather than cowering in fear of what might be done to us.