🖋How to Choose Specialization

One of the common struggles we all face is choosing what exactly we want to do. There are so many software development sub-fields, it’s hard to choose one.

Should I be a front-end developer? Back-end? Mobile? Should I go for Machine Learning? Embedded? Maybe DevOps?

I don’t have a three-item questionnaire culminating in the “Congratulations! You’re an iOS developer” pop-up. What I do have are some recommendations on how to approach the question and get an answer you won’t regret.

I’ll start with open-ended questions. Some are more important, some—less so. (That’s for you to decide which is which.) The quality of your answers determines the quality of the result.

While you don’t have to answer all questions, give them a fair try—find a quiet place, and set aside 30 minutes of your time. Think about them.

After the questions, we’ll quickly discuss what to do next, and I’ll give a couple of examples.

Assessing your values

Let’s start with the values questions. These will ensure you’ll end up with something you enjoy doing.

Remember, these questions are about you—there are no right or wrong answers.

Assessing the position, you’re in

Now let’s survey your situation. That will impose limitations and will help you filter out inappropriate options.

Researching your options

For some people, after answering all the questions, the specialization they are looking for is obvious. If it’s not apparent for you, continue with sourcing and researching the options you have.

The questions above should’ve led you to requirements for the job or specialization you seek. Answering them, you must have noticed which questions are more important than others. Use that to weigh options against each other.

Write out the most critical requirements for the job you seek.

Source

There are many ways you can approach this stage.

I am not going to list all the options available with the pros and cons of each—it’s just too many of them. Use google and ask people.

Do not limit yourself

You don’t have to write code to have a good job—do not impose unnecessary limits. Consider management, entrepreneurship, design, marketing, or even blogging. They might be a much better fit for you.

Ask specific questions

By now, one advantage you have is that you know what’s important to you and you can ask better questions. Instead of asking, “What would you recommend for a beginner programmer? Python or C?” ask, “What you can learn faster? How many jobs are available? What people do you often communicate with? Where could I transfer from there?”

Test-drive

If you have time, try test-driving the thing. Search for some experience: apply for an internship or build a month-long project of your own. (It doesn’t have to be formal, and any experience is suitable for your resume.)

You’ll probably spend quite some time in the field once you land a job, so a one-month test-drive is entirely worth it if you’re in doubt.

Remember it’s not final

Whatever you choose, remember it doesn’t have to be final. The software development industry is extremely easy to change jobs in.

Sometimes what you need is just start somewhere.

Examples

Me

When I decided to focus my efforts on one sub-field, these were determining factors:

I looked into kernel-level programming. Technically-challenging and hard-core. Virtually no communication with non-technical people. The only issue: I tried it before but wasn’t successful. Though, I decided to give it another try. (If that wouldn’t work, I would probably go for back-end development or try some other options.)

I went for Linux Kernel Development by Robert Love—it taught me internals of Linux kernel as well as what operating systems do. Then I went to answering Stack Overflow questions for the “linux-kernel” tag. I went for a “Write Yourself a Kernel”–kind of tutorial and used that as a starting point for my experiments. (It also looked great in my resume.)

I liked the experience. In August, I had an offer for an Embedded engineer position, developing an in-house operating system.

My girlfriend

So yeah, we’re looking for something technically non-challenging. Easy, so she could learn it from scratch and find a job in 6 months. Something involving design (possibly offering a smooth transfer there or at least an advantage). Mainstream, so searching the job isn’t an issue.

Front-end web development was the right choice. Fast-forward 4 months, she’s got a job offer as a Vue developer. She loves the job so far and even does some design here and there.