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".
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
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.
> 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, 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.
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.
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.
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.
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
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.
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.
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.
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.
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
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
> 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?
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.
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.
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".
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
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.
> 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, 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.
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.
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.
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?
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.
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
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!”)
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.
That’s Bill Gates’, not Dijkstra’s.
measuring aphorism worth by attribution is like architecture about drowning.
Agree, and even better solution some times: no code at all.
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.
„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?
At my team deleted code is the best code.
Same, when I do pair programming with my boss he’s very happy if we managed to remove more code than we added
Oh, that must be fun to be hired by the client directly... I wish each my programming job was not an ivory tower :(
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.
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.
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.
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.
Coding is the 5 minute result for an hour of thinking.
How do you define “coding”? In my mind the thinking is part of coding.
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
> 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?
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.
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.
Just because it is small doesn't mean that it isn't important.
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.
Is anybody claiming it makes you more productive at writing code? I just find it more convenient and more comfortable.
Theoretically, isn't the fact that you are being more convenient and more comfortable likely to increase your productivity too?
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.