Category: Computers

The Inherent Problems with Using LLMs to Code

Introduction

Software companies are pushing their developers more and more to use LLMs in order to increase productivity. The argument is that LLMs allow developers to write more code in a shorter period of time. Whether it’s automating processes like requirement gathering or pull request reviews, or creating code like prototypes, unit tests and new features, or refactoring old code into newer more efficient code – there’s a point to be made. Yes AI can help with that. There’s been a joke for a long time that Google searches are a developer’s partner when it comes to coding. LLMs take it one step further and actually write the code you need based on the code it’s been trained on from the internet. But while LLMs can help developers produce more code, faster; what are the downsides? In this article I’m not talking about the technical downsides, or using AI agents to automate processes, but more about the psychological downsides to the workforce, and how that effects the code being generated.

Motivation

I’ve heard from some of my colleagues that they really like using LLMs because they “hate coding.” I find that quite interesting since being a developer means you’re going to be coding a lot. Why did you go into a career where the majority of its purpose is something you “hate”? If you asked a career counselor in high school what careers pay a lot of money, one of the top answers would be “software engineer.” Many of those kids went that route for that answer alone. They had no real interest in computers, or coding. It was just the default job to get into if you wanted to make a lot of money. These engineers will hail AI as their savior, and if you truly don’t like coding, that makes sense.

Then there’s the other people who got into software development. Nerds. There’s a group of people that were into computers as a hobby, and the natural transition was to continue that obsession into a career. These are the people that actually enjoy coding. Making someone who enjoys coding use an LLM to code for them is like asking a mechanic who enjoys working on cars to control a robot to do it. What motivation does a software engineer who enjoys coding have now that you’ve taken it away from them? Why continue to learn new languages? Why stay in the industry at all?

Ownership/Pride

If you’re a software engineer that enjoys coding, you have a sense of pride in what you create. You took on a challenge, designed a solution, and executed that solution. That’s something to be proud of. It’s also something you take responsibility for. You designed it. You wrote the code. It’s yours. If the code is good, you take credit for that. If the code ends up having problems, you have to take credit for that too and take it upon yourself to fix it. In a nutshell, because you have pride in something, you claim ownership of it, and if you own it, you want it to be good.

In the case of using AI, you tell the LLM what you want, how you want it implemented, and ask it to generate the code. What if the code created by the LLM works but is optimized badly? What if there’s security risks? What if the data model that was created is bad? Would a human have the same amount of pride in something they didn’t actually create? I would argue no; It’s just human nature. A developer in this situation SHOULD take as much care as one that wrote the code from beginning to end, but I don’t think that’s realistic. The feeling of ownership isn’t there. If the level of pride is less, then the level of care is also less. In the end, less pride ends up with lesser code.

Skill

What happens to a software engineer’s coding skills the more and more they use AI? Unlike riding a bike, coding is a “use it or lose it” skill. Much like learning a new language, if you don’t speak it often, you get out of practice and start forgetting what you’ve learned. Using AI to generate code lets that “brain muscle” atrophy over time. In fact Anthropic, one of the leaders in AI development, recently published a study showing that a collection of software engineers using AI over a period of time performed worse on a skills test than the engineers that didn’t. The article about the study can be found HERE. Use it, or lose it. What does this predict for the future of software engineering? Will there be a mass of AI generated code that after years of changes no one knows how to troubleshoot? Will companies be locked into paying for AI forever because there’s no one around who can write decent code from scratch anymore? These are probably exaggerated consequences, but they are something corporate leadership with have to deal with. This also leads us into the next topic, the workforce.

Workforce

Early in the push to use AI for coding there was the concern that AI would replace junior engineers. If the executives of software firms were to think logically, and see the big picture, they’d realize that if they’re not training and mentoring their junior engineers, they’re not investing in their future. Junior engineers become senior engineers and you’ll need that expertise to maintain your code in the future. However, that assumes that executives are thinking logically, and that they’re looking past their upcoming quarterly market goals. While using AI as the scapegoat for layoffs is currently rampant in the industry, there’s still reason to be concerned that the more you rely on AI means relying more and more on AI in the future. If using AI does negatively affect the skills of software engineers, if allowed to reach its inevitable conclusion, you’ll end up with code beholden to AI, maintained by engineers beholden to AI. Is that what these corporations want? Their intellectual property tied to the services of an AI company?

Mental Paradigm

I’ve come to realize that for me, using an LLM to write my code is more mentally tiring than writing the code yourself. When you’re working with an LLM to write code, you’re essentially “chatting” with “someone” all day. We interact with LLM‘s using somewhat normal speech. You’re convincing an entity to write the code you want. The thought process is totally different. When you’re writing the code yourself, there’s no conversation, it’s just logic. That’s a different part of your brain. After a day of coding with AI, I feel like I’ve been in a day long meeting because at it’s most basic form – I was.

Conclusion

AI and using LLMs to assist with software development is here to stay. It IS useful. It does help developers create more code at greater speed. It also allows developers to create things they might not have been able to create without it. But like most things in life, AI is a double-edged sword. The good needs to be balanced with the bad, and I hope the challenges I discussed here are things that we as an industry can avoid or find solutions to.

