There is danger in changing things up all the time. That danger is that you never really become an expert in any area because you only get to dive in superficially as you’re continually chasing after the newest ‘shiny’ thing.
I don’t embrace the newest things as they come out. A while back I learned Grunt and what seemed like the next day, Gulp came out and was touted as 1 million times better. I never did learn Gulp nor do I have any plan to learn it.
The biggest fear that causes many people to chase after the latest and greatest is that their technical knowledge will lag and they’ll fall behind on how proper sites should be built. While that is a real fear, way too many businesses waste lots of time chasing the shiny.
I work very hard not to chase but to make intelligent choices about what I use and learn. Here is the thought process I go through.
Embrace your constraints
First off embrace your constraints. There was a time that I could decide I needed (actually, wanted is probably the correct word) to learn something new on Friday and I could code/read/play all weekend, and by Monday have a decent handle on the new thing with a few demo projects under my belt.
Now I’ve got a wife and two kids — not just a wife who’s happy to read/knit/run on her own during the weekend. My kids want me to play LEGO, go to swimming lessons, hike, build forts, paint nails, do hair, and a myriad of other things that interest a four-year-old and one-year-old girl.
It would be super easy for me to longingly dwell on the times when I could devote an entire weekend to learning something new. Really all that would do is make my time with my kids less enjoyable.
Maybe I’d even start resenting them for ruining my perfect weekends of yesteryear.
That’s lame. Instead I just let weekends be what they are and embrace the constrained environment. Because I can no longer dig into new things all weekend or work weekends I have to be more efficient with my time during the week.
This need for efficiency caused me to put all new technology through the following two filters.
Does it solve a problem I have?
First off, does this new technology solve a problem I’m currently experiencing?
Looking at the Grunt/Gulp thing above, I had no issues with how Grunt was working. It made sense to me and had all the modules I needed in my work.
There was no problem with Grunt and nothing in Gulp that seemingly solved a problem I could see having.
So the answer was no.
Will it bring more ROI for my clients?
The second filter I put things through is, will this earn my clients more money?
Maybe learning a new A/B testing tool will bring them more ROI faster, in which case yup, it’s worth it for me to learn.
Maybe some new way of configuring their server will speed up their site and we know that a faster eCommerce site generally converts more. Again that’s worth taking a look at.
If a new piece of tech doesn’t meet at least one of these two criteria I don’t learn it unless it meets my third criteria.
Yeah there are things I learn just because. I’m currently working on learning Laravel mostly just because. I have no projects that definitely need it nor do I plan on changing my WordPress specialty.
I simply want to learn something new and Laravel looks interesting.
Now it’s likely that learning Laravel will help me build WordPress stuff better/faster but that’s not the reason I’m learning it.
I just wanted to learn something for fun.
The danger here is that most developers I know are really learning stuff for fun but telling themselves that it’s for one of the above two reasons. This means they devote way too much time to the endeavour.
I plan on spending an hour a week learning Laravel. If more time comes up, then great — I’ll use it. But learning Laravel is not my focus.
How I taste test
When you see a new piece of ‘shiny’ how do you even begin to evaluate it against the two requirements above?
I start by finding a bunch of versus articles. For Grunt/Gulp I searched for ‘Grunt vs. Gulp’ and skimmed a few to get a feeling for their quality and added the top ones to my Instapaper queue.
Second I asked on Twitter if there were any Gulp people that could recommend a good article on learning Gulp.
Third I looked for articles that said Grunt was the best choice and that said Gulp was the best choice. They often have titles like:
You’re looking for people on both sides of the argument here.
Total time spent to assemble about 20 good articles on Grunt/Gulp was about 20 minutes.
Next I sat down on Friday and dug into the 20 articles. Really reading them and taking a few notes. Noting how they worked compared to each other.
At the end of this reading session I decide if I should be learning the new system or not. Does it meet at least one of my two main criteria?
If the answer is no then I don’t bother thinking about it again until there is some compelling reason.
A compelling reason would be like when WordPress went with Sass and I was firmly a LESS person. I had put Sass and LESS through my filters a few years before and went with LESS.
Over the years many of the issues I had with Sass went away but having had no actual issues with LESS, why on earth would I change? Then WordPress went with Sass and at that point, why not use what many other WordPress developers will be using by default?
So I spent a few hours one day converting my own stuff to Sass and haven’t looked back.