[HN Gopher] The role of developer skills in agentic coding
___________________________________________________________________
The role of developer skills in agentic coding
Author : BerislavLopac
Score : 94 points
Date : 2025-03-26 11:24 UTC (11 hours ago)
(HTM) web link (martinfowler.com)
(TXT) w3m dump (martinfowler.com)
| bob1029 wrote:
| > supervised agent
|
| This is the trick. Human in the loop, not human hiding in an
| ivory tower after uttering a single command. This is ~effectively
| what I see a lot of shops doing right now:
|
| "Clean up the codebase please. Apply best practices :D. OH. By
| the way, heres a laundry list of 100 things to NOT do: <list
| begins>".
|
| I get a lot more uplift out of use cases like:
|
| "Please generate a custom Stream implementation that is read-only
| and sources bytes from an underlying chunked representation. Mock
| the chunk loading part. Primarily demonstrate the ReadAsync
| method and transition logic between chunks."
| usrbinbash wrote:
| Here is how I use it: As a writing assistant that lives in my
| IDE, and as a very very cool and sophisticated rubber duck that
| can answer me.
|
| Something I do quite a lot is throwing back and forth a
| discussion over a particular piece of code, usually provided with
| little to no context (because that's my task to worry about),
| hammering it until we get that functionality correct, then
| presenting it with broader context to fit it in (or I simply do
| that part by hand).
|
| Here is how I don't use it: As an agent that gets broad goals
| that he is supposed to fulfill on its own.
|
| Why? Because the time and effort I have to invest to ensure that
| the output of an agentic system is in line with what I actually
| try to accomplish, is simply too much, for all the reasons
| outlined in this excellent article.
|
| Ironically, this is even more true, since using AI as an
| incredibly capable writing assistant, already speeds up my
| workflow considerably. So in a way, _less agentic AI empowers me
| in a way that makes me more critical of the additional time I 'd
| have to invest to play around the quirks of agentic AI._
| decompiled_dev wrote:
| I think of the modern developer being more like a shepherd rather
| than a builder now. You have to vibe with the machine, but you
| need to make sure they stay on easy terrain and give them
| structure instead of letting them simply free graze.
| jvanderbot wrote:
| I'm surprised to not see an obvious one (for me): Use AI around
| the periphery.
|
| There's very often a heap of dev tools, introspection, logging,
| conversion, etc tools that need to be build and maintained. I've
| had a lot of luck using agents to make and fix these. For example
| a tool that collates data and logs in a bespoke planning system.
|
| It is a lot of generated boilerplate off the critical path to
| build these tools and I just don't want to do it most days.
| mjr00 wrote:
| > 15k LOC codebase
|
| I wish articles about AI assistance would caveat this at the
| start. 15k LOC is a weekend hackathon project, which is all well
| and good, but not reflective of the work that 99% of developers
| are doing in their day jobs.
| jstanley wrote:
| I, too, habitually write 7500 lines of code per day.
| mjr00 wrote:
| For a brand new project that you're trying to get done in a
| weekend--aka a weekend hackathon project--it's very doable.
| Would not recommend committing 7500 lines of code per day at
| your day job though.
| ariwilson wrote:
| If you work 8 hours a day on Saturday and Sunday and each
| line has on average 40 characters, then on average you have
| to type about 5 characters a second to hit 7000 lines of
| code.
|
| There's some heavy assumptions about boilerplate or
| autogenerated code going on in that estimate, as I don't
| think very many average 5 characters a second over 16
| hours.
| Zanfa wrote:
| 40 seems way too much. "}" alone probably makes up a
| significant portion of lines. Another thing is auto-
| complete that does the majority of typing anyway.
| Jtsummers wrote:
| In English, the average word length is 5 characters. If
| you can type 60 WPM that means you're typing on average
| at least 300 characters per minute or at least 5
| characters per second (at least because this is not
| counting the needed whitespace and punctuation). That
| makes it technically possible for a moderately capable
| typist to pull off 7000 lines in a day using your
| numbers. Pair that with IDEs and autocomplete and it
| becomes much more feasible, if you have a solid
| understanding of the objective for your code.
| jchw wrote:
| The two assumptions that aren't quite right are the
| number of characters per line and the number of hours per
| day. For most work it's hard to spend more than four to
| six good hours per day just doing actual work; but when
| kicking tires on a hobby project, it is easily possible
| to stay engaged for an unhealthy amount of hours in a
| row.
| drbojingle wrote:
| I write 1000 lines of code per second, bud. It's called
| ctrl+c and ctrl+v. In all seriousness, with
| autocompletion, snippets, and AI, I don't think you can
| measure this accurately in the way you're doing it.
| mjr00 wrote:
| Haha, I appreciate the math, fair enough. We can change
| the caveat to "it's a project you worked on every weekend
| for a few months" if that helps. The point still stands
| that 15k LOC doesn't represent the type of codebases
| worked on by companies that employ multiple full-time
| software developers, much less long-lived enterprise
| codebases (which is Fowler's famed area of expertise,
| ironically).
| flir wrote:
| "all work and no play makes jack a dull boy" x5 = 30 secs.
| x7500 = 12.5 hours.
|
| honestly, i don't see it. don't you stop to pee?
| CuriouslyC wrote:
| I'm sorry but unless you count framework bootstraps for
| models and configs and stuff like that as "coding" nobody
| is legitimately writing 7500 lines in a day. At my most
| productive, powering through real problems, debugging
| issues and making stuff solid, I've hit ~3500 with marathon
| code sessions and ChatGPT. I've seen industry leaders and
| competitive coders in action, and none of them were
| significantly faster - any speed difference is more due to
| taking fewer incorrect solution paths.
| materielle wrote:
| Everyone is missing the point. Fine, maybe the math is
| off and it took 3 days instead of 2.
|
| The issue is that Cursor tends to be demoed for
| incredibly small, green, and simple projects.
|
| Most of us are working on codebases with at least over 10
| million lines. I would love an AI agent that can massive
| infrastructure migrations with only a bit of oversight.
| Didn't Shopify do something like that recently?
|
| I think this is still an area that needs a lot of work.
| CyberDildonics wrote:
| Post your github
| orphea wrote:
| The message you're replying to is sarcasm.
| bob1029 wrote:
| 15k LOC is an entire enterprise SaaS product in the ecosystems
| I frequent.
| marginalia_nu wrote:
| Yeah especially in the context of multiple contributors, 15k is
| so small it's almost hard to do collaborative coding (apart
| from pair programming).
| 38 wrote:
| you seem to be projecting your own experience rather than
| giving an accurate representation of developer productivity -
| 15k is not the norm at all or even close to it.
| zeroonetwothree wrote:
| Maybe 2-3 week project would be better to say. But yeah it's
| quite small.
|
| The industry average seems to be around 100 LOC per day per
| developer. So if you have a team of 10 that's only 15 days of
| work. Once you're involved in some existing legacy code base
| it's likely in the millions.
| timdellinger wrote:
| I find that I have to steer the AI a lot, but I do have optimism
| that better prompting will lead to better agents.
|
| To take an example from the article: code re-use. When I'm
| writing code, I subconsciously have a mental inventory of what
| code is already there, and I'm subconsciously asking myself "hey,
| is this new task super similar to something that we already have
| working (and tested!) code for?". I haven't looked into the
| details of the initial prompt that a coding agent gets, but my
| intuition is that an addition to the prompt instructing the agent
| to keep an inventory of what's in the codebase, and when planning
| out a new batch of code, check the requirements of the new tasks
| against what's already there.
|
| Yes, this adds a bunch of compute cycles to the planning process,
| but we should be honest and say "that's just the price of an
| agent writing code". Better planning > ability to fix things.
| hnuser123456 wrote:
| There are certain pieces of text that appear right before some
| of the greatest pieces of code ever written. For example, we've
| all heard of NASA code requirements. If you get the LLM into
| the "mindset" of a top-tier professional developer before
| getting it to spit out code, the code quality will reflect
| that. If your prompt is sloppy and poorly defined, you'll get
| copy-pasted StackOverflow code, since that's how most SO
| questions look. If it's stupid but it works, it's not stupid.
|
| The hard part is that finding a local optimum for prompting
| style for one LLM may or may not transfer to another depending
| on personality post-training.
|
| And whatever style works best with all LLMs must be approaching
| some kind of optimum for using English to design and specify
| computer programs. We cannot have better programs without
| better program specifications.
| yaj54 wrote:
| Can you share some examples of these certain pieces of text
| and greatest pieces of code?
| hnuser123456 wrote:
| Well, if you want safety-critical code, you could have the
| LLM read this before asking it to write its own code:
| https://ieeexplore.ieee.org/document/1642624
|
| GP was pondering about code re-use. My typical use involves
| giving an entire file to the LLM and asking the LLM to give
| the entire file back implementing requested changes, so
| that it's forced to keep the full text in context and can't
| get too off-track by focusing on small sections of code
| when related changes might be needed in other parts of the
| file.
|
| I think all of this is getting at the fact that an LLM
| won't spit out perfect code in response to a lazy prompt
| unless it's been highly post-trained to "reinterpret"
| sloppy prompts just as academically as academic prompts.
| Just like a human programmer, you can just give the
| programmer project descriptions and wait for the
| deliverable and accept it at face value, or you can join
| the programmer along their journey and verify their work is
| according to the standards you want. And sometimes there is
| no other way to get a hard project done.
|
| Conversely, sometimes you can give very detailed
| specifications and the LLM will just ignore part of them
| over and over. Hopefully the training experts can continue
| to improve that.
| skydhash wrote:
| This is one of the reasons I never needed to use LLMs. In any
| given codebase where you're experienced enough in the language
| and the framework/platform/libraries, more often than not,
| you're just copy-pasting code, or tab-completing (if you're in
| an IDE). The actual problems are more often solved on the sofa
| and with a lot of reading, then trying out hypothetical
| solutions.
| ikerino wrote:
| I use Cursor for most of my development these days. This article
| aligns pretty closely with my experiences. A few additional
| observations:
|
| 1. Anecdotally, AI agents feel stuck somewhere circa ~2021. If I
| install newer packages, Claude will revert to outdated
| packages/implementations that were popular four years ago. This
| is incredibly frustrating to watch and correct for. Providing
| explicit instructions for which packages to use can mitigate the
| problem, but it doesn't solve it.
|
| 2. The unpredictability of these missteps makes them particularly
| challenging. A few months ago, I used Claude to "one-shot" a
| genuinely useful web app. It was fully featured and surprisingly
| polished. Alone, I think it would've taken a couple weeks or
| weekends to build. But, when I asked it to update the favicon
| using a provided file, it spun uselessly for an hour (I
| eventually did it myself in a couple minutes). A couple days ago,
| I tried to spin up another similarly scoped web app. After ~4
| hours of agent wrangling I'm ready to ditch the code entirely.
|
| 3. This approach gives me the brazenness to pursue projects that
| I wouldn't have the time, expertise, or motivation to attempt
| otherwise. Lower friction is exciting, but building something
| meaningful is still hard. Producing a polished MVP still demands
| significant effort.
|
| 4. I keep thinking about The Tortoise and The Hare. Trusting the
| AI agent is tempting because progress initially feels so much
| faster. At the end of the day, though, I'm usually left with the
| feeling I'd have made more solid progress with slower, closer
| attention. When building by hand, I rarely find myself
| backtracking or scrapping entire approaches. With an AI-driven
| approach, I might move 10x faster but throw away ~70% of the work
| along the way.
|
| > These experiences mean that by no stretch of my personal
| imagination will we have AI that writes 90% of our code
| autonomously in a year. Will it assist in writing 90% of the
| code? Maybe.
|
| Spot on. Current environment feels like the self-driving car hype
| cycle. There have been a lot of bold promises (and genuine
| advances), but I don't see a world in the next 5 years where AI
| writes useful software by itself.
| Aurornis wrote:
| > It feels like my AI agents are stuck somewhere circa ~2021.
| If I install newer packages or more recent versions, Claude
| will often revert to outdated packages/implementations that
| were popular four years ago.
|
| My experience is the same, though the exact dates differ.
|
| I assume LLMs gravitate toward solutions that are most
| represented in their training material. It's hard to keep them
| pulled toward newer versions without explicitly mentioning it
| all the time.
| spwa4 wrote:
| But they can't really be low-latency if they have to search
| for new versions ... and that makes such a big difference in
| how usable they are.
| dkarl wrote:
| > At the end of the day, though, I'm usually left with the
| feeling I'd have made more solid progress with slower, closer
| attention
|
| Does you think this feeling reflects the usual underestimation
| we're all guilty of, or do you think it's accurate?
| ikerino wrote:
| In terms of absolute progress (e.g. towards finishing a
| feature or MVP) I think it it could have to do with a usual
| underestimation (optimism) for timelines.
|
| I'm using Cursor mostly for exploratory/weekend projects. I
| usually opt for stacks/libraries I'm less familiar with, so I
| think there's some optimism/uncertainty to account for there.
|
| I think there's another aspect to progress involving
| learning/becoming fluent in a codebase. When I build
| something from scratch, I become the expert, so familiar that
| later features become very easy/obvious to implement.
|
| I haven't had this experience when I take a heavily agent-
| driven approach. I'm steering, but I'm not learning much. The
| more I progress, the harder new features feel to implement.
|
| I don't think this is unique to working with AI. I guess the
| takeaway is that attention and familiarity matter.
| osigurdson wrote:
| Is Martin Fowler now just renting out space on his website?
| Apocryphon wrote:
| What are you referring to?
| Jtsummers wrote:
| GP was apparently unaware until now that martinfowler.com has
| basically been a blog/article hosting site (though more in
| the highly curated sense than a generic hosting site, more
| akin to a trade publication) for the last couple decades and
| that not all the content is written by Martin Fowler himself.
| The author of this piece is Birgitta Bockeler.
| onionbagle wrote:
| right!? It was a little misleading that the article was written
| by someone else. (Birgitta Bockeler)
| GiorgioG wrote:
| Great, so now instead of spending 8 hours writing code, I spend 8
| hours "steering" an AI to write the same code. What a fucking win
| (for the AI companies and no one else.)
| woah wrote:
| Then don't
| johnjungles wrote:
| I actually think that most problems that took 5-20 mins are now a
| few minutes and it's more about how many of those intense minutes
| and loops you're going through.
|
| Also, right now engineers are hyper optimized in the code aspects
| but not thinking about the context into cursor and context out of
| cursor.
|
| Like the amount of copy paste from Notion / JIRA / Sentry and the
| amount of output like summarizing the git commits and PRs, slack
| and other "over communication" you have to do these days. This is
| the area I think we can more easily automate away.
| adamgordonbell wrote:
| Lack of reuse AI-generated code sometimes lacks
| modularity, making it difficult to apply the same approach
| elsewhere in the application. Example: Not realising
| that a UI component is already implemented elsewhere, and
| therefore creating duplicate code. Example: Use of
| inline CSS styles instead of CSS classes and variables
|
| This is the big one I hit for sure. I think it's a problem with
| agentic RAG, where it only knows the files it's looked in and not
| the overall structure or where to look for things, so it just
| recreates them.
| jillesvangurp wrote:
| I use LLMs for various purposes in day to day development. I
| don't use any of the tools mentioned in the article because I'm
| using intellij and don't want to replace a tool that has lots of
| stuff that I use all the time. But aside from that, it's good
| advice and matches my experience.
|
| I've dabbled with plugins for intellij but wasn't really happy
| with those. But ever since chat gpt for desktop started
| interfacing directly with jetbrains products (and vs code as
| well), that's my goto tool. I realized that I like being able to
| pull that up with a simple keybinding and it auto connects to the
| IDE when I do. I don't need to replace my tools and I get to have
| AI support ready to go. Most of the existing plugins seem to
| insist on some crappy auto complete, which in a tool that offers
| a lot of auto complete features already is a bit of an anti
| feature. I don't need clippy style autocomplete.
|
| What matters here is the tool integration, not the model quality.
| Better tool integration means better prompts with less work and
| getting better answers that way.
|
| Example: I run a test, it fails with some output. I had this
| yesterday. So I asked, "why is this failing" and had a short
| discussion about what could be wrong. No need for me to specify
| any detail; all extracted from the IDE. We ticked off a few
| possible causes, I excluded them. And then it noticed a subtle
| change in the log messages that I had not noticed (a co-routine
| context switch) that turned out to be the root cause.
|
| That kind of open ended debugging is a bit of a mixed bag.
| Sometimes it finds stuff. Mostly it just starts proposing
| solutions based on a poor analysis of the problem.
|
| What works pretty reliably is:
|
| - address the TODOs / FIXMEs, especially if you give it some
| examples of what you expect
|
| - write documentation (very good for this)
|
| - evaluate if I covered all the edge cases (often finds stuff I
| want to fix)
|
| - simple code transformations (rewrite this using framework X
| instead of Y)
|
| I don't trust it blindly. But it's generally giving me good code
| and feedback. And I get to outsource a lot of the boring crap.
| marstall wrote:
| Yes I find chatGPT/Jetbrains (RubyMine) in my case is the most
| usable setup I've encountered.
|
| It's like Rubymine is "home" for me - and chatGPT's macOS
| client has become another "home" for me so it's quite
| convenient that they talk to each other now.
|
| I have a little FOMO about Cursor though. ChatGPT will
| automatically apply its suggested changes to my open editor -
| but I have the sense Cursor will do a bit more? Apply changes
| to multiple files? And have knowledge of your whole project,
| not just open files? Can someone fill me in
| fasteddie31003 wrote:
| I've been playing around with vibe coding and I think a lot of
| the issues brought up could be fixed by an architecture
| abstraction layer that does not exist today. My idea would be
| something like an architecture-graph (Archigraph working title)
| that would recursively describe how an application works or
| should work. Then when an agentic coder is doing a task they can
| easily see the bigger picture of how an application works and
| hopefully writing better code. Anyone interested in working on
| this with me?
| ferguess_k wrote:
| I don't really like AI in IDE. I don't want them to think for me.
| Code completion and Intellisense is good enough.
|
| That said, I think there are 3 items that are important:
|
| - Quickly grasp a new framework or a new language. People might
| expect you to do so because of AI's help. 2 weeks might be the
| maximum, instead of the minimum. The same for juniors.
|
| - Focus on the real important things. So instead of trying to
| memorize a shell script you are going to use a couple of times
| per year, maybe use the time to learn something more fundamental.
| You can also use AI to help you to bootstrap the learning. If you
| need something for interviews, spend a week to memorize them.
|
| - Be willing to exclude AI from your thought process. If you rely
| AI on everything, including algorithms and designs, this might
| impact your understanding.
| all2 wrote:
| - Be willing to exclude AI from your thought process. If you
| rely AI on everything, including algorithms and designs, this
| might impact your understanding.
|
| Most of the time I'm using AI for problem space mapping (I'm
| doing dirt simple CRUD dev right now) and decomposition. It's
| ok at that, but even the deep research mode of Claude leaves
| some things to be desired.
|
| I feel like an editor now, more than an engineer. I know the
| kinds of things I'm looking for, and I use AI to walk a
| solution in. Either I use the output of the LLM as-is (for
| throwaway stuff) or I use it as a jumping off point for my own
| work _without_ the AI.
| ferguess_k wrote:
| >I feel like an editor now, more than an engineer. I know the
| kinds of things I'm looking for, and I use AI to walk a
| solution in.
|
| I agree. I think it's fine to do so. I usually prefer to
| write my code without AI (except for bootstrapping it).
|
| In my work as a DE, I mostly use AI to write scripts for me.
| For example, how to do this in PySpark? I kinda refused to
| memorize any of these because I'm simply not very interested,
| and I can always spend a week to memorize the fundamentals if
| I need.
|
| In my side projects, I use AI extensively. Same as you, I use
| AI for problem space mapping, or sort of. For example, I have
| some source code, how do I structure them better? I have read
| the MIDI standard and thought this piece of binary code means
| blah, can you please confirm for me? Well AI is OK for these
| kinds of work.
| giantg2 wrote:
| Even code completion has issues. It might get the structure
| right, but it usually doesn't understand the business logic and
| I end up switching out what codes/vars are being used.
| ferguess_k wrote:
| It's definitely possible. But in my case so far it's fine. I
| work as a DE so I only need the auto-completion to remind me
| what the column name is once I typed out the first few
| characters, because there are so many columns.
|
| In my side projects I mostly use C/C++ so auto-completion
| helps me to find a struct member or something similar.
|
| I guess it can become quite complicated when the projects
| becomes very large.
| aschearer wrote:
| I've been using Claude to help write a complex prototype for game
| dev. Overall it's been a big productivity boost. However as the
| project has grown Claude has gotten much worse. I'm nearing 15k
| lines and it's borderline more trouble than it's worth. Even when
| it was helpful, it needed a _lot_ of guidance from me. Almost
| more helpful as a "rubber ducky" and for the fact that it kept me
| from deadlocking on analysis. That said, discussing problems and
| solutions with Claude often does keep things moving and sometimes
| reveals unexpected solutions.
|
| If Claude could write the code directly unsupervised, it would go
| wild and produce a ton of garbage. At least if the code it writes
| in the browser is any indication. It's not that it's all bad, but
| it's like a very eager junior dev -- potentially dangerous!
|
| Imagining a codebase that is one or two orders of magnitude
| larger, I think Claude would be useless. Imagining a non-expert
| driving the process, I think Claude would generate a very rickety
| proof of concept then fall over. All that said, I wish I had this
| tool when developing my previous game. Especially for a green
| field project, it feels like having access to the internet versus
| pulling reference manuals -- a big force multiplier.
| svilen_dobrev wrote:
| i have mentored a few people to become Programmers. Some for
| months, some for years. It's like teaching someone to ride a
| bycicle. Hand-holding first, then hand-guiding, then short
| flights, then longer... Different people pick stuff at different
| pace and shape.. but they do learn.. if they want to.
|
| What i completely miss in these LLM parrots-agents-generators, is
| the learning. You can't teach them anything. They would not
| remember. Tabula rasa / Clean slate, every time. They may cite
| Shakespeare - or whatever code scrubbed from github - and concoct
| it to unrecognizability - but that's it. Hard rules or guardrails
| for every-little-thing are unsustainable to keep (and/or create)
| - expert-systems, rule-based no-code/low-code.. has been
| unsuccessful for decades).
|
| Maybe, next AI wave.
|
| And, there's no understanding. But that also applies to quite
| some people :/
| ebiester wrote:
| Consider rules for projects. It's not always perfect, but it
| does adapt based on my instructions.
|
| For example, I have had good success in test first development
| as a rule. That means that I can make sure it has the
| specifications correct first.
| owebmaster wrote:
| LLMs don't learn but agents do. You just need to insert that
| new knowledge in the prompt.
| myflash13 wrote:
| Developer skill is obviously still essential -- you can't steer
| if you couldn't drive. But what about developer energy? Before AI
| I could only code about 2 hours per day (actual time spent
| writing code) but with Claude Code I can easily code for 5 hours
| straight without breaking a sweat. It feels like riding an e-bike
| instead of a bicycle. AI genuinely feels like Steve Jobs analogy
| of a bicycle for the mind -- it doesn't replace me but now I can
| go much farther and faster.
| senbrow wrote:
| The ebike analogy is perfect!
|
| You still have to pedal, steer, and balance, but you're much
| faster overall.
| ENGNR wrote:
| The opposite of vibe coding, when the agent craps out and you
| just do it manually = Artisanal coding. Yeah I can get on board
| with that.
___________________________________________________________________
(page generated 2025-03-26 23:02 UTC)