As you think about your development career, you need to consider specialization early on or at least be aware that you’ll fall into one or a few specializations as you move forward. You should aim to get great in an area, not just development in general. I’m going to list and explain common types of development, emphasizing the ones that I have experience with and note some other common types. This is not intended to be an exhaustive list.
Picking a specialization doesn’t mean that you have to stick with it forever but you do need to start with one and possibly move on to others as you gain experience and determine your sweet spot. You can’t learn everything at once! As I explain the types I’ll give you some the tools and languages involved and places to get started. My experience is mainly with the .NET (Microsoft) stack so you’ll see me reference it often in this and other articles on DevSensei.com.
According to Stack Overflow’s 2018 Developer Survey, the most popular type of development is Back-End with others like Mobile gaining in popularity. If you’ve researched any development topic then you’ve likely run across the site. I visit the site often and trust it and the community there for help with troubleshooting issues and for general information in the field. It’s based on a voting system to help determine the best answers to esoteric coding/technology questions.
Let’s roll with the top 4 in their latest developer survey as the focus of this post. They surveyed 100,000 or so developers and give some great insights into the current state of the development field. I recommend that you take a look!
The top 4 types of Software Developers that I’m going to cover are…
- Back-End
- Front-End
- Mobile
- Full-Stack
There’s some cross-over in each of these, especially the last three. I’m going to explain each in relation to my experience. I’ve dug up some information as well to help out with painting the best picture.
I’m going to reference ‘layers’ as I explain these. I work primarily with n-tier systems, meaning they have database(s), service(s)/API(s), and various client(s) or the user interface. These may have layers in between to support common entities/objects and business logic.
Back-End
In short, Back-End developers work with the layers ultimately supplying or supporting the Front-End layers. They work on or with the database to supply data to the user interface via a service or API.
A back-end developer may specialize further into the following categories and/or work regularly in all of them:
- Database – Writes code directly against the database. You’ll write T-SQL or could use an ORM (Object Relational Mapper) such as Entity Framework to talk to the database including basic CRUD operations that you’ll need for most tables. This would be code to create (insert), read, update, and delete data.
- API (Application Programming Interface) Developer – Writes the code to serve the information to the client. This would probably including some sort of server-side business logic after performing direct database operations via the data layer code. An API might be written in C# or Javascript with node.js. These days, RESTful APIs are popular as they provide flexibility to the consuming code and follow typical web/HTTP guidelines and verbs (GET, PUT, POST, PATCH, DELETE).
- ETL (Extract Transform Load) Developer – Writes processes to move data between systems. For example, this could be a process that moves order data from an entry system to a fulfillment or warehouse system. This person might use a tool such as SSIS (SQL Server Integration Services) which allows you to more easily work against various data sources and destinations.
Front-End
Front-end developers write the code that users see and interact with. Specialization within the front-end developer types include the following:
- Web Developer – Writes code that runs in a web browser, leveraging HTML, CSS, and Javascript. This person may do some design and graphics work as well although they’ll like get these pieces handed to them. Tools or technologies used here include ASP.NET, PHP, and Ruby.
- Desktop Developer – Writes code running natively on the desktop client. WPF, WinForms, and Java are commonly used technologies here.
Mobile
Mobile development does fall under front-end but given its ranking in the SO survey I pulled it out on its own.
Specializations here include the following along with some languages used:
- Android – Java
- Apple (iOS) – Objective-C or Swift
- Windows – C# (UWP)
- Cross Platform – Xamarin (C#) or Apache Cordova (HTML, Javascript, CSS)
Progressive (responsive) web apps taking advantage of HTML5 and CSS3 are also an option although currently restrictive as you don’t have much control over native device functionality. I can see this changing though as browsers become more advanced.
This is a growing and exciting area with many options. There are some pitfalls due to the changing landscape around the mobile industry. For example, at the moment it seems that Microsoft is getting out of the mobile device/OS business or at least changing their strategy as Android and iOS continue to dominate the mobile market.
Full-Stack
I work as a full-stack developer having exposure to all of the layers developing for the database, api, and web/mobile clients. Starting out in a small shop/group forced me into designing/writing the systems and doing a lot of the QA/testing.
In a larger shop you’ll likely ‘float’ between specializations per project where you may switch off with other team members.
The technologies I currently use are…
- SQL Server to build the database.
- Entity Framework to work with the database in the Data Access Layer (DAL)
- ASP.NET Web API for the service/API layer.
- ASP.NET MVC for the web and Xamarin for mobile cross-platform development.
- Any entity or business layer are done with .NET Standard class libraries, but you’ve got to be careful with versions.
Being a Full-Stack developer means that you’ve got to know more across several areas. It doesn’t necessarily mean you’re a jack-of-all-trades (master of none) but it will take longer to build proficiency and you’ll likely have a favorite area where you could note specialization. It could be that you’re a Full-Stack developer, specializing in mobile. My stronger area is probably back-end at the moment but may change as I learn and get better with newer technologies, especially working with Xamarin for the mobile layer.
How do I choose a software developer type?
Don’t fret over picking an area and don’t feel like you need to ‘label’ yourself. No pressure, it will take some time to figure out what you enjoy and what you’re best at.
It may be easier to start with the database and learn T-SQL if you don’t have much programming experience. Basic web development with HTML and Javascript might be a good place to start as well. A simple C# command line or console application is easy to get going. If you’re an avid mobile user then that could be a clue that you’ll enjoy writing smartphone apps. If the web is appealing then go for that.
Go with what you’re drawn to. Find some online courses around the areas and technologies that I’ve discussed to learn more. See if you can find some projects, paid or not, to get some real experience. The best way to learn is by doing, especially when it comes to software development.
References