How Often Should We Sharpen Our Tools?
tratt.net
tratt.net
Shell Bling Ubuntu was partly formed out of running through this a few times. Every tool that is included in the 3 scripts is a tool I found persisting beyond a full Season of Famine, and therefore it gets my recommendation. https://github.com/hiAndrewQuinn/shell-bling-ubuntu
Ventoy is a great tool for those that need multiple bootable images handy, but even then, I have to pare down the images on it, at times, because when I find a handy image, I tend to just throw it on the Ventoy drive.
Neither applies to the problem at hand. The problem at hand, as others have pointed out, is about switching tools.
I switched from decades of using emacs because stretching for key chords started to hurt my hand. I went to vi. It was a pain for a few days because my hand-brain had memorized emacs. After about a week, I was able to do simple things without errors. A few weeks after that, it started to be fun and I got to the point where I could work as easily as I had in emacs. And then, owing to plugins, I started to get more productive.
Here's my advice for folks switching to vi: get a medium-sized postit note and write a couple of common key sequences on it. Add new sequences as you need them, but don't bother for things that you only do once in a while. After a few days you'll need to tape the note down, because you have been removing it repeatedly to add new things. Use tape to hold it down. After a few weeks you won't need the postit note. But spend an hour or so each week reading up (or viewing videos) about vim things -- not things you need, but things that interest you. This hour is your long-term investment.
As for configuration, I wasted a heck of a lot of time on that (in both vim and emacs). A few months ago I switched to lunarvim, which is a neovim that comes in a state that already has a ton of things I want. That's my advice for anyone switching to vim ... go past it to neovim, perhaps trying lunarvim as your variant. (There are other variants, and I've not explored them. I did some web searching and it seemed as though lunarvim was well regarded. All I can tell you is that I feel no need to switch.)
> I switched from decades of using emacs because stretching for key chords started to hurt my hand
:D
EDIT: also, if I were to concentrate on sharpening these kind of tools, i.e. software, editors are not close to the most important tools I use. More important are version control, debugger, profiler and data transfer tools.
But what he is talking about is _changing_ tools. I actually do not have a good analogy to tool sharpening while programming, the only one I could think of is fixing errors or warnings as soon as your LSP (or whatever) displays them. Or refactoring code as soon as possible (although too early does cause problems).
Examples are: 1. Creating templates inside your tools. Like any jetbrains ide. This has literally saved me years of time in laguages that have more boilerplate like java. 2. Configuring your tools to your usage patterns, using plug-ins or extensions.
Once done, I could do something like generate my style of code in keystrokes. If I found myself making something more than once that isn't reasonably abstractable, I often made templates, plug-ins or infra.
This can also be extended to something like if I know I am going to be configuring some type of system a bunch and I anticipate the technical/business needs changing a bunch, I'll spend the time to create a fluent configuration interface for it and it saves me TONS of time in the future.
I've considered writing a post called "software analogies considered harmful" but it would basically be what I just wrote.
* working explicitly to be better at what you do, * including being better at using the tools you need for your work.
I will call the above "improving" as opposed to "business as usual". Business as usual would be doing your work (developing code, meeting with clients, etc.)
My answer is:
You should improve as much as you can get away with without hurting your experience from performing business as usual.
The rationale is that over time, people who improve more should, theoretically, outpace people who do not improve or are slower at it. With one important note, than experience of doing work is itself an important component of improving.
Personally, I spend about 2:1 improving vs doing work and have been for past couple decades. Thanks to so much improving I did in the past, I can do a lot of work in short time. Frequently, this is just about knowing what to do instantly with least effort. And a significant component of my value is being able to answer hard questions and solve difficult problems or even just being available to do those. I don't even need to do a lot of work to bring value -- just being available is a lot of help for people I work with.
Now, coming back to "sharpening our tools". There is quickly diminishing returns from being able to use an editor or IDE or email client better. I have observed some people being extremely productive with things like PowerPoint or Excel to make instant presentations or simulations. So some tools have different rate of the diminishing returns also depending on your job (probably more useful to be better at Excel in finances than in software development, duh!)
I think it is important to understand that being good at the low level tools becomes kinda less important as you get more experience. As you get more experience, your experience is going to be the most important tool to do your job well. Does my 80wpm typing speed help me? Probably lets me input more email or code or documentation in shorter time. Does it make my emails or code or documentation better? Probably not much or not at all -- most of the time is spent gathering thoughts anyway.
Yes and:
> ...makes the whole experience of using your computer feel much easier and more pleasant...
IIRC, the (mostly insufferable) NNGroup determined the feeling of speeding up when using keyboard shortcuts (vs mousing) was mostly an illusion (at least for WIMP UIs).
And to your point, if keyboard (or whatever) helps gain and maintain flow state, I'd score that a win.
(Further, is a placebo that works, even when you know it's just a placebo, still a placebo? Hmmm.)
I can write code just fine in ed. (Don't ask...) However, it saps away my will to live in about 15-30 minutes max.
I am probably faster in vim (or Sublime, or VS.Code, or...), but not by much. But it's a much more enjoyable experience, and I can devote some extra mental space to the problem at hand instead of the tool.
If you think in hours, then you should be able to schedule any two 20 hour tasks to a single engineer in the same week. But if those tasks require high vigilance, the developers will say no and refuse to budge. Fuck your math, I won’t agree to those.
That balking could be due to deep work, vigilance due to foot guns, or coordinating a task that takes 8 hours spread over three days with lots of hurry up and wait steps. I can’t and won’t work on three of those at a time, and every time I forget and volunteer myself for that shitshow I/we pay the price.
You want a trivial task to fill in the holes, and Gantt charts don’t know that.
OK, wow, now I have the same thoughts as the author. How long would it take just to look at say the ColorScheme section or Utility section of that document?? It really makes me pause and think "too many choices lead to larger levels of inertia against change". I know I can just go and grab a neo-vim and look up a specific plugin, but it does make me wonder if we are overwhelming the tech/programming community with choices.
> Migrating from Vim to Neovim looked like it would take almost as much time as migrating from NEdit to Vim, but with many fewer benefits
This puzzles me a bit, for me the biggest obstacle was looking up how to make NeoVim use the .vimrc file and figuring out how to exit terminal mode.
The biggest annoyance I have faced so far is also causing issues in Vim: NeoVim adopted a configuration for .zig files that auto-formats the entire file every time it gets saved, without asking. On top of that it automatically invokes the zig compiler to show bright orange compiler error messages in the status bar, again without asking. Vim seems to have gotten the same treatment but the call to zig fmt fails, resulting in an error message each time I save a .zig file. Before that I'd only gotten issues like that from optional third-party plugins.
It's disappointing, so far I've been using (Neo)Vim exactly because it was one of the rare tools that don't do this kind of thing.
One could say there are many lessons analogous to life, and digital work, in the process (and probably even more that aren't).
I think one of the key principles is that sharpening symbolises the leveraging of past-developed wisdom - similar to the 'standing on the shoulders of giants' idea. It's not me who discovered that rubbing my blade over a succession of grits [no, not the eating kind, USA-ians!] gives me the means to get a lot more done with my time. But it'd be my peril, my loss, were I to ignore or trivialise that key wisdom provided by others.
7ps - Proper Planning and Preparation Prevents Piss Poor Performance
That's not how it works. You get the same amount of work done, but with less precision, a less good finish and more errors (and more accidents). Because you need more power to force the dull blade (or whatever) into/through the wood (or whatever).
Not necessarily. I work with a lot of legacy spaghetti code with many layers of unnecessary abstractions which requires navigating through the code a _lot_. I have set up my IDE and toolset to make it easy and fast to navigate through the mess. Whereas some of my coworkers haven’t and getting to the same result takes much longer. This is just one way that tools can actually speed up your work to get more done.
That changed after I spent far too many frustrating moments looking for a 12 mm wrench and losing my train of thought to backtrack my steps.
I hit a stride when I learned to organize my tools and keep them organized between tasks. It’s still obvious to me now because I have friends who don’t work this way, and I feel overwhelmed when I go into their garage or kitchen and all work surfaces are covered in tools, knives, unopened boxes, etc. I need to actively expand mental energy to ignore those things.
I also think that there is a place for sharpening one’s tools just for its own sake
Everyone forgets this. I use Vim, GNOME, Arch and other less common toolchains because they are fun and hackable. I KNOW they make things harder for me, but I also program and design for a living and it is my primary vocation. I BETTER have fun using my tools.