"I don't know how to decide which technology to use for my next project" Redditor
Another day, another framework. Should you learn NET or .NET Core, Angular 2 or React, ASP.NET or ASP.NET Core?
What about those underlying principles? How are your design patterns and SOLID principles?
One thing you’re not short on is choice but choice has a nasty side effect, it can stop you choosing anything.
“Learning to choose is hard. Learning to choose well is harder. And learning to choose well in a world of unlimited possibilities is harder still, perhaps too hard.” Barry Schwartz, The Paradox of Choice: Why More Is Less
Don’t let this stop you before you’ve even got started.
Choose what to learn first
It sounds obvious, but if you want to try your hand at something new you need to choose where to start; you need to decide what to learn first.
Without a concrete starting point, you’ll find yourself procrastinating; convincing yourself that there’s too much choice; that you should just give up and watch every episode of Westworld instead.
Remember, this isn’t a final binding commitment. You aren’t choosing the technology you’re going to work on for the next 5 years, just the technology you want to learn next.
Step 1: Brainstorm
List every technology/concept you could possibly learn (or would like to).
Avoid filtering at this point, just get it all written down somewhere.
Your brain will probably try to stop you putting some things down because they’re “stupid” or far too difficult for you to learn. This is the time to tell your brain to back off and let you write your list.
Step 2: Identify your filters
Now you’ll want to come up with filters to take this big mess of options and whittle it down to one or two.
What criteria should you use? Well that’s up to you, here are some ideas.
- You can use it in your current job.
- You have some experience in it (or something very similar).
- You have looked and found jobs that you’d like to apply for where they use this.
- There are easily found resources to help you learn it (Pluralsight videos, ebooks, online tutorials etc.)
- It’s fun.
- You want to learn it!
- You know someone else who uses it (who you could ask for help).
You don’t need to use these but they might help if you can’t think of anything else.
Come up with your own list of criteria that make sense to you in your current situation.
Step 3: Apply your filters
From lots of choice to just one or two. Take everything on your list and apply your criteria. If it matches the criteria keep it, otherwise ditch it (remember, you can always come back to it later).
Hopefully this has narrowed your list down to a few options.
At this point, you’ll probably have a gut instinct for what you want to learn first but if not remember this; if you don’t have any proof your approach is better than random then just use random!
“When asked about what they regret most in the last six months, people tend to identify actions that didn’t meet expectations. But when asked about what they regret most when they look back on their lives as a whole, people tend to identify failures to act.”Barry Schwartz, The Paradox of Choice: Why More Is Less
Whatever you do, don’t let indecision stop you from taking any action at all. You started down this path because you wanted to choose a new technology/concept to learn. You can always change your mind later and try something else.
Hopefully you’ve made a decision (feels good right?). You have a technology or concept you want to learn.
Now comes the fun part. Allocate some regular time, pick a side project to build and get learning.
Rinse and Repeat
Once you’ve spent a bit of time learning your chosen technology there’s really nothing stopping you from picking up something else.
You don’t need to become an expert to be able to decide when it makes sense to use a technology/approach for a project (and crucially when it doesn’t), a little experience goes a long way.