Many people have varying opinions about what a full stack developer is.

A quick Google search will yield millions of results.

I recently had a conversation with my peers, and I was surprised to hear that many of them, if not all – believed that

“A Full Stack developer is just ‘HR’ buzzwords to get people to apply.”

I’ve been doing Full Stack development for a majority of my professional career, but I never thought of it as “Full Stack.” I just thought of it as Development.

I believe that a Full Stack developer should be able to build a product from ideation to deployment.

Full Stack Photo by Luke Pennystan on Unsplash

There are different layers in a stack of pancakes. There are also different layers in a Web Development project.

Datastores

  • MongoDB
  • MySQL
  • PostgreSQL
  • SQL Server
  • Oracle SQL

Server Side Code

  • Node
  • PHP
  • Ruby
  • dotNet
  • Java

Client Side Code

  • HTML/CSS/JS
  • AngularJS
  • React
  • Vue

Back End (Server-Side)

Back-end Developers should be able to decide on when to use a SQL vs. NoSQL for a datastore as well as design models to hold the data for the project.

A Backend developer should be able to configure and deploy servers, preferably in a Cloud environment such as AWS, Azure or Google Cloud Platform.

A Backend Developer should also be comfortable with creating APIs (REST or GraphQL) which add additional business logic and communicate with a data store.

Front End (Client-Side)

A Front-end Developer should be able to create clients that consume the API as well as add additional business logic which may not be handled by the backend.

A Front-end Developer should be familiar with creating tests (Unit, Integration, End-to-End) as well as writing putting together the client-side code for deployment and preferably continuous integration.

Also, a Front-end developer should be comfortable creating the User Interface for the application, often with a js framework like React, as well as have fundamental understandings in User Experience Design, Responsiveness, and Accessibility.

Note: Larger organizations will usually have different departments with specialists. For example, you may find yourself working with a dedicated “Web Designer” who will often provide comps (designed in applications like Photoshop, Adobe Comp, Sketch, Invision, or Avacode) or UX Designers who study users, create experiments and optimize products for proper flow. I’ve worked with Back-end engineers who immediately get lost when working in the Front-end (Client-side JavaScript) as well as with Front-end developers who similarly get lost in the backend.

Aside from being able to develop for both Back-end and Front-end, I don’t believe “The Stack” ends there.

An excellent Full Stack Developer should be able to do the following:

  • Gathering Requirements from clients (Internal or External)
  • Creating User Stories from the Requirements
  • Mocking data models, designs and user interfaces,
  • Creating server-side code
  • Creating client-side code
  • Writing unit, integration, and end-to-end test scripts,
  • Configuring continuous integration for automated testing,
  • Configuring continuous deployment to automate pushing to production upon successful tests,
  • Creating user and developer documentation,
  • Provide continuing maintenance and support for projects.

I believe that a well-rounded developer should possess these skills. We don’t have to be experts in all areas necessarily but have enough to get projects shipped.

Larger organizations will have teams accessible to you to help validate solutions which do specialize in certain areas, but knowing enough to avoid getting blocked is very important.

What do you think? Would you agree with my view on Full Stack Developers?