DEV Community

Cover image for What does Full Stack mean to you?

What does Full Stack mean to you?

Sarah on May 02, 2020

I've seen many different flavours of what companies think a Full Stack role includes, here are a few I've seen: Frontend, Backend Frontend, Backe...
Collapse
 
ben profile image
Ben Halpern

I'd say that while relying on heavy abstraction, you're basically able to handle the whole project. If it's sufficiently complex, you can't literally handle it all, but you can be flexible in where you are inserted.

However... I think in general it would only extend to frontend, backend + wildcard. So a fullstack developer is able to do the application logic thing and they might be skilled in some aspects of DBA, Ops, QA, etc. but not all of it.

Full stack developer is a "skilled generalist" I'd say.

While this is all just semantics, words are important in programming so definitely worth getting into and fussing a little over.

Collapse
 
sarahk profile image
Sarah • Edited

Oh I like this, frontend, backend + wildcard. Thank you, you've raised some great points.

Collapse
 
joelbonetr profile image
JoelBonetR πŸ₯‡

For me a full stack developer is any developer that could start a project from scratch to production by itself. Of course if you need to create a huge project, you'll need human resources and you can set some full-stack devs and move it from back-end to front-end or DB tasks as needed.
By the other hand a colleague said to me that a full stack is that back-end dev that is not afraid of CSS - he works only on back-end so...-

Collapse
 
voanhcuoc profile image
Khoa Che

a full stack developer is any developer that could start a project from scratch to production by itself

That, absolutely agree

Collapse
 
gabek profile image
Gabe Kangas

I always find it odd that people don't talk about mobile as a part of the stack. Almost every company has a need for a mobile application and is just as important, if not more, than frontend web, yet it's ignored when people say "full stack". So to answer: I think "full stack" means you can build the product, front to back. Not just "stuff in javascript". Backend, connected TVs, mobile, web, data pipelines, you name it. Working on the entire stack is fun!

Collapse
 
voanhcuoc profile image
Khoa Che

And that way you can't praised yourself as a full stack dev with non-professionals anymore ;) .
It's a curse that this job title is a thing, even full stack web requires a broad skillset that a young Bob can barely possess. And people compare him with Wordpress practicioners all the time.

Collapse
 
ozzythegiant profile image
Oziel Perez

That's why "Full Stack" should be a prefix and not a category. You could be: Full Stack Web, Full Stack Mobile, Full Stack Desktop, etc.

Collapse
 
sarahk profile image
Sarah

I'm glad you emphasised mobile, you're right its important to include as its the most used device - really great points 😊

Collapse
 
andrekelvin profile image
AndreKelvin

A big joke. As far as technology keeps growing nobody actually knows it all

Collapse
 
fullstackcoder profile image
fullstackcoder • Edited

Fullstack to me means the ability to handle a project from early development all the way to deployment and maintenance.

Ofcourse a fullstack developer should be exposed both in front-end and back-end equally and has the ability to identify and use the best practices during the development.

I would put it a bit further though and say that a senior fullstack developer should also have a deeper understanding on architecture, devops and QA as well.

Collapse
 
titouansola profile image
Titouan Sola

As junior dev, I always thought full stack meant frontend + backend ability to conceptualize and develop a solution to a problem as an engineer does in other domains. I include data management within backend. As a developer, I think you're not supposed to know DevOps, but it can be a plus, or just understanding how it works. I'm not sure about BA, but in my opinion, that's not really a part of the job, but I may be wrong!

Collapse
 
nicolus profile image
Nicolus • Edited

I think you're not supposed to know DevOps

I'd argue that the whole point of DevOps is that developers should play a part in it.

If the developers only care about development and the sysadmins only care about operations, then you're not doing DevOps, you're doing development and sysadmin separately, which is pretty much what everyone was doing before the DevOps culture started to emerge.

Collapse
 
titouansola profile image
Titouan Sola

Yes of course! My point is DevOps knowledge isn't mandatory for a junior dev, as you probably work with software architects / lead dev 'above' you. But you're right, i also think that not dive into DevOps as a developer is a mistake.

