What the heck is a “full stack” developer, anyhow?
Sometimes, “full stack” means “the only developer you need”
Until about ten years ago, everyone knew what you meant when you talked about a full stack web developer. You meant a single person that could start with a sketch on a napkin, open a laptop computer, and do absolutely everything to create a fully operating and styled website.
A full stack developer:
- Knew enough HTML, CSS, and JavaScript to create good-looking pages
- Knew enough PHP, Java, CFML, or Visual Basic to make those pages do things
- Could design a database, configure Apache, and set up a server for it all to live on
This is still a common use of the term “full stack.” When a two-person startup is looking for a full stack developer, this is likely still what they mean—someone who can and will do everything.
If every piece of a website were a pancake, a “full stack” developer can make every pancake in the stack, can top it with butter, and drizzle it with syrup, then serve it to you on a beautiful plate. A “full stack” developer is the only cook you need.
But that’s by no means the only use of the term.
Often, “full stack” means “front-end short stack”
In the past, when “full stack” unambiguously meant “one developer to do everything,” the technologies involved didn’t overlap in complex ways. A .NET developer would configure an IIS and SQL server, then get to work writing HTML, CSS, and scripting with a Microsoft language. A LAMP-stack developer configured Linux, Apache, MySQL, and PHP or Perl before they buckled down to writing the front-end.
The “stack,” in this case, was the stack of tools that came together to form a single application. Some tools (HTML, CSS, JavaScript) lived in the front-end on the user’s browser; some tools (the database, the server) lived on the back-end” on the application’s server.
With the advent of Javascript-based Single Page Applications using React, Angular, Vue, and other technologies, there’s a bunch of new stacks that blur those lines. An Angular application has all the moving parts of an application, but all those moving parts live inside the user’s web browser. It’s “front-end” because it’s in the browser, but it’s also “back end” because it has business logic, it gets involved in routing, and it can render on the server side.
When an enterprise conducting a digital transformation project says “full-stack front-end developer” in a job description, they don’t mean “one person to do it all.” They mean a single-page application developer that manages not only the look of what’s on screen, but also the behavior of what’s on screen.
Unlike the “one person to do everything” full stack developer, this developer must collaborate with others. And the better this developer understands the full system they are contributing to, the more effective collaborator they will be.
Let’s overextend the metaphor: every pancake is now its own stack of pancakes
Hang on while I extend the metaphor. For a React or Angular developer, a single pancake has evolved into its own full stack; in developer jargon, the application has its own model, view, and controller. That front-end application will talk to an Application Programming Interface, which itself is a pancake that has turned into its own stack.
Is this breakfast madness? Do we now have “front-end” full stack developers, “middleware” full stack developers, and “back-end” full stack developers?
“No!” I hear you saying. “Something important has been left out if we talk about a ‘middleware’ full stack developer.”
That important something is the user.
What if the stack is the entire user experience?
The digital experience for even a small business is likely a set of applications all working together. Does your company have a marketing site that submits leads to Salesforce or Hubspot? Does your e-commerce application pull inventory from your warehouse ERP application? Do your “your order has shipped” emails talk to the USPS?
Whether or not a developer can work on any aspect of any single application in the ecosystem is much less important to the user than whether that developer can collaborate with others to streamline the experience across those systems.
If we think of the “full stack” as the sum total of tools that work together to delight the user, then when we look for a full-stack developer, we’re less interested in whether that developer can do everything all by themselves, and more interested in whether they can participate in a team in the following ways:
- We are less concerned with whether an HTML developer can themselves configure fragment caching in a CDN. We’re more interested in whether that HTML developer knows how to structure their markup so that a caching expert can do it.
- We are interested in whether a CSS developer has experience talking to designers that are themselves working across multiple platforms, so that designer can structure design tokens that will allow their work to apply to pages powered by Salesforce Commerce cloud and to an in-house React application.
- We’re interested in whether a Javascript developer has a good understanding of the authentication and authorization model of the site, so they can structure the top navigation to handle the addition of new user roles and permissions seamlessly.
- We’re interested in whether a React developer can collaboratively negotiate a pagination scheme with their counterpart on the API team so that the user gets their results in 100 milliseconds, instead of staring at a skeleton loader while they wait for their search to complete.
In each of the cases above, the developer isn’t adding value by actually building the entire system themselves. They’re adding value because they know enough about the whole user experience to collaborate with others on those areas of the user experience that only work well when more than one system and more than one tool are working together.
Most usefully, “full stack” means adding value for everybody
At Think Company, our expert developers often integrate into teams of all sizes. Our clients usually have in-house IT expertise and skilled teams that excel in their individual areas of concern—big data experts.
A challenge of digital transformation projects is that they almost always extend across systems, tools, and areas of concern, and that’s where the role of a full stack developer is most useful. If an expert front-end developer understands how to create a component that treads lightly on the API, elaboration meetings are shorter and more fun. Pull requests are a breeze. Demos are shorter, and testing uncovers fewer surprises.
When we use the term “full stack” at Think, we’re typically describing an expert front-end developer that understands enough about every system in play to collaborate smoothly with others. We mean someone who is a team player and can work not only across tools, but across teams and across systems to delight your end user.
If you need support with an upcoming technology project or auditing your existing site, contact us today!