Eliyahu Gluschove-KoppelI was in the middle of writing yet another job application (#internship-grind) when one of friends messaged me telling I should just use an LLM to write it for me. My immediate response, as it is to most LLM related things, was “AAAAAAAA ughhhhhh I have feelings™️”1, prompting the reply “That’s not very 10x mindset of you” along with a link to an article from where he’s doing an internship. I jokingly replied “yeah I’m a 0.1x developer” (prompting the idea for this post), and then spent the rest of the day making a working compiler from scratch.<br>The 10x developer<br>As far as I can tell, the idea of the 10x developer originated in a 1968 study, which found that speed differences in various programming related tasks varied by 10x or more between individual programmers. The term then came to describe the kind of programmer who would plug away in isolation, suddenly creating some amazing project that was seemingly impossible for one person to do on their own.<br>At least for solo work, this sounds like something to strive towards. So why did I instantly have such a negative reaction to it?<br>With the rise of LLMs and “vibe coding”, at least to me, it feels like the meaning has instead shifted towards a programmer who prioritises rate of code production over every other possible attribute. And this just doesn’t sit right with me. I’m not writing code just for the sake of churning out code. I’m writing code because I enjoy the process of writing it. I enjoy puzzling out a nice clean solution. I enjoy learning new approaches to problems, or how common tools work. Maybe this is different because I’m only working for myself rather than professionally and this’ll come across as old guy yelling at clouds, but oh well.<br>Slowing it down by 100<br>Going back to the pre-LLM definition, the 10x developer feels like something that you could probably apply to my projects. Going back through my solo projects over the past 5-ish years, you end up with the usual assortment of Advent of Code, university coursework, and random scripts, and then come to compiler (twice), operating system (three times), along with 3 or 4 motorsport mechatronic projects that I juggled in parallel on top of full time schooling. Would these have been sped up if I got some agentic AI2 to do it for me? Probably. Would I have preferred to do it that way? Hell fucking no.<br>The vast majority of code I write is because I’m interested in the process of getting to the result. I want to make the typical pitfalls. I want to get stuck and give up for 9 months. I want to tear my hair out at compiler errors and segfaults. Because all of those make me a better programmer - they give me a better understanding of every step. No amount of thoughtless prompting would have taught me about memory safety as much as all the fuckups I made in C++. Nothing could’ve explained how an OS works at every level than just sitting down to write one. But maybe the most important factor, is that all those problems forced me to slow down and actually think.<br>All the big discoveries that I can think of off the top of my head were made because someone sat down and actually thought. Now I’m not suggesting that I’m going to suddenly formulate special relativity from a thought experiment in the middle of programming session, but any amount of human thinking is bound to generate more interesting novel ideas than prompting could. And this pays off in better code. I could write the shittiestly designed codebase, then point an agent at it and ask it to add some extra feature. It would probably attempt it, maybe actually do it, the agent wouldn’t care the codebase is shit, and I’d never realise.Admittedly they didn’t have LLMs to prompt instead, but to paraphrase an Instagram post I saw recently, LLMs are entirely trained on existing knowledge, and so trying to make any discoveries by plugging in experimental data would likely just come back with explanations for how it fits into the current theories, rather than giving anything profound. Though now I’m interested in the idea of training an LLM on data entirely before some major discovery and seeing if it can be prompted into coming up with it…<br>Contrast this with if I’m doing the entire process myself. I start tediously fighting whatever godforsaken API past me came up with, realise there must be a better solution, sit down and have a think, and end up with a more elegant and maintainable codebase. And then I’m happy, because I got to solve a problem, I got to spend time working on my project, and because my code is nice. Because what’s the point of doing a side-project if you don’t care about doing the project well? (And arguably, having a codebase that’s easy to work with in future provides substantially more productivity than any amount of spaghetti...