Up to 90% of my code is now generated by AI
techsistence.com
techsistence.com
LLMs are perfect for those who are at the beginner-level with some language, or with rather simple code that is not very business-specific, or solving/implementing tidbits that are isolated from the larger surface area of a product, or writing utility functions that do something that is well and simply defined, or the boilerplate of almost anything.
However, most of the time spent in programming is never spent on these stuff. They might constitute the largest percentage of the lines of codes written, but 90% of the time is spent on those other 10% of lines.
Give it a CSS problem like centering an object within a bit of a complex hierarchy, and it will go the rounds suggesting almost every solution that can be tried, only to loop back with the same exact confidence. I'd say, in certain cases, LLMs could be a time drain if you don't push the brakes.
Here’s what my personal experience: it’s been great at helping me understand things and converting stuff, which is both helping with learning about Rails as well as making progress would have been hard otherwise. It did much better at explaining than Rails documentation which I found lacking.
For example, I gave it large Go structs and it generated Rails generate commands to generate schema and XML serialization code. There was a little back and forth regarding foreign key relationships but “we” were able to figure it out.
I was even able to ask it for opinion on some table design, asked it to play the role of an experienced DBA, and it did great.
In short, it’s great if you know what you want to do at granular level, especially for new stuff. But, if I didn’t know what I know, I don’t think it would have worked.
Think of it like a calculator, can calculate what I tell it to calculate faster than me, but that’s it. But that in itself is huge.
I use it for the boring work like generating comments, basic algorithms, API endpoints, and naming stuff. Even with the need to double-check the output, it still takes a load off my brain.
> I have a habit of reaching for AI as the primary source of information, and I'm using Perplexity, Google, or StackOverflow less and less frequently.
In my experience, LLMs simplify and overgeneralize too much, lacking much of the context and insights from websites like stack overflow. I've been doing a lot of database work recently, something I'm not an expert in, and I've learned a lot by actually reading the actual source, not just blindly trusting the output of the AI. If I trusted AI as much as the author seems to, my database code would be much worse.
I look forward to the day when AI actually is good enough to generate 90% of my code. But as of today, it's just not.
If the guy generates 90% of his code with AI, do you think he's doing anything else without it? His writing is probably AI slop too. His "hero image" certainly is.
Is anyone else actually getting good results for code generation using LLMs?
Based on this I'm very against using it for things the user doesn't have significant knowledge of. Some coworkers seem to be having better success but I definitely get the sense they are reading and editing the results carefully. I don't find it that much if any of a productivity gain so I stopped trying for now.
Yes, you need to consider the AI as if it were a junior programmer that sometimes makes mistakes. I use it for boring work that can be quickly checked. For example, the other day I asked for a 'give me next workday' algorithm based on the code structure I had, and it worked fine.
It's just one more tool in the toolbox.
Also idk kinda tangent but you brought it up. I don't feel like my junior devs make easily found algorithmic mistakes like that. They're more likely to misjudge the scope of the problem or not be aware of a technical consideration or known solution. For that kind of work I'd rather... mentor a junior dev through it so they have the experience.
Like the author I am now writing 80% + of my code in chatgpt. Every now and then something pops up that it doesn't quite understand and I have to pick up my shovel and head back into the mines, but mostly with good prompting in chat gpt and preceding everything I write in my ide with a comment explaining what I'm doing copilot can do the rest.
It's a great tool in the way that google search once was, and programming IDEs are. But it takes some time to feel it out and see where it's useful and where it isn't, similar to learning how to google search and feeling out the opaque functionality in an ide.
At an AWS event last week there was a quote 'jobs aren't going to be replaced by ai. But people doing jobs without ai will be replaced by people with ai'.
1) Send a chat gpt request with the existing router code and describe in natural language the name of the new endpoint, what I need it to do, and any functions that I want it to use. 2) Read through it and check that the logic is ok. 3) Send a chat gpt request with the existing router tests and describe in natural language what endpoint I want to hit, and what I want the test to verify. 4) Check that the response makes sense and run the test. 5) Any errors either debug on my own, or iterate back and forth again with chat gpt.
We are still in the early stages of what it means to have an intelligent natural language system at our fingertips. For me, it means no longer really needing to bother with repetitive boilerplate code and test harnessing. This is a huge speedup for my professional workflow and a significantly more enjoyable coding experience.
Most of the time I just use it for getting started on features, small function, and debugging.
Copilot on the other hand works great and is a huge improvement in productivity, probably because it’s only writing short snippets while I’m doing the algorithmic thinking. It reduces the brain -> keyboard lag substantially.
Try to switch perspective from "write component ‘X’ and paste code without reading it" to "describe the problem, break it into smaller steps, generate code for each step, and iteratively work towards the final solution".
In the first case, LLMs can't do 90% of the work alone. In the latter case, it's different.
You could ask, "Okay, so that's still a lot of work generating code with LLMs," and you'd be right. But it's like having another programmer sitting next to you, helping tackle problems or time-consuming tasks, giving you more space to think about the actual problem.
So, “Up to 90% of my code is now generated by AI” doesn’t mean that only 10% of the entire software development process is left for humans. Writing code is just (obviously) one aspect of software development.
Why would you have it write comments? The core of most useful comments is understanding that's not directly reflected in the code (hence the comment), and things that capture your understanding of what you're doing.
Boilerplate comments are noise.
So for example if I start typing 'while' it will let me tab complete out the whole skeleton of that loop. For simpler things it even seems to be able to guess my intentions and actually populate the loop and its conditions.
As in the business case for the code existing? Like linking it to a specific requirement?
Thing is, that’s only the actual, written code. Theres still a bunch of hard work that goes into figuring out what to generate and verifying that it’s correct
Using LLMs to support code writing gives more space to deal with everything else, and that's the point.
Microsoft and Jetbrains are both introducing this tooling into their IDEs with Copilot and AI Assistant, but I still worry (I'm a naturally over-cautious person).
edit: to be clear, I'll ask it questions, just like everyone and their dog; but any sort of direct line / code completion; or "write me a method in Java that will do X, Y and Z" and then copy-pasting that 10+ line thing directly is not something I do.
And so you need to check every single line it creates, even when doing the most mundane tasks. Useful, and probably the source of 90% of my work in the "rough draft" stage, but I also have to read and grok all of that 90%, and fix the 80% that's just barely (or very blatantly) not right for the final draft.
> just do your own thing, but explore paths you've never walked before.
Yeah that's how people grow, no joke. It's kind of independent to the rest of the article shilling LLMs.