Hacker News new | ask | show | jobs
by marcus_holmes 2 days ago
This is so important. I've seen so many fellow technologists (and I've skated this myself) obsess about their setup to the point that they're spending more time on that than the actual thing they're building.

The whole "90% of my time as a coder is spent typing, so I should optimise my ability to type fast" is so, well, wrong. 90% of our time should be spent thinking, and most of that reading.

12 comments

> The whole "90% of my time as a coder is spent typing, so I should optimise my ability to type fast" is so, well, wrong. 90% of our time should be spent thinking, and most of that reading.

Any software engineer who proclaims "90% of my time is spent typing" does not understand two fundamental industry axioms:

  Software is the manifestation of a solution to a problem.  
  Define the problem which needs to be solved.
  
  When making software, remember that it is a snapshot of 
  your understanding of the problem.  It states to all, 
  including your future-self, your approach, clarity, and 
  appropriateness of the solution for the problem at hand.  
  Choose your statements wisely.
"Coding", when performed at the appropriate time, is little more than reifying a solution to a problem already understood. Also known as "a typing exercise."

All of this is to say; I agree with your position.

Both of you are describing a "waterfall model" of coding, where you conceive of the solution in its entirety before simply writing it down. I don't know if everyone else works this way, but I don't. I prefer to try things in the code and use those attempts to guide and refine my understanding. With the latter approach, being able to quickly and easily modify code is essential because it shortens the testing loop.

Edit: From GP:

> 90% of our time should be spent thinking, and most of that reading.

Reading what though? I assume you mean reading code. If you're reading code, being able to navigate through it quickly is important to maintaining context in your head. If the tool you're using makes navigation hard, it's easy to lose track of what you're doing. Obviously this can be taken to extremes, but spending some time investing in being able to navigate a codebase quickly is not wasted effort.

This is just my opinion so maybe im describing something other than what you are observing.

This was me, until I got AI. Now im building cool stuff that I never would have built (but also slowly destroying what little skill I had and not knowing much about the underlying code). Of the code I do know about well, I am fixing and improving my old code and being amazed (but probably not deeply learning) with new tricks and techniques. The focus on setup to me was always my mind playing a trick on me. The AI reduced the "hump" I need to cross so I just try it. Its really another form of perfecting your setup.

Focusing on the setup for some might be a way to avoid the hard thinking part that comes with immense practice and focus. Its a hump everyone has to cross. It comes easier to some but not others. I remember doing exactly this when I was unemployed traveling Europe wanting to get into a software engineering role after being boxed into a QA testing role for years. I was a CS grad and did this same stuff in college to my detriment(thats how I ended up in QA I guess). I paid for InterviewCake and spent countless days in European hostels and cafes doing nonsense like perfecting my setup or editor instead of focusing deeply on the problem set. This might also be a symptom of ADHD. Recently started medication and the immense change in productivity has recently made me weep that I wasted half my life doing things like perfecting my setup instead of actually doing something.

I think the downvotes are for saying positive things about AI. HN doesn't like that ;)

And yes, messing about with skills is the new messing around with setup. It's a rabbit hole.

I'm a massive, massive, believer in The Cult of Done [0] especially "the point of being done is not to finish but to get other things done". Allowing myself to finish something badly so that I can move on to the next thing was a game-changer for me. And, of course, I found out that it doesn't have to be what I would call perfect for others to appreciate it. Getting something shipped is way, way more important than getting something perfect, and often my procrastination around the fear that it wasn't perfect was stopping either.

[0] https://medium.com/@bre/the-cult-of-done-manifesto-724ca1c2f...

> Now im building cool stuff that I never would have built (but also slowly destroying what little skill I had and not knowing much about the underlying code).

Are you building it if the LLM does it? I'd say the negative reaction comes from this.

You are anthropomorphizing LLMs. They are just tools and cant build anything. He is responsible for the code, he built it.
> And yes, messing about with skills is the new messing around with setup.

I’ve been watching this play out at work. The people messing about with skills are invariably the people who have least impact on the actual shipping product. I suspect they hope that somehow, they’re going to hit on the magic formula that makes them productive.

I'd say the downvotes are for: "No fuckin' shit we can just AI." This is clearly an article about the (and I can't believe I'm saying this) "classic" style of programming from, like, a few years ago. This is clear as day. There is not a single person here who doesn't realize this.

If you really must bring up AI here, a more relevant comment would be how you may over-complicate your AI workflow, over-focus on promots, or something along those lines.

There's also the dissonance between actual productivity and perceived productivity. Being fluent in vim/emacs to navigate code may feel you're hacking the matrix etc, but that in itself does not mean you're productive. Spending a morbillion tokens on orchestrating a dozen AI agents may make you feel like God, but it doesn't mean whatever they're building actually works or solves a problem. etc
Paul Graham writes about this in an essay on procrastination.

Procrastination doesn't have to mean time on the couch, the person that keeps their house 'unreasonably tidy' is also procrastinating, albeit in their own special way, with feather duster and bleach. Yet they feel productive, plus there is that 'cleanliness is next to godliness' feeling after everything is spotless.

We have to guard against this with our coding setup, for example, I know people that have organised folders for their outbox emails. Management were impressed, however, I was quietly grumbling that real work needed to be done. Hence I search rather than organise email, to rarely impress management.

