logoalt Hacker News

Fix your tools

168 pointsby vinhnxtoday at 4:12 PM59 commentsview on HN

Comments

nicboutoday at 4:48 PM

The caveat is that you might end up shaving a yak.

More often than not I end up three or four tasks deep while trying to fix a tiny issue.

https://m.youtube.com/watch?v=_UZFI-8D5uA

show 6 replies
highfrequencytoday at 5:19 PM

Engineering is a continual lesson in axe-sharpening (if you have 6 hours to chop down a tree, spend the first 4 sharpening your axe).

My favorite framing, from Kent Beck: “first make the change easy, then make the easy change.”

show 5 replies
sfinktoday at 9:52 PM

Excellent advice. I try to follow it in my daily work, with some success.

Excellent follow-up advice: now stop fixing your tools, and go fix your actual problem instead. I try to follow it in my daily work, with noticeably less success.

umairnadeem123today at 9:42 PM

biggest lesson i learned here: all-in-one tools that promise to handle your whole workflow are almost always worse than stitching purpose-built ones together.

i tried every no-code automation platform (make, airtable, n8n) for a content pipeline i was building. they all break the moment you need to run it more than twice a day at any real scale. weird rate limits, silent failures, state management nightmares.

ended up just writing python scripts that call APIs directly. less "elegant" but infinitely more debuggable. the fix-your-tools moment for me was realizing the tool itself was the problem -- sometimes fixing means replacing with something simpler and more transparent.

show 2 replies
semiinfinitelytoday at 6:43 PM

> The very desire to fix the bug prevented me from seeing I had to fix the tool first, and made me less effective in my bug hunt

Kenneth Stanley's book "Why Greatness Cannot Be Planned: The Myth of the Objective" is dedicated to this phenomenon

unkulunkulutoday at 5:19 PM

Using the debugger to understand/read code is invaluable. Seeing live stacks is so powerful compared to static analysis.

show 1 reply
wangzhongwangtoday at 5:38 PM

Totally agree with this. I spent way too long fighting my dev environment last month before I finally sat down and properly configured everything. The ROI on fixing your tools is insane - what took me 2 hours of yak-shaving per week now takes zero.

The hard part is convincing yourself it's worth the upfront time. There's always "real work" that feels more urgent than fixing your build script or editor config.

show 1 reply
didgetmastertoday at 6:36 PM

It's not just the tools, it is your tests. Most times you encounter and fix a bug, your first question should be 'Why didn't my tests catch this?'

show 1 reply
stivikivitoday at 4:48 PM

This is the reminder I needed. For some projects the python LSP I am using in Neovim just breaks sometimes. Always so frustrating when I start fuzzy searching instead of just jumping to a declaration or restart it.

bergheimtoday at 5:44 PM

If you like what you just read you should probably never install Emacs.

You're welcome.

yegletoday at 5:57 PM

My friend once told this joke:

> "A good programmer, when encountering a debugger bug," he paused, cleared his throat, and said solemnly: "should immediately drop the program they're debugging and start debugging the debugger instead!" The auditorium once again erupted in thunderous applause.

maccardtoday at 6:16 PM

I aim for the Boy Scout rule - always leave things better than you found it. It’s always a balance and you have to not lose the forest for the trees. Always ask what is the end goal, and am I still moving forward on that.

show 1 reply
cloverichtoday at 6:52 PM

If you're still dipping your toes into an LLM world, this is an excellent place to begin. I helped with a deploy at work the other day, we have some QA instructions (Notion). I pointed the LLM at one of the sections, asked it to generate task list for each section, and once that looked good, had to convert the processes into a set of scripts. The latest models make short work of scriptable stuff that you can use for debugging, testing, poking, summarizing, etc.

doctorhandshaketoday at 7:26 PM

My version of this is ‘always be toolin’, but then of course one must use judgement lest it be better to just get on with it.

chihuahuatoday at 5:24 PM

Ugh, this brings on flashbacks to when I had to work with Ruby, and the *** debugger would break with every single release. The RubyMine IDE that 45% of the company used was based on some bizarre custom Ruby gems to enable debugging, and that crap would take a month to be fixed by JetBrains. 10% used VSCode where debugging would sometimes work and sometimes not.

r1ckatoday at 4:44 PM

"Give me six hours to chop down a tree and I will spend the first 4 sharpening the axe"

show 2 replies
d--btoday at 5:25 PM

Also, FYI: Claude is very good at fixing tools

show 1 reply
wofotoday at 4:21 PM

OP here, thanks for submitting!

show 2 replies
mentalgeartoday at 6:02 PM

"first we shape our tools, then our tools shape us"

adriaanmoltoday at 6:42 PM

Next time use AI.