How to become a full-stack developer

You’ve started your career as a pure front-end or back-end developer and after several years you want to make the jump to full-stack development. But making that step seems daunting as it requires you to learn a completely new language, a completely new ecosystem of libraries and frameworks and even completely new code paradigms (e.g. functional programming) or concepts (e.g. data binding).

Where to even start? And what would make me a valuable full-stack dev?

I started out as a back-end developer (with an interest in front-end) and made the switch to a successful full-stack career. I did this by taking gradual steps and understanding the strengths of a full-stack developer position.

How to gradually make the transition

While the technologies will be different when you come from either the back-end or the front-end, the trick to making a successful transition is the same: select a technology on the opposite end which forms a good combo with your current skillset, so that you can make a gradual transition with one foot in your comfort zone and one foot in the unknown.

As a front-end developer

One straightforward combo for a frontend developer is a REST API. Luckily you can start with building such a REST API using a Node-based framework, so that you stay in the comfortable Javascript ecosystem. The ExpressJS framework is a good start here. You’ll learn how to properly design a REST API and you’ll come into contact with other back-end technologies, such as databases to query data from (SQL), authentication/authorization tools, load balancers etc.

Great, now you’re a full-stack developer! So once you feel comfortable building REST APIs in Node, try to make the transition to another backend language/ecosystem such as Go or any JVM-based language (Java, Kotlin, Scala) and replace your Node-based REST API with one in the other language. See, gradual steps. It will expose you to different concepts, technologies and code paradigms which will make you an even more valuable full-stack developer.
Need suggestions?

  • Go: already comes with the solid net/http package to build a simple REST API.
  • Java/Scala: use the Play Framework

As a back-end developer

First, get your feet wet by learning the basics of html, CSS and Javascript. Do not start using Javascript frameworks just yet, so only use lightweight libraries were needed. Why this first? It covers the absolute basics and learning css early on will save you a lot of layout headaches later. Talking of layout headaches, make sure you learn CSS Grid and Flexbox, they’ll make your life so much easier.

  1. take a backend-based server-side rendering framework, which will generate pages on the server-side based on templated html files. It’s an easy entry into front-end development, as you typically don’t have to worry about complex javascript frameworks and you’re still working in sort of a back-end environment. Need suggestions? Java/Scala: use the Play Framework. Python: use Django. Go: use Beego
  2. setup your own website using a static site generator: this will give you some more experience with HTML, CSS and maybe even some Javascript. Not sure which one to use? I’ve used Jekyll quite extensively and loved it, which is based on ruby (but don’t worry, you don’t need to know a lot of ruby). I’ve also heard good things about Hugo, which is Go-based.

So now you’re a full-stack developer. But where it becomes really interesting is in single-page apps. They are much more complex in terms of structure, libraries, build tools, integration. So I suggest to take a rather opinionated Javascript framework (such as Angular) to start building single-page apps. The benefit of such an opinionated framework is that it makes the most fundamental choices for you, so that you can focus on actually learning how to build an app. Because believe me, you really don’t want to start fiddling with setting up your own build pipeline (using Babel, Webpack, Grunt, …) yet, that’s a rabbit hole of its own.

Playing to your strengths

At some point you’ll start to feel effective in both back-end and front-end development. You’re not an expert, but you can build something full-stack in a reasonable amount of time. This is when you should start focussing more on what actually makes you valuable as a full-stack developer, being the integration between front-end and back-end. Versatility is one strength, but an expert in front-end or back-end development can easily replace you. Replacing someone who excels in the integration part, that’s much harder.

Just as an example, you probably don’t know:

  • many devs who know how to properly hook up authentication & authorization in a front-end app with for example an OAuth/OpenID Connect flow. And not just the front-end work to get it done, but also understand the configuration of the OAuth server.
  • many front-end devs which have a wider range of knowledge on messaging protocols and knowing their pro’s and con’s, going further then just regular HTTP: Websockets, MQTT, SSE, …
  • many back-end or front-end devs who know how to debug an issue which starts in the UI and track it all the way through the backend’s core
  • many front-end devs who know how to protect a front-end app’s webserver from common security vulnerabilities
  • many devs who understand the implication of an API change and how it might impact the user experience

You are the glue between back-end and front-end specialists. Where they stop with debugging, you jump in. It’s your job to advice them on the design of the integration layer (messaging format and protocol, authentication/authorization, API design), and even pull most of the implementation work. But also, don’t overplay your hand, know when you need to fallback on a specialist (certainly when making security decisions!).

Your personal mentor, in your inbox

Advance your career as a software engineer by regularly receiving my 15+ years of experience in your email inbox.

Articles get updated when I have new insights, so make sure you don't miss those!

Get email updates on new and existing content, products and special offers.

    Unsubscribe at any time.