Oprea.Rocks Logo

Get updates on new articles, and other opportunities

Is it better to be a software development generalist or should I specialise?

im-an-expert

You want to be a freelancer and you would like to have a stable stream of income. You read it all over the web that you need to specialise. But you're afraid that if you work with only one front-end framework, you won't be able to get enough clients. I totally understand where you're coming from, I've been a generalist for the biggest part of my career as a JavaScript developer and it is precisely because of this. Because I was too afraid that if I only worked with React and Node.js, it would somehow make me less eligible for client projects.

Actually, I pointed out in my article on the ultimate list of articles on the JavaScript frameworks to learn in 2018 — my most clickbait-y article yet — I belittled people who were specialists. I thought they were lazy. I thought being able to work with 3 front-end frameworks at a time makes you a "better expert". That's false! It's actually the other way around.

This was my philosophy: businesses need generalists, in the initial architecture phases, when the big decisions are made. They only look for specialists for execution. I'm a strategist, I do technical vision and architecture. Let others do the execution part.

I was wrong on so many levels. Yes, businesses need people with high-level overview, especially in the initial phases, when they don't have a clear vision. They need someone to set a direction, but that person can be a specialist in 2 areas and still have a good high-level overview. It gets better, as a specialist who knows the internals of a framework really well, can predict and prevent future problems caused by some weird framework issue saving time and money in the process.

What are the benefits?

For you, as a professional, there are many benefits.

First of all, project filtering is easier. Instead of looking at 20 possible projects and try to pick based on some weird criteria combination you could now look at 5 and pick the most lucrative one. You can work on better projects. You know exactly the type of project you'd like to work on and provide value.

Narrowing down your technologies also helps you get to your ideal client profile. This is something you want to create, have and update for as long as you work as a consultant. You can, from a specific set of technologies, infer the types of people / businesses who need your expertise. Try to look for and work for them exclusively. You'll love your work even more.

You can form automatisms that will help free up some brain real-estate, as I like to call it. Most of the tasks you work on won't be time-swamping chores but automatic actions. You will develop systems and automations around meaningless, repetitive tasks. This will free up time for you to rest, learn something new, go to the gym, spend time with the family, whatever you want.

Since we're at family time, let me tell you something. Before starting to specialise, I used to be in this always-learning mode. I barely saw my daughter growing up because of that. Although I was physically there, mentally, I was somewhere else. My mind was wandering between Angular, Ember and Backbone, instead of being present and involved.

Specialising allows you to become an authority in your field. The go-to expert people ask for advice. And with this type of expertise, consulting fees to match it will also come.

It will make you a better negotiator. Why would I say that? Because, for example, if you have worked exclusively on front-end projects with React.js in 2017, you'll be able to quickly gauge project size, figure out if some deadlines are realistic or not, give more accurate estimates or creative solutions, in 2018. This will allow you to charge appropriately and deliver value in a timely manner.

You can pivot to related technologies faster. Being an expert in React.js for example will be the confidence boost you need when you step into the static site generators world. When you learn about Gatsby.js and would like a slice of that cake too, and you learn that it's based on React, you can go all in, without fearing you're going to waste the next couple of months "figuring it out".

What are the drawbacks

There's no real drawback to specialisation. Of course, there's the problem of over-specialisation and narrowing down too much. You don't want to be the React-Router expert. Although, that wouldn't be a big problem if enough websites are using it. Anyway, I bet the creators of react-router are actually the experts.

If you don't keep your ear to the streets and see where the industry is going you might lose a bit of traction. You'll have to spend some time trying to get back on track. The good thing about this is that if you're able to see the trends, you don't have to go into details. For example, if you're able to understand that reactive programming is going to be a thing in 2018, you don't need to learn all the RP libraries.

You might thing you're stagnant, but you're not. You shouldn't be, actually. You should learn new things about your craft, about your area of expertise, on a daily basis. Don't rely on the fact that you're the expert. You might be the expert now, today, this month, this year. But what happens when more people decide to become experts, too.

Keeping current

There's much to talk about, here. We have many information sources, many delivery channels. You just have to pick a combo that works for you. I won't go into details here, mainly because it's not the topic of this article, but I will leave you with a couple of pieces of valuable information. I have an article that I published in 2015, on keeping up to date with the latest in technology.

Since then, I changed my approach a bit so I started writing a new article that I will update with more information soon — keeping up to date with JavaScript development in 2018.

Also, if you're curious why I'm posting incomplete articles, check out my 2016 article on how to make sure your articles get written and published.