Enable Administrator Login in Windows 11

Did you accidentally lock your administrator login by attempting the wrong password too many times? Do you need to re-enable the account, and reset the password? Try the following :

  1. Hold SHIFT and click the power icon on the lock screen. Continue holding SHIFT and click on “Restart”. This will boot the machine into Troubleshooting mode
  2. Select “Advanced Options” on the “Troubleshoot” screen
  3. Select “Command Prompt”. This will open a command prompt window.
  4. In the Command Prompt window, type the following command :
    net user Administrator /active:yes
  5. Now that the Administrator account has been re-enabled, you can set a new password by typing this command :
    net user Administrator <type your password here>
  6. Close the Command Prompt window
  7. Restart the computer
  8. Login with the Administrator account with the password you just set

Clone your Windows Drive to a Larger Drive

I recently wanted to put a larger SSD in my laptop. Unforunately, it can only have one drive. So, if I didn’t want to have to reinstall Windows and everything else on a new drive, I would need to move all the data off the old drive onto the new. This can be done with a Debian-based live distro called “Clonezilla” that will clone your existing drive to a new drive. Tom’s Hardware did an excellent write up at the link below.

https://www.tomshardware.com/how-to/clone-your-ssd-or-hard-drive

Restore the Old “Right-click” Context Menus in Windows 11

If you’re like me and don’t dig the new cartoony icons for cut, copy, and paste in Windows 11 when you right click on things; you can use this terminal command to bring back the old context menus.

  1. Hit Windows Key + X
  2. Select “Terminal”
  3. In the terminal window, copy and paste :
    reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
  4. Hit Enter
  5. Reboot your machine.

After you reboot, the right-click context menu should be displayed in the old way, with “Copy”, “Cut”, “Paste”, and “Delete” being words, and not icons.

2022 Asus Zephyrus G15 Keyboard Issue Resolved? (Nope.)

My Zephyrus laptop has been having keyboard issues for quite some time. The “E” key has been intermittent at best and it doesn’t appear to be a hardware issue, but a software one.

The “E” key won’t type by itself at all, it will only register if it’s immediately follows another keystroke. So, for example, if you just type “e” nothing happens, but if you type “Pre” and hit “r” and “e” fast enough, you get “Pre”. (Sometimes it’ll do “Per” though, so it’ll even register the order wrong.) This appears to be related to ghost key detection, or sticky keys (even though I have it disabled in Windows 11) or rollover key detection. What’s weird and frustrating about this situation is that it doesn’t happen all the time. Sometimes, the “e” won’t work at all.

The other oddity is that if I do a clean install of Windows 11, the keyboard works perfectly fine… for a while. Sometimes it’s a day, sometimes it’s a couple hours before it starts acting up again. This led me to believe it must be a software, or more specifically, a driver issue. Either Windows 11 is installing an update that breaks the keyboard driver, or the MyAsus utility is installing something that’s broken.

To test this, I reinstalled Windows 11, and I disabled Windows 11’s ability to include manufacturer updates. Like always the keyboard worked fine for a couple of hours, and then the “E” key started acting up again. So it’s not Windows Update that’s the issue. It MAY be MyAsus installing something that Windows 11 doesn’t like.

At this point I gave up, and decided to go with the nuclear option, and installed PopOS (Linux) on the laptop. Guess what? The keyboard is working fine now without issue. So, it’s definitely a software problem, not a hardware problem, and I guess I’ll just have to keep Linux on the machine from now on. (The laptop isn’t under warranty and I’m not paying $90 to Asus to have them take it in for repair because they wrote a crappy driver.)

Strike that. The keyboard had to be replaced at a local repair shop, with mixed results. No more Asus laptops in my future.

Linking a Local Folder with Microsoft’s One Drive

You may want to sync a folder on your computer with OneDrive that isn’t one of the Windows standard C: drive folders like “Documents”, “Pictures” etc. If that’s the case, here’s the command line for you to use to link any folder with OneDrive.

mklink /j “<path to configured OneDrive location>” “<path to directory you want synced>

So, if I had a folder called “photos” on the D: drive that I wanted uploaded and synced with my OneDrive, and my OneDrive was configured to exist at c:\onedrive (the default is C:\users\<username>\onedrive) I’d do the following command in a Command Prompt window:

mklink /j “c:\onedrive” “d:\photos”

You’ll see the “photos” folder appear in your OneDrive, and the OneDrive app should start syncing the files from your local storage to the remote cloud-based storage.

Saitek X52 Pro Not Being Detected by Driver Installation Program (Windows 8 and 10)

My X-52 has been a real pain in the butt in Windows 10. It’s hit or miss if after a reboot the joystick is going to be detected by Windows. Attempting to re-run the driver installer doesn’t help. I found the following tip at the Windows Support site and seems to do the trick.

I finally found a Solution, when I try to load the driver and it gets to the point that it asked me to plug in the device I went to the device manager and when it asked me to install the driver I clicked “browse my computer” then”let me pick from a list” from there it gave me 3 choices, 2 of them were X52 Controllers, the 3rd was a generic USB device, I selected the Generic Device and then the Saitek Driver installer was able to finish its installation