Programming is not the same as a programming language. JS, Python, and the like are not the only gateway into harnessing the power of computers. Ada Lovelace (1815-1852) is credited with being the first programmer before you could sit down and hack out some code. Repeatable functions were theorized on paper through math. Programming also does not necessarily mean that you are building something that will give you a provably “correct” answer. In fact, every CPU has a certain error rate. It should be obvious at this point that AI is shaking up our snow globe of reality, and our perception of programming is not safe from this change.
Embracing Entropy
As many people can probably relate to, I used to have a tab problem. Going down the rabbit hole of debugging a problem could take countless hours, resulting in a browser with innumerable tabs. Anxious not to lose vital information from searching, I would keep those tabs open. Syntax specificities and esoteric errors would plague development and clutter my workspace. The hacker “flow” would become harder and harder to stay in. ChatGPT has revolutionized my workflow and many others. I pretty much only ever need an OpenAI tab open and I am chilling most of the day. I even wrote a small ChatGPT utility for not needing to leave my IDE. I have the app downloaded for QA on the go, and I will often just dictation to enter my question (kind of feels like what voice assistants were supposed to be).
My AI renaissance began with skepticism. I remember my friend showing me Github Copilot and being so confused as to why anyone would want to use this thing. Why would I want to subjugate myself to all the nonsense that it came up with? And on every keypress? How on Earth could I focus on writing code that actually runs? I don’t remember what I actually experienced that convinced me otherwise, but once I did, I finally understood. Copilot, to me at least, feels like holding a firehose of possibilities and they are being flung onto the screen. It feels like 90% of the time it is wrong/not what I needed, but that 10% of the time, all I have to do is press tab and there it is, the code I would have written. In a similar way to holding a firehose, to use it effectively, you have to train yourself a bit. Being able to adjust to having those possibilities of code constantly being presented to you can be annoying/overwhelming, but if you can be OK with that, you are saving yourself massive amounts of time. The tasks that it does particularly well with, I find, are actually the ones I don’t like doing to begin with. Naming functions, descriptive error messages, initialization of a big data structure. One thing it does surprisingly poorly on is writing comments, which is consistent with the open source code it was trained on.
Having been initially skeptical about the value of AI in regards to programming, it took me all of a couple of ChatGPT sessions unblocking me with what I was working on to understand the real power of what it could do. I always find it surprising when I meet a skilled engineer who has not spent as much time with ChatGPT. What is getting in the way? It is undeniably valuable, could they be using it wrong? With such an initial explosive growth in its user base, surely every engineer is using this 9-5, and then some. I teach high schoolers computer science and they are putting AI on everything, just like ketchup. I think to be able to use AI to its fullest potential, you have to be someone who has an affinity for creativity. It is not enough to be just an engineer who codes, you have to enjoy reading and writing. AI is messy, and you have to know how to control its entropy so that the answer you are looking for is more likely to be presented to you.
There is no map for where we are going.
~ Ernest Cline
Unlocking new programmers
I came across a post during ChatGPT’s initial hype train that I have not been able to forget. There is not much which is notable about this post; the author, who seems to be a software manager, wrote a PHP script to integrate the ChatGPT API into their team’s Slack. But yet, that is exactly why I haven’t been able to forget this post. A manager, if they are doing their job, is not a developer. They should be finding ways to optimize the business function of their team. If they have a software background, sometimes the best way to optimize the team is to write code, and that is what the author did. Managers with such a background are constantly “programming” their environment, their programming language is just English (the language of business) as opposed to JS, Python, PHP, etc. LLMs give these people super powers. Being able to simply write a sentence describing an action and having that be executed by a computer means they can be noodling on “code” while half listening in their 5th Zoom call of the day or needing a break from writing performance reviews.
There has been a lot of emphasis on tools for building applications that use AI (which I wrote about previously). LLMs are not just a tool for those who already know/have time to code. Their impact includes any group of people who have a problem solving kind of mind. Being able to more or less talk out loud and having a “reasoning engine” for processing data, a driven person can apply a ridiculous multiplier to their productivity without needing to go to a coding bootcamp or suffer through a book on Python.
Whenever someone comes to me with an app idea, I ask: “Have you tried building your app with Google Sites/Forms/Sheets”? Collecting data, reasoning about it, and then using the least amount of code to increase the amount of data that you are collecting has always been my philosophy about building out an idea. With the cat out of the bag on LLMs, but still in its infancy, my follow up question to the yearning app dev will soon be; “Have you used AI to model what you want to build?”.
Adding AI to an application is not going to solve your problems. Effectively using AI means to have a very intimate understanding with the data that you're dealing with and what problem you're trying to solve.
~ me in a previous post
Thanks for reading, have a great day y’all!