On editing text
Here I assemble a bunch of things I believe, and find myself repeating, about text editors.
- Learning how to use your tools well is one of the two or three most underrated skills in software.
- It's also one of the most underrated skills in computer usage (and by extension modern life).
- It's very hard to learn from authority here, because (i) tool fitness is idiosyncratic, (ii) feelings get involved, and (iii) knowledge of an ecosystem is hard-earned but short-lived and often more local than one appreciates. (In this respect, advice about software tools is a lot like parenting advice.)
- More specifically: many people will say that you are not A Real Programmer or A Real Writer until you know [some tool]. That is not true.
- You can achieve large productivity gains from improving your use of a text editor.
- But be kind to yourself. Learn in a backward-compatible way. Do not shame yourself for, e.g., using a mouse even after you get a taste of the power of keyboard shortcuts.
- I think PyCharm is great. I used it for a long time and will probably go back to it during coding sessions when I'm likely to need advanced refactoring support.
- But I'm loving Vim these days for nuts-and-bolts coding--it's so fast.
- And although PyCharm, like other modern IDEs, is a wonderful language-specific coding tool, I fear I was using it as a mediocre operating system.
- E.g.: tab-completion doesn't work for me in its terminal. I've looked through some forums. Do I really want the burden of knowing stuff about the PyCharm terminal? Enough of my brain is consumed with knowledge about terminals. Once I chose not to use the integrated terminal, some fraction of PyCharm's functionality was not relevant to me. Similar things happened with the debugger, version control integration, and so on.
- That said, I do not intend to maintain an extensive .vimrc. The extensibility of Vim is a sneaky weakness: it tempts you to bind your knowledge of a very secure, long-lasting tool to a bundle of ephemeral, indifferently tested ones. (You know that bit in "Sailing to Byzantium" where the narrator notes that his soul is "sick with desire / And fastened to a dying animal"?)
- I'm increasingly convinced that the trick to choosing the right development environment is (i) not allowing learning about it to suck up too much of your time but (ii) giving yourself permission to learn progressively more about it without frustration. For a long time learning things about PyCharm felt like time well spent and learning about Vim felt like time spent badly. Now it's the opposite.