I have started to use Co Pilot quite frequently for both coding and working out how to do things like implementing security in my code such as OAuth 2.0 etc. Looking back at my life as a developer from the days I was a student studying Computing at A-level to now, it struck me how much I don’t know now as I did all those years ago. Let me take you all back:

Pre-Internet

In the days before fast internet, we developers had to memorize syntax, and rely on our text based sources to understand programming frameworks and work out how to use certain commands in any programming language, and have a detailed understanding of the parameters that a command would need. I would say that we would commit near enough 90% of syntax to our own human memory that included us having to know which programming libraries you needed to use certain commands. In those days every compiler or database you would buy would come packed with large text books – it actually felt good when you opened up the discs containing the software – much like the Youtube videos you see of people unpacking their new mobile phones. The debugging process when facing problems in those days meant you developed an intimate understanding of your code and commands. Yes – things did take longer but at least you understood nearly 100% of what you were doing. Also, in those days it would be fair to say that not everything had been invented in terms of targeted software libraries that fulfill some targeted function, for instance back then many of us would implement our own sorting and searching routines rather than use one that comes within a framework – not because we thought it was fun, but more so because sometimes such routines were not available in the standard libraries.

The Internet Years

The advent of high-speed internet would bring about new habits for developers and that generation. Gone were the days of large textbooks, you would often have access to an online library (think MSDN as an example) for commands to use and written examples. Everything was available online or provided digitally with the installation (although documents being part of the installation were also available back in the previous era). Compilers were also becoming smarter, with built-in intelliSence to help you construct a statement in the code editor in real-time, and suggestions to improve code. At the same time the frameworks provided for developers were getting much larger and numerous so committing command to memory was becoming impossible on a human level.

With all these improvements, you still had to think for yourself on how to do x, y, and z – and it felt like we had reached that point where a developer was actually focused on tackling the problem rather battling with their memory recall on how to write the code. But at the same time the various language vendors were peddling out new libraries and functions faster than before, and the popularity of the web meant that developers had to move away from the traditional desktop development and focus on the internet, which bought new challenges. What also made the development faster was the availability of web sites that tackled issues with code such as StackOverflow. Now if your code produced any errors during development/testing you could just copy and paste the error message into your browser and it would take you to a page where others had similar issues (or exactly the same issue) and you were presented with answers that resolved the issue. This certainly took the stress out of bug-fixing BUT something was lost. When we used to try and resolve a bug ourselves without the aid of such sites – we developers would pick up more knowledge along the way beyond just fixing the issue at hand.

The internet years also bought some needed standardization to security and web development that was missing in its early stages, but also the emergence of many low-code platforms, collaboration and CRM systems that meant that you did not have to start from scratch. You had specialists now on specific platforms and a whole new industry emerged.

The AI age and ‘Vibe Coding’

So fast forward to now and I see a world where developers are hooking to AI libraries that offer various models to integrate into the software. I see the use of AI engines like Co Pilot, Chat GPT, and Claude being used to provide the code that needs to be written to perform the specific function you want. In most cases there is no need to truly ‘understand’ what each line is doing, just getting that ‘vibe’ that it does what you asked it to do, like seeing a finished dish without knowing the ingredients. I have used Co Pilot successfully to build workflows but have suffered pain along the way where it provided me the wrong information despite sounding so ‘sure’ of itself, only to later apologize that it had given me the wrong answer after I told it ‘you cannot do that’ !!!

The title of this post suggests that AI will make developers ‘dumb’ – but just to be clear – what I fear most is that software problems will only be looked at through the lens of some AI engine and not through the experience of a human being. I worry that at some stage this will spawn up a new generation of architectural zealots that will only allow their software divisions to produce software and systems that are backed by an AI engine at every step of the development process. Personally I think we will be limiting ourselves, but also because when you ‘deep it’ ( to coin a phrase ) – all you are doing in using AI to do this ‘vibe’ level coding is actually being a more sophisticated ‘hacker’ to produce code.

We are living in this age of AI, and rapid change, software development is also changing because of this, already we are seeing people developing workflow based systems through AI models that are best suited to the workflow problem and not through the logical steps as was done previously. There is phrase (actually idiom) : “keeping up with the Joneses” that we use, but for us developers I guess we can coin a new idiom which goes like “keeping up with the AI Models”.

Posted in

Leave a comment