Coding is when we're least productive
59 points
12 hours ago
| 13 comments
| codemanship.wordpress.com
| HN
shalmanese
3 hours ago
[-]
At the end of the week, if you suffered a hard drive crash and all of your recent code got erased, how quickly could you recreate it? That's how much of your week was spent coding. The rest of the week was spent transforming you into the person who could code the thing you coded.

Contrast this with a chair maker. If at the end of the week, their chair got thrown in a woodchipper, some significant fraction of the next week would be in unavoidable labor making the exact same chair.

This is the fundamental difference between these two activities that gets abstracted away when we both think of them as "labor".

reply
michaelsalim
2 hours ago
[-]
I see where you're coming at. But don't underestimate the amount of design work that goes into making a good chair. It probably took more time than your think, which transforms them into the person who can craft the chair
reply
mathgeek
2 hours ago
[-]
Yes, but that is part of the point: a chair being built is mostly distinct from a chair being designed (there is of course a small amount of design that is done while building). Software is designed at a much higher percentage while being created (or if you prefer, there is a cycle between the two states).

You also don’t often learn why you don’t need a chair while building one.

reply
shalmanese
1 hour ago
[-]
> or if you prefer, there is a cycle between the two states

Yes, what I mostly emphasize with this mode of thinking is that the act of building software is primarily there to transform people (you try a thing, it doesn't work like you think it would, that inspires you to try another thing) and the software at the end of it is largely a byproduct.

If you have the right people-state, producing the software is trivial, it's how do you port the right knowledge into their brains in the first place and and software should be just another tool in your toolbox towards that aim.

reply
bluGill
2 hours ago
[-]
Chair makers do not make one chair - they make one for the whole family. Then they make more in a very similar style for the next family. There is very little new design in a chair - it has all been done.
reply
strogonoff
1 hour ago
[-]
We don’t order bespoke-design chairs because construction is expensive, so we adapt to available chairs. In a world without construction-related scarcities and mostly design expenses (think sci-fi with that so far unachievable ability to manipulate the reality on molecular level), a chair can be feasibly created for specific personalities of yourself and others in given circumances, possible context in which you might use it, the interior it would fit in, etc.

In software, this kind of construction scarcity does not exist. Once you design a chair, you can instantiate it to your heart’s content.

reply
amelius
28 minutes ago
[-]
True, except when the chairmaker has to make many times the same chair it becomes less relevant.
reply
hnthrow0287345
19 minutes ago
[-]
>I’ve seen so many times how 10 lines of code can end up being worth £millions, and 10,000 ends up being worthless.

I don't care how easy it is, I'm not fixing something worth millions when I won't see a penny of that. It's on the business to double check their shit.

reply
Nevermark
6 hours ago
[-]
Coding is when we carefully write down our solution to a problem.

(Manager pushes paper, pen and a list of problems in front of you and demands, “Now write, just write! And fast!”)

reply
nixpulvis
1 hour ago
[-]
First of all I just want to say, I completely agree with the main point of this post, and argue for more full-lifecycle discussions on a regular basis at every job I've had.

With that said, I partially disagree this block:

> When I’m heads-down-coding, I’m not seeing, I’m not asking, and I’m not learning about the problem. To do that, I have to get up from my desk, go to where the problem is and/or the people I need to ask are, and have a conversation.

There are two types of problems when developing software. The problem of figuring out what you want to do, and the problem of figuring out how to do it.

These often impact each other, either because a limitation on what you can do changes what you end up trying to do, or because you learn something new about the use case, like this post describes. But keeping these two problems separated in your mind, at least for a time, is what lets us focus and find solutions.

reply
cjfd
4 hours ago
[-]
E.W. Dijkstra: "Measuring programming progress by lines of code is like measuring aircraft building progress by weight".

Personally, I think, much of the art of programming is to do as much as possible with as few lines of code as possible.

reply
sedatk
4 hours ago
[-]
That’s Bill Gates’, not Dijkstra’s.
reply
bryanrasmussen
3 hours ago
[-]
measuring aphorism worth by attribution is like architecture about drowning.
reply
bot403
6 minutes ago
[-]
To be fair there was no value judgement there, just a correction in attribution.
reply
embedding-shape
4 hours ago
[-]
Agree, and even better solution some times: no code at all.
reply
solumunus
4 hours ago
[-]
There’s more to it than that though. The solution using the least possible lines is often inscrutable and brittle. The art is in finding the right level of abstraction which can deliver the performance required while being sufficiently legible. Depending on the specific problem you have to weight your solution accordingly, if performance is critical you must often forfeit legibility. The art is in recognising and dealing with trade offs.
reply
polyamid23
4 hours ago
[-]
„Managers aim to maximise the amount of code their dev teams produce, and so they maximise the time devs spend writing code.„

Never seen that happen. Do not know anyone who experienced this. Where and who are those managers?

reply
vjvjvjvjghv
3 hours ago
[-]
At my team deleted code is the best code.
reply
bowsamic
4 hours ago
[-]
Same, when I do pair programming with my boss he’s very happy if we managed to remove more code than we added
reply
softwaredoug
2 hours ago
[-]
One way hand coding is productive is it gives you detailed intimate knowledge of the code. We’ve all seen someone that really knows a system hear about a bug and say “Aha!” and take 5 minutes to pump out a fix.

A well setup Claude Code, with good guardrails and feedback, could possibly do this (we’ve seen examples of it for sure). But it also might loop idiotically not finding the issue.

reply
sublinear
2 hours ago
[-]
Can you link to any examples of Claude quickly debugging a codebase it didn't write using a nontechnical description of a bug from a real user?
reply
none2585
27 minutes ago
[-]
I closed six bugs last week doing precisely this. They were minor issues but impressive nonetheless.
reply
mr-ron
1 hour ago
[-]
All the time i do it. I will often provide claude with read only credentials to the db or api access to the logs and it will nail the problem almost every time
reply
shinycode
1 hour ago
[-]
Some codebase are a logical mess and have bad names as well. Sometimes Claude is wrong because the semantics of our legacy codebase doesn’t makes sense. Sometimes it find problems at the wrong places because of that.
reply
soanvig
5 hours ago
[-]
Oh, that must be fun to be hired by the client directly... I wish each my programming job was not an ivory tower :(
reply
hahahahhaah
4 hours ago
[-]
I think the ivory towers because managers mostly manage by how much of the plan can we ship. It is too radical to have developers take time from that to talk to customers which is a shame for the developer, customer and business.
reply
wiseowise
5 hours ago
[-]
So the only anecdote you could find from your long career is one example at the start of your contracting? What the hell with all those low quality shite talking about code this, code that?

> Founder of Codemanship Ltd and code craft coach and trainer

Ooh, it’s all coming together.

reply
torginus
3 hours ago
[-]
I feel one upshot of AI coding is that people finally recognize 5 layer enterprise architectures for what they are - useless slop whose purpose is to make solutions more 'professional' and complicated to make the people who write them feel smart, inflate costs and personnel needs and sell consulting on how to solve problems with 5x more code than necessary.

The extra code doesn't encode any requirement.

On the other hand, these couple-hundred line, crappy spitballed together solutions that actually still do what is needed (and are usually are hand-written, LLMs aren't known for brevity) are vindicated.

reply
xg15
2 hours ago
[-]
There are lot of useless, self-serving abstractions out there (looking at you, Spring and Angular)

There is also a lot of useful abstraction that ensures you can more easily understand the system - and that sneaks in orthogonal features such as monitoring and robust error handling, that managers aren't happy to allocate much time for but that prove their worth once the system is actually running.

It's possible, LLMs now offer a different way to solve the same problem, because the cost of adding those orthogonal features now approaches zero jueas quickly as working on the rest of the code. ("Add logging, please"). So it is possible that a lot of frameworks that did provide real value in the past will become obsolete with LLMs.

On the other hand, if you look at stuff like Gas Town, then it's clear people will still revel into inventing crazy architectures full of arcane terminology, independent of how much it's actually needed.

reply
testing12_12
4 hours ago
[-]
Coding is the result of intense productivity... or was. Hm.
reply
gethly
6 hours ago
[-]
Coding is the 5 minute result for an hour of thinking.
reply
vjvjvjvjghv
3 hours ago
[-]
How do you define “coding”? In my mind the thinking is part of coding.
reply
none2585
24 minutes ago
[-]
I like to say "coding is just typing"
reply
shinycode
3 hours ago
[-]
Many non-dev people think LLM does the thinking and the typing. That’s where the misconception comes from as regards to LLM replacing completely developers I guess
reply
Imustaskforhelp
2 hours ago
[-]
> That’s where the misconception comes from as regards to LLM replacing completely developers I guess

The misconception also arises because Ai companies use the word thinking and everything else too which is what the general population says and then this just gets caught on by Engineers too.

When we say reason/think/etc. all the hype created by AI definitely gets a boost imo.

Do we say these for a lack of a better term or was it intentional that we say reason/think?

reply
BrenBarn
4 hours ago
[-]
This is one reason I always roll my eyes when people talk about how vim keyboard bindings are so great because you don't have to move your fingers from the home row. The actual action of typing text is a small part of the process of coding.
reply
oldestofsports
36 minutes ago
[-]
Writing code, notes, diagrams and now also AI prompts is certainly a big part of my work
reply
aidos
2 hours ago
[-]
Vim recognises that the typing text is a small part of coding by defaulting to a mode in which you can’t even type :)

For me, vim is a nice way to navigate code. It’s really fast to jump from place to place so I can explore quickly and build an understanding.

reply
thefaux
2 hours ago
[-]
Just because it is small doesn't mean that it isn't important.
reply
sevenzero
4 hours ago
[-]
Depends on how you work I guess. I explore solutions through coding different versions of some algorithm, sure I could theorycraft as well but I am stronger by just writing code and see if it runs. I type a lot so vim motions help me a ton.
reply
mr_mitm
3 hours ago
[-]
Is anybody claiming it makes you more productive at writing code? I just find it more convenient and more comfortable.
reply
Imustaskforhelp
2 hours ago
[-]
Theoretically, isn't the fact that you are being more convenient and more comfortable likely to increase your productivity too?
reply
emil-lp
2 hours ago
[-]
Roll your eyes if you want. A professional takes tools seriously, that includes key bindings and shortcuts.

Yes, it's not the time it takes to type that's the matter, but once you're in the zone you need to stay there without any resistance.

reply