Developers live and die by their tools and so does a carpenter. If you ever looked inside a carpentry you have seen an abundance of tools for many different purposes, and a good carpenter knows how to use them all.
One thing I've been trying to get across to my adepts is the importance of time and with that the importance of tools.
You will always be short on time as a programmer! When was the last time you worked on a project where you had all the time in the world to finish it? Thus, you need to master your tools, have a wide variety of them and also know when to use them - to maximize the time you can spend coding (or thinking about your code).
Tool masteryTool mastery is important as it will speed things up a lot. If you are editing a text file in your favorite editor and need to comment out a couple of lines, you can either use the mouse or arrow keys to move to the beginning of each line and insert a comment marker, or you can use the editor's keyboard shortcut to comment out the whole block of lines. The difference in time might not be much, say 5 seconds, but when you sum that up for a number of similar tasks over a week, it quickly adds up to an hour a week. This is about 5% of your effective coding time!
It is worth taking time learning your tools! The return on investment is great.
Even the keyboard is a tool you should take time to learn how to use properly. I wish someone had told me to learn how to touch type when I started with computers. I dread to calculate how many hours I could have saved if I could do 120 wpm instead of 80!
Expand your toolboxHaving a rich toolbox is also important, as for example if you don't know how to use vi you'll have no way to edit files on a remote server over ssh (yes, I know that there are ways to do it, but I'm sure you get my drift) other than to copy files back and edit them locally. Lacking a tool in your toolbox will make you loose time.
I'm sure you have heard of Maslov's hammer "if all you have is a hammer, everything looks like a nail". This very much applies to programming too.
Pick the right toolThere isn't one language which will be the best choose in all situations. You need to know when to use what language, which benefits and drawbacks it has. I'm sure you have your favorite language which you'd prefer to work with, but don't try to force the square peg in the round hole. If you are writing a process monitoring system in a memory constrained environment, Ruby is probably not the best answer - C is, even if it is harder to write good code in it.
You can cut down a tree with a hack-saw but it will not be efficient!