As a Software Engineer, I type really a lot in my daily life. One of the most valuable skills I gained over my career was actually touch typing with a good speed. It turned out to be so essential that I could boost my work drastically by just learning shortcuts and how to type fast.
Learn as early as possible. I used to consider my speed to be decent back then as my peers were typing slower. However, the earlier you pay attention to the skill, the better you can get at it over time as you only improve it over time.
Learn touch typing, use 10 fingers. At best my speed could reach 80 WPM with 2 fingers and without looking at the keyboard, but it can’t scale at all and that’s the problem. Using your hands to their full potential can increase your speed dramatically.
Focus on accuracy, not speed. Typos take the most time. The reason people type slow is not that they cannot find the character, but because of the typos made. Use Shift + Backspace to delete the entire word at once instead of removing one character at a time.
Again, do not look at the keyboard. F and J letters have small bumps on them - that’s where you place your index fingers to know where the letters are.
Practice regularly. Make it a daily routine to practice typing at least for 10 minutes focusing on your accuracy.
Ctrl(⌘) + left/right arrows
Home/End(fn + left/right arrows) - move to the start/end of the line
Ctrl(Option) + Backspace - delete the entire word
Ctrl(⌘) + Shift + left/right arrows - select
Ctrl(⌘) + A - select all
Also, it’s extremely useful to learn the shortcuts of the apps you use such as the browser, IDE, etc.
monkeytype. My personal favorite. The app has a lot of settings so you can customize it to focus on specific aspects of your typing.
keybr. Keybr is a great app because it recognizes the letters you struggle with. Then it gives you more words with those characters so you can improve your performance.
typeracer. It has multiplayer so you can compete with your friends and have fun while improving your speed.
I came up with a few exercises I used to go through to improve some aspects of my typing:
100% accuracy is the goal. One typo - you must start over again. Speed does not matter much, but the session has to last for at least 15 seconds. Then it should last 30 seconds. Then 1 minute.
You practice typing throughout the day just dropping in the trainer for a few minutes at random times of a day.
You do not go anywhere until you reach x WPM. But be realistic about the goals.
Surprisingly, it matters. Keyboards can make you type faster or slower. A rule of thumb: don’t use cheap crappy linear keyboards. Most mechanical keyboards are good, apple keyboard is fine.
Qwerty layout (the one 99% of keyboards have) is not optimized. Investing your time into one of the alternative layouts may increase your speed so you can learn to type faster. For more details, look into Colemak and Drovak
Wrist rest and body posture
Buy one if you have a high keyboard. Also, don’t hunch over your desk, keep your back up straight.
Accuracy goes first. Speed comes itself, but typing accurately is something you should invest in. Learn touch typing if you haven’t yet. It scales your typing ability. Practice regularly.