Recently I was asked if I knew what it takes to become a good back-end developer. This article is my attempt to answer this question. The information in this article is based om my personal experience as being a back-end developer over several years.
Although there are a lot of resources freely available on the Net I am a huge fan of Pluralsight. Next to some freely available articles I will also refer to some Pluralsight movies regarding the specific topic. I highly recommend to try it out.
Please feel free to leave a comment and give me your opinion about the topic or this article.
General programming skills
A good knowledge of programming skills is the most important aspect for every software developer. Although there are some subtle differences between being a front-end or back-end developer, I think it is still good to be aware of the common design patterns and best practices like SOLID. Some useful articles are:
- Design Patterns – very complete overview of the main design patterns and the 5 SOLID principles
- The Principles of OOD (by Robert C. Martin a.k.a. Uncle Bob)
- S.O.L.I.D: The First 5 Principles of Object Oriented Design
- SOLID principles with real world examples
- SOLID Principles of Object Oriented Design
- Clean Architecture: Patterns, Practises and Principles
- C# Design Strategies
- Architecting Applications for the Real World in .NET
Besides these articles the book “Clean Code: A Handbook of Agile Software Craftsmanship” by Robert C. Martin is a very good (I would say a must) read with a lot of useful tips and tricks.
As a back-end developer you often (if not always) have to deal with some sort of database. In my experience, it is very valuable to know about good database design (have a good practical understanding of the first three normal forms) and have a good understanding of SQL.
As a .NET developer, I would meanly focus upon SQL Server and T-SQL (the Microsoft dialect of SQL). Although definitely also keep an eye on NoSQL database variants like MongoDB, CouchBase or DocumentDB.
Another important aspect when working with databases are the Object-Relation Mapping (ORM) frameworks. These frameworks often make developing with databases a lot easier, helps in keeping a good architecture and saves the developer from writing a lot of SQL code. Because of this, these frameworks are often used in enterprise solutions. Two popular .NET frameworks are Entity Framework (by Microsoft) and NHibernate (an open-source port of the JAVA Hibernate project).
Here are some useful resources:
- An Introduction to Database Normalization
- Stairway to Advanced T-SQL series
- Entity Framework Core (or Entity Framework 6.x for the .NET Framework)
- NoSQL Databases: An Overview
- NoSQL Databases Explained (MongoDB)
- Why NoSQL | ChouchBase
- Introduction to DocumentDB: A NoSQL JSON Database
- Developer’s T-SQL Playbook
- Getting Started with Entity Framework 6
- Entity Framework in the Enterprise
- NHibernate Fundamentals
- Understanding NoSQL
- NoSQL: The Big Picture
Knowledge about Web Services
Web services are a very big aspect of the modern day back-end developer. Therefore it is very important to know how to use SOAP (Simple Object Access Protocol) and REST (REpresentational State Transfer) to build web services.
Web services can be build with almost any programming language out there. In the .NET community a very popular (and recommended) way to create web services, is to use the ASP.NET Web API framework (or ASP.NET Core MVC on .NET Core).
Similar to the ORM frameworks mentioned in the previous chapter, there are also frameworks available to simplify the development of web services. One of the most popular is Swagger. Having a good knowledge about Swagger will boost your web service development skills.
Some of my favourite articles about Web services are:
- Learn REST: A Tutorial
- Best Practices for Designing a Pragmatic RESTful API
- Build RESTful API’s with ASP.NET Web API
- Building Your First Web API with ASP.NET Core MVC and Visual Studio
- XML Soap
- Basic Tutorial – OData