Are we outsourcing our creativity to AI?
I’ve wanted to be a software engineer for as long as I can remember. Something about the never-ending cycle of approaching something new, not knowing how to make it work, learning, and finally conquering was almost addictive.
However, lately I’ve been feeling that my job hasn’t felt as rewarding as it once did. I burnt out, found myself not finding passion in what I did, even in side projects where I got to choose the latest and shiniest experimental concepts, I just wasn’t enjoying myself.
I walked back on the timeline and started wondering… “Is AI the reason I can’t find joy in this anymore?”. The timescales coincided, and it’s something I’ve been leaning on more and more often. So I explored this option, and it turns out it may very well have been a big part of what contributed to this ultimate boredom in a landscape that I found exciting consistently for years.
The problems AI brings
I’m not a software engineer
The first realisation is that I’ve relied on it to a point where often I find that I’m not a software engineer. I’m a project manager for an AI that gives me inconsistent results. Or a glorified “copy and paste” machine. Sure, I triple check the output to make sure it makes sense and I know what is going on, but I don’t get to exercise my creativity when AI does this task for me.
Skills atrophying
The more I rely on an LLM to generate code for me, the less I get to exercise my skills. Similar to when you haven’t done any physical exercise for a while, your muscles will end up weakening and you feel like you’ve lost some fitness.
Skills end up wilting, and that feeds an underlying anxiety that if I were left without it I’d find myself with impostor syndrome or unable to complete the simplest task.
I’m not learning anymore
AI massively takes away from the requirement of learning. When using AI to solve your problems, whether they are bugs, or new features, it takes away from the opportunity to figure things out. Which also doesn’t help in the long-run. Because now problems have much less of an impact as they seem “easier” to fix, you stop asking yourself questions like “how do we prevent this from happening going forwards” — the type of questions that improve your quality and work as a software engineer.
Also, when problems are reduced to a simple prompt to an AI, sure it may be quicker to find a resolution, but with it becoming a simpler task you completely lose that sense of reward that comes from overcoming a difficult challenge.
As an analogy, it’s a lot more rewarding running 26 miles than it is driving the same distance.
Projects lose elegance
LLMs aren’t consistent in their code output, and have a few questionable tendencies. It’s almost like if you bought a house, and you had a dozen different people pick out furniture for it. Sure, you’ve got all the furniture, and can live in the house, but it never ends up feeling like it’s yours, you don’t feel totally comfortable in it.
If you don’t implement pull requests either, it’s easy to just copy and paste something into your codebase, check it works, and lose all knowledge about how a particular bug was fixed, or feature was implemented. It’s an incredibly slippery slope.
Potential solutions
I’m yet to find a good solution for this. AI can be addictive — after all it does save you time, and increase your productivity massively, even though it’s at the expense of morale and, often times, quality.
Limiting AI assistance
The first and most obvious answer is to limit your use of AI tools when at work or working on your side project. For example, I’ve come up with the following framework that I’ll be trying out:
Use AI when:
- The task is purely mechanical (writing documentation, tests, reviewing code, etc.)
- Dealing with syntax in languages you rarely use (and don’t have an interest in working in)
- Working in completely unfamiliar territory and need a starting point (but commit to understanding what it is it’s doing)
- Challenge approaches (is this the best way to implement something? pros and cons of different approaches)
Don’t use AI when:
- You’re writing something that needs to be maintained
- There is a problem-solving process
- You’re working on business logic or making architectural decisions
- You have a gut feeling that tells you “unless I fully understand this, it will become messy”
- AI gives you solutions that feel wrong or not elegant enough
In conclusion, allow AI to help you explore perspectives and approaches, and automate some of the boring stuff, but don’t allow it to make any implementations. You are responsible for your own work — make sure you implement it to the highest standard. Use AI as an assistant, not a worker.