How to Choose a Developer Specialty

So you want to be a developer? That’s awesome, the software development world is one of the most challenging and rewarding career paths that someone can take.

Since I lead the instruction for a coding bootcamp I meet daily with aspiring students from around the world. One pattern I see with new students is that when I ask the question:

“What kind of developer do you want to be?”

I’ll usually be met with a blank stare. One time I even had a student reply back with the response:

“A good one!”

However through the years I’ve discovered that it’s vital for coders to decide what their development focus will be.

How to Choose a Developer Speciality

The world of software development is so vast that it’s impossible for someone to master every aspect of the process. Consider if I approached a world class track and field coach and said that I wanted to train for the olympics and win a gold medal in track and field.

The coach would most likely give me a once over and chuckle to himself. But after that his first question would be:

“What event do you want to train in?”

He would ask this question because the training regime for the 100 yard dash is dramatically different from the high jump.

In the same way, as a development student, you need to narrow your focus on what type of developer you want to be in the long run. It’s perfectly fine to start out by learning the full stack of development skills at a high level. In fact, during our three month immersive coding bootcamp courses we teach students the full application stack.

However after you have been introduced to each of the programming components it’s important that you pick what your speciality is going to be.

I’m going to walk through each of the types of developer categories so you can see what they entail. After going through the list I hope that you will be able to have a better idea of what type of coder you want to be.

Full Stack

In deciding how to choose a developer speciality I always like to start off with the full stack option. I start with this option because many new coding students students I’ve spoken with assume that all developers are full stack devs. And this is simply not true.

Full stack development means that you feel comfortable working with every stage of an application’s development. In referencing our track and field analogy, a full stack developer would be like a decathlete.

This is the category that I personally fall into. My focus on the full stack side of programming is due to a number of factors:

In order to teach students and write development curriculum I need to be familiar with all of the key development types.

I’ve spent years as a freelance developer. And in many cases freelance coders are asked to build an application from the ground up, create all of the features, design the system, and deploy it to the web or app store.

Jack of All Trades…

Much like a decathlete, full stack developers usually are good at a number of technologies. However a common pattern you’ll see is that it’s very difficult to be world class at EVERY layer of the development stack. Programming is simply too complex, and languages/frameworks change versions so rapidly, it makes it nearly impossible to excel at every stage of the app dev lifecycle.

I’ve spoken at length on how repetition is a requirement for mastering any skill. Because of how time consuming each level of the development process is, full stack devs simply don’t have the time to become true masters at any one aspect. I augment this issue by focusing my time on the components that I excel in, such as server side development. And then working with other developers to help cover my weaker areas, such as UI/UX.

Server Side

Next on the list of developer types is server side programming. This is probably my favorite layer of the dev stack. Server side specialists spend most of their time working on building and implementing algorithms that enable programs to work properly.

Additionally server side developers typically spend quite a bit of time building APIs. This is because most server based applications need to communicate with the outside world in some form or another.

This layer of the development stack will require you to specialize in a language such as: Ruby, Python, Java, or C++.

Front End

When it comes to choosing a developer speciality, the third layer to choose from is the front end component. Not too long ago a front end developer was considered someone who spent all day working with HTML and CSS. Their main goal was to make applications look pretty.

However the definition of a front end developer has changed dramatically with the advent of client side frameworks. These frameworks, such as Angular and React, have made it possible for front end programmers to build complete apps with little server side interaction.

These applications are rendered completely in the browser because they’re written in JavaScript (which is a programming language that browsers can understand). And whenever the app needs to get additional data it simply communicates with APIs.

A common pattern that I work with is building a number of server side Ruby applications and then having a single Angular front end app that renders the user interface in the browser.

So if love building applications that users will directly interact with and the idea of working with APIs doesn’t scare you off, front end development might be the right choice for you.

Mobile

Next on the list of developer types is mobile. If the idea of building the next Angry Birds or Instagram excites you, the mobile development field may be a good fit.

Mobile programming used to be a very difficult field to enter. Only a few years ago you would have had to master multiple languages (Objective C and Java) in order to build smartphone apps. However JavaScript frameworks such as Ionic and React Native have made it possible to use JavaScript to build apps that behave like native smartphone applications.

You can still use languages such as Swift, Objective C, and Java to build truly native applications. And there will always be a great set of jobs for devs who specialize in these languages. However if you are a freelance or full stack developer, by leveraging a JavaScript framework you can build smartphone and tablet based apps for all platforms. And it’s been my experience that the learning curve for these JavaScript frameworks is quite a bit lower than the traditional mobile languages.

Additionally, you may have noticed that the tools used for JavaScript based mobile apps and front end programming are similar. Because of this synergy I have had a number of developer friends who have moved away from server side development and moved into front end coding because it allows them to tackle building applications for: desktops, tablets, and phones.

Making the Decision

If you are new to development don’t feel pressured to pick out a specialty immediately. Instead my recommendation is to explore each type of development layer until you find a focus that you truly love.

In this guide I’ve provided a very high level view of the developer types. However in reality you will need to become even more specific with your development focus. For example, if you’re a server side developer, you may want to focus on building eCommerce applications or implementing accounting systems. If you are an aspiring front end developer you may want to become a world class security specialist.

A key that I’ve discovered helps quite a few students is to look at developer job boards. Job boards are great for listing out the specialities that companies are hiring for. And by going through a list of potential job descriptions it may help you figure out what you want to focus on.

3 COMMENTS

I love this. I’m currently struggling with deciding, what I want to do. I started with Ruby on Rails, but I’m not sure that’s what I want to focus on. I know I’m more interested in learning backend development. I even enjoy Database management.

Thanks for this article! I’m now at the point in my career where I should choose a specialty if I want to keep advancing. I like your idea of being a full-stack developer and having certain areas that you really focus on and getting additional help if you need it.

I love working on all stages of the development cycle, but struggle a little when it comes to interacting with servers.