I like the 'contractor's desk' where there is just the laptop with no personal items, with the laptop having the default interface, wallpaper and terminal windows.

This is how I feel when I ctrl-click something to jump to definition and a vim user tells me they can easily do the same thing by navigating to it with the arrow keys and pressing some obscure combination.
> 90% of our time should be spent thinking, and most of that reading

I don’t know if that’s accurate for most of us, who are simply humble CRUD app developers.

What are those supposedly easy CRUD apps that you are working on? The most CRUDy platform I worked on (it was really a collection of forms and lists) was packed full with integrations to external services. To create a new page, you just had to copy and paste. But to bring in the actual feature requires to write multiple files of business logic and more integration modules to third parties.
My experience with CRUD backends is that you get bogged down in really convoluted business logic and abstraction layers, and most of your time is neither spent writing or thinking, but debugging. (Of course debugging involves thinking, but it requires you to step around, print, inspect, and explore how data flows, rather than exclusively thinking up new solutions). And in my opinion, debugging is easier if you can faster navigate your code and more quickly type or edit small changes.
It's 2026. There are no such developers. LLMs haven't solved programming (yet), but they have solved the common CRUD apps perfectly.
90% of our time should be spent waiting for Claude to ask permission for something then!
Or waiting for your limits to reset ...
Or waiting for Claude's outages to clear up.
Its kind of funny but non technical people imagine coders to only be productive when they are typing away like those typical "hacking into the mainframe" scenes. I actually made a satire art thing on this where it was a fake news release that companies are going to start making engineers dance when the ai agent is coding to "improve spirit" but meanwhile they use that data to create training datasets for their upcoming dancing bot
> 90% of my time as a coder is spent typing

> 90% of our time should be spent thinking

Thinking and typing often happen at the same time. Its much easier for many people to reason about a problem by writing and changing the code, and it's also why LLMs can significantly reduce code understanding even if you read everything they wrote.

> 90% of our time should be spent thinking, and most of that reading.

Not sure about you, but I do a lot of thinking by typing code...In fact, I think it would be very hard to think without actually typing code..

I don't think this is exclusive to coding. Even general ideas are refined if one tries to put them in writing.

I literally can't do this.

I used to smoke a lot, and every time I went to smoke outside I'd think about what I was coding and find some stupid mistake just from thinking about it away from the keyboard.

Now I go for a walk and 9 times out of 10 it's the same, I write better code because I thought about it away from the keyboard.

This also works with vibe coding, I find - I think of better approaches to the codebase when I'm not in front of it

Yea, that works for me as well. But I can't do that from blank state. I need to be walking away from a long coding session for that to work.
Yea, I get the empty page curse if I just think and think about something.

Scaffolding a shitty solution end to end lets me see the whole path and gives me something to ground my thinking with.

It's easier to polish a turd than to make a diamond out of nothing. =)

I think for me customizing my setup isn't time away from "real tasks" - I do the customization when I don't feel like doing the work or I'm doing some background thinking on how to proceed in the real task. It's an interesting way to keep my mind warmed up for programming through times when I'm not in the mood, and I'd guess 80-90% of the customization is waste of time, but the ones that I end up sticking with can be really useful and save time/effort dozens of times per day
> This is so important. I've seen so many fellow technologists (and I've skated this myself) obsess about their setup to the point that they're spending more time on that than the actual thing they're building.

https://www.youtube.com/watch?v=urcL86UpqZc&t=112s

Occasionally it spills out to the codebase with the phenomenon of the Senior Linter Developer.
> The whole "90% of my time as a coder is spent typing, so I should optimise my ability to type fast" is so, well, wrong.

This is somewhat misguided thinking in that, while very true that people who care more about their setup than getting actual work done do exist, "Optimizing for typing" really means: "optimizing for how quickly you can get back to thinking."

I've seen some experienced programmers use simple editors extremely quickly and others use IDEs very slowly. This short article does not dive into things like: "Does Bob need to right-click his mouse in the right place and choose 'split vertical' or does he just make that shit happen in an instant?" I've done a lot of pair-programming in my career and many people, even if they are good developers, feel like I'm watching my boomer parents use a computer.

Of course, in the end your output is all that matters (which I realize is the argument of this article), but there is definitely something to being able to use your tools of your choosing efficiently (which it sounds like Bob does).

> 90% of our time should be spent thinking, and most of that reading.

Three or four years ago I landed on a desktop that let me keep my tiling but never think about placement. It took a few disconnected days to get it just right, but I haven't changed more than the occasional line in the config since.

I hate thinking about configs now. My config lets me glide through using my computer without much thought, which IMO should be the point of configuring one's setup, so you don't have to think about it. People comment how fun it is to watch me navigate when I'm in a flow(mad at the computer). Sadly, with wayland taking over, my setup isn't long for this earth and I'm dreading the level of effort I'm going to have to put in to get a remotely comparable setup.

The biggest drawback of wayland/hyprland/etc is just how much bullshit one has to wade through for a working desktop. I don't want to learn desktop rendering just to have a dynamic wm that can open a file picker. I rather give an attacker my login creds than drop x11 at this point.