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, Backend, DBA
- Frontend, Backend, UX, Mobile
- Frontend, Backend, DBA, DevOps
- Frontend, Backend, DBA, DevOps, QA, Business Analyst
- and the list goes on...
What do you think a Full Stack Developers responsibilities are? Does it need some uniformity or is it ok to have different flavors?
Latest comments (31)
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.
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.
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.
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.
IMO, a true full-stack developer can work all the way across the software stack required for an average application:
This translates differently according to the tech stack. For example, it might be some of:
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.
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.
I'd say that full stack is somebody that can work with both the front end and back end, anything extra is a bonus.
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
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
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).
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.
Full Stack Developers are basically jack of all trades who know everything but can't master anything.