Let me start this out by saying we live in a very weird time. One could say we live in a privileged time where before software developers needed to really know their craft because they couldn’t just prompt or look at Stack Overflow posts about their problems. In fact, there are people still alive that programmed in their undergrad using punch cards, where debugging was at least a day in duration. Yet we have so much information at our disposal, plenty documentation and when there is none or its poor we can just hit a chatbot and get new documentation tailored to our question. And with this I question what will we do collectively because whenever we have something that requires no effort to use, we lean on it. If we can offload some of our brain’s processing power to it, we do.

Thinking back it wasn’t too long ago that I had to memorize phone numbers in case I wanted to call someone because I didn’t grow up having a cellphone until I was a teenager and even then it could only hold so many contacts. After a few years of having one I no longer remembered any telephone numbers except my home phone number and my Grandmother’s. Now I only know one. And many others have gone through the same experience. Why? Because why would anyone need to remember any of these numbers, it’s all a few taps away and instead of having to remember the number, you can just navigate to the contact name, which is easier to remember, and tap call. Basically, technology has made it so easy (via abstraction?, convenience?) to just remember a name and the device will do the translation to the number. Pretty much no different than what Domain Name System (DNS) did for web addresses. Its abstracted away memorizing an IP address and something easier replaced it.

Now as I mentioned before with the recent advances to Large Language Models (LLM’s) and Chatbots we have more access to information than ever before and it can even generate information too. Say you are dealing with a pesky API that has poor documentation, well you can fire up a chatbot and have it give you examples. Hey the examples are in Python but you have a Go codebase, no problem! Just tell the bot to change it to Go and presto! You now have code you might be able to copy and paste and tweak (right!??). This is amazing but also a bit terrifying because if the solution is so close, or in many cases, the illusion of the solution is very close, what incentive do you have to dive deep? If I am facing a gnarly problem with conflicting NPM packages because I decided to install isDivisibleByTwo? and I can just ask a chatbot to find a list of possible solutions, when will I devise this list in my head from experience? Because most talented programmers learn from experience, especially painful ones. You don’t “git gud” by prompting. You get better by having time in the saddle and struggling with problems.

I fear LLM’s and our dependence on their integration into dev tooling will hinder this. Seeing a Jr dev go straight to ChatGPT for a solution instead of working out the core problem and taking a moment to just evaluate what can be done is a worrying sight. What will these developers do during an outage of internet or the service? Are we gonna see Slack messages of: “I’m out today, ChatGippity is down” I hope not. Because when will these developers develop grit, a precursor to competence. When will they be able to raise their skills to new heights? I fear with our new reliance the bar to jump from one level to the next is going to be steeper than before. Its almost like we chose to lower the bar for entry so low that anyone can spit out a bit of code or a cobbled together webapp but going beyond that is going to be way harder than if they just would have learned without relying on the tools from the beginning. Then again maybe I’m wrong.