The world's best programmers share exactly one thing in common: a passion.
That passion is not for code.
The passion is for creation. We are addicted to creation, whether it's solutions, websites or software. For most of us, technologies we do not require to create are, themselves, unnecessary.
But sometimes slowing down to learn the unnecessary things can make us work smarter and become more value to our teams.
What is unnecessary
CSS, regular expressions, linux. Three things that, looking back at my time in college, i viewed as unnecessary. And they were. I created one website after another in Flash without needing to learn any of them.
I've since learned them all. Linux and css are required in full stack web dev. Regular expressions are still, i'd argue, unnecessary. Generally, you can assume everyone will have a serviceable knowledge of the required technologies. What is surprising is how few know the unnecessary ones.
So few people understand them, in fact, that it makes experience with them a major value add.
Be the value
Just because a tech is unnecessary does not mean it is not valuable. Often knowing these techs make you code more efficiently, or let you code with more confidence. It wasn't until i started working on large systems that i learned
grep. Now, i haven't the slightest idea how i'd code on a system without it. But i did so, for years.
At every job i've worked in, a few have brought something unnecessary to the table: CSS mastery, Actionscript, regular expressions, basic system admin skills, etc. Each of these have shared a couple of results. First, it makes you more valuable to the company. Secondly, it makes you a resource for other members of your team.
A week ago, a friend of mine new to rails dev began to peer into the sys admin rabbit hole. He commiserated to me that each programming topic felt infinite in scope, and he would never learn it all. My kneejerk response was,
"Don't worry about it. You'll learn it when you need to."
But then i paused. Because that was when i had learned it, and in retrospect i wish i had done so sooner.
"That said, you won't regret picking it up before you have to.", i added.
Signals and noises
In the end, the real trick is being able to identify what is unnecessary and what is useless. Programming is growing constantly, so there is a lot to choose from.
In the next post, we will explore how to classify signals from noise in the ever expanding field programming technologies.