Collapse
 
jgbijlsma profile image
Joost Bijlsma

It depends on the working environment and project. When I worked at a large conpany. Full stack meant focussing on backend and frontend. When I work on my own project. I include devops, testing, etc. All could be considered full stack. But I think most people see it as frontend and backend.

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.

Collapse
 
lehmannsystems profile image
Mike

I see it as someone who has the capacity to learn languages quickly. You can be inserted in the backend or the frontend and your learning curve for both should be similar. Are you someone who can go from an idea and build out both the API/DB side and the frontend side or app? Then I would call you a full stack developer.

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt • Edited

I think Backend is deep and means many things. Also, it doesn't have to always mean web development. Can be desktop (or mobile) as well.

So, I think

  • Presentation Layer
  • Database Layer
  • Glue Layer, if needed / Load balancers, Heavy lifters and something like that.
  • Security is the must, but I think it is harder for webdev and DevOps

But in the end, I think being really good at one thing, and also works well in a team is better.

For mobile dev, I think it is something hard. You don't usually code first on mobile OS, but create backend on desktop, hosted on a server, and mobile is the frontend. So, it is actually webdev with different frontend. You probably won't use JavaScript (unless RN or similar).

Collapse
 
ozzythegiant profile image
Oziel Perez

Now that you put it this way, "Full Stack" makes us think that this is a column of technologies but in today's cloud computing environments, this is more of a cluster than a stack. You can have web, mobile, desktop, or micro controllers be the front ends and the back ends can have multiple MVC server apps side by side in different programming languages, each providing different services, not to mention there can also be multiple databases.

Collapse
 
elasticrash profile image
Stefanos Kouroupis

Yes a full stack developer can probably handle a small project begging to end. But that project has usually the following components. DB/API/UI. See I am on purpose avoiding the words backend/frontend. Unfortunately not everything fall in that category and you need overspecialization. I always worked (with one exception) in companies that required that specialization and I have learned to appreciate that.

In my current workplace Dev teams include dB admins/Dev ops/Telco engineers/back end developers/front end developers/internal systems devs/3rd party integration devs.

Collapse
 
sarahk profile image
Sarah • Edited

I think that any Developer in some come companies can fall into the trap of wearing too many hats if the company doesn't have a big enough dev department or are working on a tight budget.

Full Stack developers I think run into this problem the most because of the somewhat ambiguity of the role.

In my opinion, some uniformity is necessary in the sense that the responsibilities should be limited to solving problems and working directly with a tech stack. So for me these are out of the window:

  • QA
  • UX designs and User Research
  • Business Analysis
  • Level 1 and 2 Support
Collapse
 
jkga profile image
kenabella

Full stack developer for me is someone who can do a front-end + backend.
It doesn't mean that you must be specialized on both, but at least you can decently work on
projects that require you to code for UI/UX, database ops, and service integrations. Full stack is a word for being flexible and generalist.And in my opinion, most of the developers starting to work for all of these and being "full stack" is now a norm.

I still remember when an IT manager told me that Full stack for her is just a word which I quite but not strongly agree. If we write "Full Stack Developer /Full Stack Web Developer" on our resume/ applications, we still have to include our skills, right?

In a nutshell, developer is developer, whether full stack or not and whats more important is the skill.
I also think that the word "full stack" will likely evolve in a few years from now.

Collapse
 
bugsysailor profile image
Bugsy Sailor

When I was in undergrad I always dreamed of taking the intro level class for every subject offered, and at Michigan State University, that was a lot! I never knew what it would be called, but I guess it would have been a Full Stack Bachelor of Arts. Of course that was 15 years before I ever heard "full stack"

Simply put, I see a Full Stack Developer being defined as having broad knowledge across a discipline. Horizontal integration of a discipline rather than vertical knowledge of a discipline.

However, I have always seen Full Stack Web Developer and Full Stack Web Designer as interchangable terms. I see it as someone who can create, design, develop, launch, and market a concept that lives and breathes on the internet.

I like to distinguish with web, because if the goal is a website or web application, adding knowledge of C++ is great and all, but it's much more relevant to know CSS. ... Or something like that.

