DEV Community

Discussion on: What does Full Stack mean to you?

Collapse
 
fluffynuts profile image
Davyd McColl

IMO, a true full-stack developer can work all the way across the software stack required for an average application:

  • UI
  • business logic
  • data storage
  • tooling
  • testing

This translates differently according to the tech stack. For example, it might be some of:

  • presentation layer
    • web: html/js/css, Vue, react, angular - whatever framework (or not) is in play. The point is this layer interfaces with the user.
    • desktop: wpf, winforms, electron (which means similar skills as per web, but some extras), swing, gtk, qt
    • cli: readline, curses, yargs, etc
  • business logic layer
    • web: node, asp.net, rails, Python, rust
    • desktop: node, c#, Java, c / c++, Python, rust
  • data storage
    • mongo, MySQL, mssql, postgres, firebird, firebase, graphql, even flat files
  • tooling
    • msbuild, gulp, grunt, webpack, npm, make - there's a lot of domain crossover for these, and the full-stack dev doesn't have to be a master of them (though it helps) but should be proficient enough to bootstrap and work unaided.
  • testing
    • nunit, jest, mocha - the full-stack dev should be able to bootstrap the relevant framework, write tests and run them.

This is not an exhaustive list, just some of the more common techs I see in use today. If I left out your favorite, I apologise!

You wouldn't need all of these skills at once, but you would need enough from each category to be able to bootstrap and build the entire application yourself, without relying on others. You may not be a specialist in a certain area, eg design, and hand off the polishing work to someone who has the skills to complete the task better and faster than you, but you'd be able to get the whole app functional, from top to bottom.

An efficient full-stack dev should know (or learn) her team (if available) well enough to know when polishing a task would be more efficiently accomplished by a team member and be able to schedule some time with that team member.

A full-stack dev should be able to design a reasonable UX flow that facilitates the ultimate purpose of any software: to enable a user to achieve some goal.

A full-stack dev can debug across all these layers to figure out issues.

Full-stack devs may specialise in certain areas that interest them more, but should never have to delegate implementation of major functionality to another person because they can't implement it. Full-stack devs are continually learning so that they can fulfill this requirement - we don't know everything but we understand the "bones" of things will enough that we can learn a new tech to implement the app using that tech as part of the stack. If you're hired as (or looking for a job as) a full-stack dev, you should be able to implement an app from top to bottom and adapt to the tech stack of the role you're applying for.