A new-to-me friend asked me what to study with this question (I slightly reworded the question):
I am having problems trying to decide on what I want to study/learn.
I ask myself, “Do I want to learn Scala, F#, Elixir? Do I need to learn Vue.js, or focus on learning software design and architecture?”
I feel I am always left behind. There are too many things to learn, and I feel that if I don’t know something, I am not competent. 🙁
WHAT A GREAT QUESTION!!
This question is obviously from a techie, where talk about which language is best and which is on the horizon and which is a waste of time has been an ongoing conversation ever since I can remember. Many programmers love to argue what the best language is right now. As soon as you have a grip on what you should get good on it, a new language or framework seems to come out of nowhere. It’s easy to feel like you are always behind and perhaps incompetent.
My advice is simple: be observant.
Learn to look for signals of hype vs. what is actually catching on. There may be a few people who tout the next greatest language or framework, but are these the same people who touted the last 10 big changes in tech (that never really caught on)? Be observant enough to know who is saying what. Some people love new technology. They study it, and think about it all the time. They love the ingenuity of new solutions trying to solve old, or big, or annoying problems.
They might go back to work programming in older languages… languages their organization dictates. Or languages they are comfortable with, and have been proven to work over the years. But they LOVE ideas to make things better.
The danger in listening to these early adopters with the wrong perspective is that you are listening to their enthusiasm and excitement for newness and ingenuity, but what they are looking at might be too early to be practical solutions.
Do you really think it’s a good idea to walk away from proven languages and rewrite your apps in something that is in pre-alpha stage?
I’m not saying there’s no merit in those languages but my risk level keeps me away from jumping from technology to technology just because one solves this problem a little better and another solves that problem a little better. If you have a different risk level, yay for you! You could change your back end every few days.
Talk about always feeling left behind.
As a software developer my focus was on providing a working solution to the problem at hand. What to study? I studied the language I was directed to use by my software architect. There was plenty to learn there. Even though it was not a perfect language it was good enough to get the job done.
Was I creating something to last thousands of years, and withhold the tests of time? Nope. One of my first projects was slated to be tossed out a few months after launching. It was a managerial survey. It needed to do certain things and my code, sloppy and ugly (I was a noob) was good enough.
I’m not saying we should always and only shoot for good enough.
Or maybe I am.
Under the direction of an architect you should know when too much investment is… too much. Sometimes we need to do good enough and then move on to other things.
What To Study
So this brings us back to the original question: What to study?
I’m old. I’ve been in and around tech for over two decades. In internet years that makes me about a thousand years old. I’ve seen technologies, languages, companies, frameworks, etc. come and go.
I have also been in conversations hearing the hype of this technology or that. Some stick, some have a hard time dying, and some are gone after early adopters utter their name.
My advice on what to study and keep up with is more along the lines of continual learning than certain languages, especially new stuff that isn’t used in industry yet.
Of course, there are the solid, common languages that you could dive into. These are languages that run the world… the most popular languages that run websites, for example. Dive into that wikipedia article and figure out where you might want to go deeper.
If I were diving into a programmer role I’d take note of the third column… every single one of those websites has Javascript as the front end language.
Think you should learn Javascript? ME TOO.
What If You Don’t Like Javascript?
There are other things to become expert in. Notice the other columns… back end languages are important, too. So is SQL. Imagine becoming an expert in SQL. Many developers can do SQL but can they do it well? Could you take a query that takes 2 seconds and make it take .002 seconds?
There are plenty of places in tech you could settle in to. Don’t like front end? Don’t like queries? Investigate some of the other languages.
What To Study When There’s Too Much to Study
Don’t worry about every language. Just pick one and go deep on it. You’ll know when it’s time to go deep somewhere else.
Pick a language, or a technology. When you start to understand the flaws of the technology you are starting to get some level of mastery of that technology. That is a great sign! You are maturing as a developer!
Learning how one language works will refine your programming skills. These refined skills can help you learn other languages later. As you learn principles of programming you’ll prepare yourself to learn other technologies down the road.
This career thing is a long game. It’s a marathon. Don’t worry about not knowing everything now. Learn what you need to excel in your job right now, and enjoy the journey. You’ll have plenty of time later to pick up another language, and another, and another.
Or perhaps you’ll choose to stay with one for a long, long time. That can be okay.
What to study? Study sound and basic programming principles.
What to study? Study how to assess and judge new technologies. That way you won’t spend too much time feeling left behind, rather you’ll be able to quickly determine if something merits your attention or if you can not pay any attention to it for now.
What to study? Study how to learn quickly. Learn how to learn. If you have chosen to be in tech you have chosen a career of learning. Why not get better at learning? There are tactics and techniques you need to know to continually learn.
Don’t worry about what everyone is jumping on. Pay attention to it, sure. Be observant. But learn your craft as a professional developer. Get better at being a developer.
When it’s time to switch to Javascript, or C, or C#, or .NET, or R, or Python, or whatever, your foundation as a developer will help you learn those languages more, and better. You’ll pick out things you like better in the new language and things you don’t like because the other language does it better. That will show you are growing as a developer…. when you can pick those things out.
Marathon. Journey. Be okay with where you are. Don’t get distracted by all the stuff you *could* do/learn.
What to study in Pluralsight
Pluralsight has thousands of courses for technologiest. Here are the 5 of mine I want people to watch.