Collapse
 
emmettchildress profile image
emmett childress jr

I always ask...Full of what ...Stack of what? Any conversation that isn't based on standards is meaningless. There are numerous opinions revolving around implementations of standard. What difference does it make which technology you use if there is no understanding of the underlying standards. HTML, CSS, browsers, networking, storage, and compute. You will not see Full Stack survive 2020.

Collapse
 
etienneburdet profile image
Etienne Burdet

To me it means implementing full user storiesβ€”as opposed to language/technology specific parts. It probably means using different tools for the same task

It could mean full RoR. It could be 99% JS and CSS, but if you have to tweak a db request, you will. It could be 99% Python, but if you have to return templated HTML you will. Maybe you ask for help on certain parts, maybe you have to learn, maybe there is design, infra… wathever works, as long as you deliver something as functional as possible to the userβ€”and you are fully accountable for that.

With this definition, fullstack developers could still "specialize" in front or backend. But the way of approaching work is different: you can't throw a "We don't have data? Don't care it's PHP guys job. Back to my animations.", if you're fullstack.

Collapse
 
ozzythegiant profile image
Oziel Perez

As a Full Stack Developer myself, I believe that the following are required to be one:

Develop a UI (web, mobile, or desktop)
Develop a server MVC APP in your language of choice
Data Persistence (files, databases, or some type of cache)

Those skills are essential to building a minimum viable business application. Also, there are many here who believe a Full Stack dev is a jack of all trades, doesn't really know how to do advanced programming. Know this: an excellent full stack dev understands the fundamentals of developing user friendly interfaces, the fundamentals of efficient programing and app architectures (MVC, MVVM, Flux, etc.), and unit testing. Understanding those concepts will allow you to pick up new languages, frameworks or other tools quickly. Yes, the downside is lack of mastery in the skills learned, which is why I recommend that full stack devs research which languages and frameworks have been battle tested and will be used for a long time, pick a small amount of those tools and master those.

In my case, I have learned/dabbled with 11 web frameworks, 7 programming languages, and do browser, server, and mobile development, but I will only stick with PHP, Python, and Node.js for servers, Vue and React for browsers, and React Native for some quick mobile dev (although I'm probably gonna replace that with Flutter in the future). To me those are the skills that have the most job opportunities, so I will master those.

P.S. Knowning Wordpress, and only Wordpress DOES NOT make you a full stack developer

Collapse
 
giorgosk profile image
Giorgos Kontopoulos πŸ‘€

People use it (and I use it) to mean someone comfortable with both backend and frontend but Γ lso someone able to start from scratch and create a finished website/webapp alone.

Collapse
 
heatherw profile image
Heather Williams

I think at the basic level it is a developer who can handle both front end and back end tasks equally well. As a full stack developer gains experience then I think they start layering on other skills and abilities and in the end an experienced full stack developer becomes a jack of all trades, able to take on pretty much any dev task required. I think for a company looking to hire someone it will depend on their needs and budget. A big dev house likely needs more specialised people while a company just looking for a dev or two to run their website would likely need full stack developers who can do anything.

I personally consider myself a back end developer but if the need arises I am able to take on tasks across the whole spectrum of dev. This is because I work for a small company-start up (we are slowly losing our start up status and becoming a full fledged company).

I also think you will find full stack developers who started as either front end or back end developers and then added skills. Each of these will bring slightly different things and perspectives on how to do things.

Collapse
 
darryljmorley profile image
Darryl

I'd say that full stack is somebody that can work with both the front end and back end, anything extra is a bonus.

Collapse
 
delta456 profile image
Swastik Baranwal

Full Stack Developers are basically jack of all trades who know everything but can't master anything.

Collapse
 
ecognito profile image
E Cognito

My tongue-in-cheek response is: A full stack developer is someone who can write javascript on the frontend and the backend.

Collapse
 
adamgen profile image
Adam Genshaft

Wow, that's one kind of a thread...
I think that a developer is compatible with a commando warrior, in the sense that both have a mission and they need to accomplish it in whatever means necessary.