I am a software engineer by trade. For the past ten years since I’ve been employed as one it has meant writing code. But being a software engineer is so much more than just writing code. It’s about problem solving and optimizing and making decisions based on available information. It’s about understanding best practices (or at least that such a thing exists) and designing a solution that not only works but works well given the contsraints.
This profession is one where I constantly have to learn. My computer science degree didn’t give me most of this knowledge, it’s mostly stuff I have taught myself over the years while actually working. What my degree did give me was an understanding of how to think like an engineer: how to break things down into their component parts. This is the basis of all code.
On a good day, I love it.
On a bad day, I’m hating my day job and looking to transition into a field far away from computers.
On most days I wonder about the state of generative “AI” and its impact on my field.
At work, the tools are ok. They are good at boilerplate or helping to explain errors. It’s a faster way to search out an answer to your problem, but it’s rarely the best option when trying to solve a problem. I remember a distinct moment when I was relying on Github Copilot in VS Code to solve a problem and the solution it came up with was so ridiculous I was forced to actually use my brain and came up with a quick and elegant solution. Of course, I used the AI to implement said solution, but it was only possible because I had given it the direction.
Most of the time though, the genAI at work is useless because as it is, the company’s code base is so convoluted that it is not much help beyond small localized changes. And that’s fine by me. It ensures that I have to actually think and use my programming skills.
Lately I’ve been working on a personal coding project and I’ve been experimenting with using genAI more. And honestly, it’s kind of worrying. I wrote a prompt for what my little application was supposed to do and it wrote up the starting point. I had to point out a security flaw for it, which it promptly corrected. For a while I was chugging along, trying to figure out how to make the changes that I wanted myself, forcing myself to search through HTML and CSS documentation to figure out what I needed.
Today I tried something different and had Gemini write the code for me. I would prompt it with the changes I wanted to make (so far only visual changes) and it would make the changes. I would reload the page, and seeing something I didn’t like, I prompted it again. The process felt more like I was a very micromanag-y designer. I knew what I wanted but I didn’t know the exact code to write to get me there.
I’m worried that this is what programming is going to be. I’m going to forget how to write my own code. I’ll rely so much on this thing that I’ll forget all the knowledge I fought so hard for in the last ten years. The rational part of me realizes that this is not true, of course. The overarching principles will stay the same, but the realistic outcome is that I will not be writing code anymore. Being a software engineer will be more like being a software architect: someone that understands what the code has to do and how it has to do it without actually writing any of the code.
I’m sure this is why people who have many interests will probably do well. I was able to successfully prompt Gemini while working on my project because I have a very clear idea of what I want it to look like and I have the visual understanding and an eye for detail cultivated over my many years of pursuing the visual arts. So in a way, it might mean that I get to do more of the creative visual work I had been yearning for (let’s set aside the question of who will employ me to do said work).
But what will I be losing? I had never considered myself a rockstar programmer. I was more always more multidisciplined, my strengths lying in all the other skills that a software engineer working in a company with other people needs to bring to the table. And in a way I get to develop that further I suppose. But I’m still scared to lose the programming skills. I had to work so hard to learn them that to give them up now feels like quitting, and not in a freeing way but in a “this will haunt me forever” sort of a way.
I’ve never really considered coding to be a particularly creative endeavor (though I’m working on that ingrained belief) and if people aren’t really the ones doing it anymore, what else are we losing? Coding is different than painting of course. There is an almost infinite number of ways to apply paint to a canvas, but even if your programming project vision is creative, there are only a few ways to actually make the computer execute that vision.
My husband pointed out that this directing of genAI already has people calling themselves software engineers. I think the proven dangers of vibe coding and calling yourself an engineer means that my ability to understand code is still very useful. I wouldn’t have known that the code Gemini generated for me had a security flaw if I hadn’t worked in the field for a decade.
But the sadness remains, and I’m starting to wonder if, despite my general dislike of the tech industry, I have still managed to attach myself to the “software engineer” label as a form of identity. Perhaps my anxiety about forgetting how to actually write code stems from the fact that writing code is how I have been defining myself as a software engineer and now that it’s changing I’m scared and pushing back.
In a way it’s a backward relief. I have spent most of the last ten years hating my work (they were mostly bad days) and so the thought of leaving it behind was a constant day dream. Now that I can recognize that I wouldn’t actually want to stop writing code and am worried about the prospect, gives me some hope about the anxious years I’ve spent leading up to now. The irony of course is now that I have realized I actually like programming, technological advances mean increasingly leaving that behind.
I could refuse to use the tools of course. I can read my physical HTML/CSS book and figure out how to code my vision by typing everything myself. It would be slow, at times painful. The friction would be the point. But with genAI I would be able to create that vision much faster. Perhaps in this case it’s worth it, to not intentionally backpedal.
I’ve got a lot of things to ponder on this, especially the journey vs destination question. Is learning HTML/CSS and Javascript the hard way what’s most important (ie: the journey)? Or is it seeing my coding project visions come to life (the destination)? I don’t know. I don’t have an answer for this.
I like to think of a TED talk I watched, where an old man told the moving story of his mother. About how when she purchased a washing machine, she was able to take him to the library a lot more often and how that changed the tragectory of his life.
But I also think about how the advent of all those new tools did not free up housewives, it just raised the standards of cleanliness to which they were beholden.
Our increased productivity has not resulted in decreased amounts of work, the expectations simply continue to rise.
No one but me will care that I learned HTML the hard way instead of using genAI. And if part of the point is that I am doing it to learn more frontend development as a way to slightly pivot but stay in the industry, it would certainly not be to my advantage to NOT learn the tools and see what I can make with it.
Wouldn’t it be worth it to write my code faster if it meant that I could take my kids on life changing trips to the library more often?