Proficiency: A high degree of skill; expertise.
If you're serious about becoming a highly skilled programmer, you will probably want to be extremely proficient with the keyboard.
Your job is to interact with the computer, and you interact with the computer using a keyboard (and if your first reaction is to say "and a mouse," then this article is definitely for you).
I apologize in advance if anyone finds this article elitist. This is not about pretending someone is a better programmer if they touch-type and a worse one if they don't. This is about you being more comfortable, efficient, and having more fun in your job. Pretending you're a better programmer just because you do things like the experts is cargo culting.
We'll start with the basics and move toward more advanced stuff.
Learn how to use the keyboard correctly
You are supposed to use all of your fingers (for most people, 10) on the keyboard. A lot of people only use three or four. Because one can type quite fast even with just two fingers, one does not realize they're using the keyboard wrong. That was certainly my case for way longer than I am willing to admit.
Learning to type as typing was intended will increase your performance in the medium-to-long term, but most importantly, it's just much more comfortable and ergonomic (casual reminder that your body will grow old if you're lucky).
The process of learning correct typing is pretty much the same as learning the piano: practice 10 minutes a day for two months. Use a web app for that. I used TypingClub and recommend it.
And absolutely learn to touch-type. A good pianist doesn't look at his instrument, so why should you?
Say no to Windows
If you aren't working with Microsoft proprietary Windows-related technologies, you should not be on Windows.
I have mentored aspiring webdev students for many years, and in my experience, you can sort the ones who will succeed from the ones who won't by asking them to do two things and seeing if they actually do them:
- If you use Windows, ditch it.
- If you don't speak English fluently, learn it.
100% of my students who did these two things succeeded. 100% of those who didn't, failed.
Say no to your desktop environment
Learn to use the shell and use it for everything. I mean it: everything.
Moving files around with your mouse might seem more efficient at first, but when you're good at talking to your operating system via the shell, you'll realize desktop environments only limit your power.
Say yes to Vim
To be honest, I am not sure that Vim is right for everyone. Or rather, as a Vim fanatic, I think it is, but I also realize I'm extremely biased. Here's some general advice if you want to go down this rabbit hole anyway.
Realize that Vim is a sport. A very nerdy sport. It has a very steep learning curve. It takes years to be proficient with it. And I am not even sure it's so much more efficient, but anyone will tell you, it's so damn fun.
Start with this mandatory reading.
I say "Vim," but actually use Neovim. Basically the same but better.
Build your custom config. DO NOT copy-paste an existing wall-of-code config. Instead, start small and increment yourself based on your needs. Be sure to save it somewhere, preferably on a remote Git server.
Write your config in Lua, not Vimscript. Learn Lua if you need to—it's easy.
Spend some time configuring your (Neo)Vim so it's pleasant to look at. You will probably look at it all day for years.
Use a good plugin manager. I recommend Lazyvim.
If one of your plugins slows your Vim experience (some language servers notably might do this), get rid of it. Vim is cool because it's super fast and responsive, and there's always a faster alternative.
Advance your Vim learning incrementally. Every time you learn something new, make sure to practice. And sooner than later, get rid of your mouse. Hard at first, but so good long-term.
Be prepared to take heavy psychic damage for the rest of your life every time you have to use a text editor that doesn't integrate Vim motions.
Throw your mouse away
Once you start to be proficient with the shell and Vim, you can say bye-bye to your mouse. You won't need it anymore.
Actually, scratch that. Sadly, you might still need it in your browser (unless you install the amazing Vimium extension) or in other graphical programs. But the rest of the time, the keyboard is your (only) friend, and you'll realize how cozy it feels to never move your hands from it.
The most important part
Have fun! I'm serious.
This is not about you looking like a 10X dev-haxxor (although I won't lie, it's pretty cool to impress people); it's about being comfortable and having fun.
Efficiency is nice, but typing faster or moving your files around more efficiently will not make you better at programming. You can be the most amazing programmer while typing with 3 fingers, while rarely opening a shell, or even while using a mouse... But why would you do this to yourself?
Be comfortable instead. Have fun. Enjoy yourself.