, , , ,

AI (LLMs) and Software Engineering (Writing Code)

I recently wrote on my Substack (Data Engineering Central) about how I used the new OpenAI o1 model to do some basic Data Engineering tasks surrounding PostgreSQL. It did ok. I’ve also been using CoPilot and ChatGPT for over a year now to assist me with my daily code that I have to write for one reason or another.

In my opinion, it has been, at the same time, both wonderful in terms of efficiency and speed at which I can move, but also horrible and frustrating at how poor a job AI (LLM) does at writing anything buy mediocre and easy code.

I think at this point I use it mostly as a glorified auto-complete, and to assist me with writing unit tests, or at least laying out the structure to do that. I still have mixed feelings about it all. I see a lot of popular people in the Software world hating on it, and others loving it. I find myself right in between, probably as it should be.

What I’ve learned using AI to code for over a year in my daily dev cycle.

I’m just going to bullet point my random thoughts about how it’s gone using AI for coding for well over a year. You make your own decisions.

  • It appears, on the surface, to make developers more efficient, at least in the short term.
  • It can only do an “ok” job at basic coding tasks.
  • It still struggles with context at large.
  • It can take many prompts to get LLMs to produce usable code for a single function to work properly.
  • It will stunt your growth and learning when you rely on it daily.
  • Eventually, you will pay the price for the aforementioned sin.
  • LLMs suck at Data Engineering tasks more than general Software Development.
    • probably because Data Engineers have generally sucked at using Git for the last 10 years.
  • Having LLMs generate ideas on how to solve a problem can be a better use of time than asking it to produce working code.
  • Most likely you should jump on the LLM bandwagon in your workflow because it’s probably here to stay.
    • aka … humans are generally lazy

I’m not sure what else I have to say on that subject right now. I am a fan of devs using some sort of LLM/AI in their daily workflow, mostly because I think it’s here to stay for the long run so you probably shouldn’t fall behind. BUT, at the same time, I am a fan of you LEARNING and UNDERSTANDING what you are doing and why.

Honestly, it’s never been the code that an Engineer writes that makes them priceless, it’s the non-programming skills combined WITH good programming skills. The ability to learn, listen, plan, make tradeoffs, etc.

Will AI take over writing code for us? Probably not in your lifetime I would guess. Will it get integrated into every single dev tool, and will LLMs become the new IDE? Probably.

Being able to translate business requirements into technical requirements, make tradeoffs, do system design, upskill team members, etc. You should be focusing more and more on those skills anyway. The only thing that AI will probably do is make LeetCode irrelevant, which isn’t going to make anyone cry I don’t think.

I for one won’t cry if a LLM takes my job. Maybe I will finally get to move to the woods to live on the land after all.