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.
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.
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 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.
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...
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.
Are you building it if the LLM does it? I'd say the negative reaction comes from this.
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.
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.
I don’t know if that’s accurate for most of us, who are simply humble CRUD app developers.
> 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.
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 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
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. =)
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).
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.