I occasionally get a message from a brand-new developer who's overwhelmed by all the technologies and choices that exist in the world of software development. Where do you even start? Some of these devs have seen job advertisements like the following:
This is for a standard, mid-level web development position. It lists 14 specific technologies, alludes to many more, and if that weren't enough, it has an "etc." Even as a senior software engineer at a billion-dollar company, I'm not sure what that "etc." refers to. Maybe I could Google it:
Oh, great. 16 more technologies. If I were brand-new to this, I'd be thinking, "you mean I have to learn 30 different programming languages just to get a mid-level job?" And then I'd throw up my hands and apply for a job in something less demanding, like brain surgery.
Let's put that fear to bed: no, you don't have to learn 30 different programming languages, now or ever. You need to learn one. Then you need to learn a few tools that are commonly used with that language. That will get you a junior position. Afterward, you've got options: get better and better with the languages and tools you already know (you might call this the "expert in the room" route), or learn several more (the "startup engineer" route). Either route will let you advance your career and make more money, and neither is necessarily better than the other, but you'll probably find that you strongly prefer one of them.
So where should you start?
Some people start second-guessing themselves after a day or two with a new technology, so they switch to a different one, and then another one, and then another. This is like learning to say "Good morning" in 50 different languages. It's a party trick, not a marketable skill. Don't let yourself do this. Even if you spend five years with something and decide it's not for you, it's not a total loss; 80% or more of the skills you've learned will transfer neatly to your next technology. The consequences of choosing the "wrong" technology are tiny.
Once you've picked a technology, the best thing you can do is start a project. Think up something simple you want to build, then work toward it a step at a time, learning what you need to learn as you go along. Once you finish it you'll have a nice portfolio piece, along with the confidence of knowing you can see a project through from start to finish.
I promise, as long as you don't go out of your way to choose strange and obscure technologies, anything you choose can lead to a successful career. There are plenty of jobs out there.
This week I want to talk about something that I have used for a excuse quite a few times. Before I finally started getting a schedule going. And that is saying the excuse I don’t have time to learn blank.