Tools matter
11/19/2009I thought " Tools don't matter " was interesting but it drew the wrong conclusion. Tools matter a great deal.
My brothers and I also played a lot of games growing up. Like the original author, we'd also try to get the best weapons. We called it "gun shopping." Unfortunately, running around the map looking for weapons from fallen players was a great way to get killed.
Wasting time looking for the ultimate IDE has less drastic consequences, but this is not an industry that allows for a lot of spare time. Developers always have something bigger and better to do, and there are always anxious users waiting.
While not wasting time searching for the "one true" tool is good advice, don't draw from that the idea that tools somehow make no difference. What does matter is productivity once you've reached mastery of a tool. They're not all equal.
All major IDEs have a lot of depth. You can be crazy productive if you master any of them. But anybody can be a master of nano in about 10 minutes and there's not a lot of extra productivity to find. It's a great simple tool, but there are better editors for more complicated tasks. And as much as I like Netbeans, I reach for Emacs for just about anything that doesn't end with ".java".
Still struggling to convince himself, the author then veers into a discussion about operating systems I found laughable.
Most programs sit on a tall stack of software. A program written in a high- level language can be quite a distance from the hardware. Every library, every runtime, everything added to your program is like a layer on a cake. The higher it is, the more likely it is to fall down.
Every once in a while it'll make the news that some air traffic controller is still using Windows 98, or that some Navy destroyer hasn't yet moved off NT4. I doubt many would still say the tool doesn't matter. Most would agree that they're fucking crazy.
That's one of the great things about Unix design philosophy. Often it's just you and the kernel. There's as little as possible in the way. I never worry about a broken browser hosing my server application. A loss of one component to the system doesn't crash the whole box. Nobody needs unrestricted local admin rights just to start a service. It's not news that Windows is a towering layer of wobbly components prone to frequent falling.
Tools matter because any failure in that long line of abstractions can take out your entire program. Of course you can do useful things with Windows. But it's not near the rock-solid foundation that I want to build on.