The Pitch
Maybe you’ve worked with them. Maybe you saw them in a hacker (or Hackers) movie. You know the type. Fingers flying on the keyboard, weird UI on the screen that doesn’t look like yours at all, windows showing up for seconds, always filling the whole screen, always showing the right information. Always the right tool at hand, every action a shortcut, every command an alias, always doing just the right thing. Idea to shell to editor to shell to passing tests in seconds, faster than the untrained eye can follow.
From the outside, it just looks like that person is typing really fast – and
they probably are. It may feel like they’re just more experienced – and they
might well be. But that’s not the real source of magic. The real power comes
from a toolbox that has the right tool for whatever you want to accomplish.
Where each tool is sharpened to an edge that can split a TCP stream in two.
There’s no need to think about where each tool is, or how to use it, because of
plain old practice. Just like the guitarist of your favorite band doesn’t
consciously think about where to put their finger for that next chord, you
shouldn’t need to think about whether to use sed or ngrep. After a point, it
becomes muscle memory.
Not to mention: if you know what you want to do exactly, you have an easier time finding the right tool. If you have a variety of tools, you have an easier time pattern-matching and realizing what exactly it is you want to do. It’s a virtuous cycle.
That’s what a customized development environment feels and looks like, at its
best. At its worst, it’s fighting obscure bugs and weird systems. It’s finding a
bug tracker showing your exact problem as WONTFIX from six years ago.
Somewhere in the middle is research, hard work, mindfulness, a special mindset,
hard work, obsession with details, lots of learning, and some more work – though
the work feels more like play.
This book aims to show you a path that leads to the good parts, without getting bogged down in the bad parts, no matter how much time you have to invest. At its core, putting in the effort to improve your development environment is spending time you can spare, to be more efficient when you don’t have any time to spare (say, when fixing an outage). Even when you’re not in a crisis, effortlessly and efficiently using your tools cuts down on context switches, helping you stay in the flow.
It’s a frustrating, joyous, fumbling, exciting journey through blogs, bug trackers, manuals and, dotfiles. I’m glad you joined the trip.