A lot of us love to configure our tools. It makes us super efficient. At least we hope it does. Sometimes it’s just procrastination, but in most cases we really want to achieve something. We want to be faster. Type less. Have more time for the important things. Don’t want to enter that long command again and again when we could alias it to one character. Or bind it to a keyboard shortcut.
But there are consequences you have to think about when you change your configuration.
Most of you now think of something like this:
@laktek i don't like to change the default settings on any computer. i like to be able to start fresh with minimal fuss.
There is another consequence that is even more problematic. Your pair should be able to use your computer (or the same shell as you) without struggling too much. If you change your keyboard layout to dvorak and remap every setting in your editor, you might be more efficient in what you do, but your pair will have problems using that highly specialized setup.
This breaks the “keep your pair happy” rule.
In a big way.
Or to put it in a more egocentric perspective: you loose the ability to work on other computers that don’t use your current setup.
Do I think that you should never change the default setting of your system? No. But you need to think about the implication of each change you do on your system.
For me it comes down to four basic questions.
Has this change implications for my pair?
If this change is in an area I don’t touch while paring, it’s okay to add. E.g. Mail.app settings, (most) browser extensions etc. .
Is there a way I can do this without problems for my pair?
If the change is in an area I use while pairing, it should not interfere with the usual behavior. Don’t remap a command to another one that is doing something completely different. For example aliasing grep with ack. Usually you can create another “namespace” for your new way of doing things. If this is not possible:
Can I add a switch to deactivate this setting?
You love that new configuration that might confuse your pair? Than add a “pairing” mode where these settings are deactivated. But don’t forget to ask yourself:
Do I cripple myself?
This is the most important question. You should know how to use a system with the default settings. That means you should know how vim works before you configure the hell out of it. And you need to remember those ways for your pairing session. If you learn a new tool, always try to learn it with it’s default settings first. If you memorize them, you can try to optimize for speed. But never loose the ability to go back to those defaults.
Some companies have company wide dotfiles. For example thoughtbot. I would call this a “dotfiles” by committee approach. If everyone can agree on a subset of setting, pairing is easy because everyone has the same setup.
And yes, I had to learn all this the hard way. But now I am 99.5% pair compatible. I switched back to zsh, added a keyboard layout switcher, a way to start vim with a plain vanilla setup and installed Sublime.
Sadly the reasoning above led me to the decision that I should not build a vim foot pedal, even though I really love the idea of having one :neckbeard: