loading...
Cover image for [Edited] What's the minimum a full stack dev should know?

[Edited] What's the minimum a full stack dev should know?

cilvako profile image Silvia Bogdan ・1 min read

Edit: my question was actually referring to what skills should a full stack developer have and not a front end developer. Sorry about the confusion 😊.

I realize this might differ depending on seniority level or even location on the map, but what technologies do you think a full stack front-end developer should be to be familiar with?

Image source: Tim van der Kuip/ @timmykp on Unsplash

Discussion

markdown guide
 

I think there might be some confusion with our definitions here.

"Full Stack" and "Front End" stand at odds with each other.

A "Full Stack" developer is someone who can build both the front end and the back end of an application.

A "Front End" developer is someone who is comfortable building front end applications and (optionally) designing those applications as well.

Front End developers will typically design and implement layouts, implement client APIs, and perform UX/UI performance tuning.

Back End developers will typically work with databases, design and build APIs, implement server-side integrations like payment gateways, and help with systems architecture.

Full Stack developers will do all of the above to some capacity.

 

True that (this is what happens when you try to post being super tired), what I was actually trying to say was a front end dev who wants to move to full stack. Guess I should reformulate the whole thing.

 

If you're already a front end developer, I'm going to assume you are using js so I'd recommend learning how to build an API with express, hooking it up to a database (don't know if mongodb is still as dominant in the node ecosystem), and as a bonus hosting it on AWS. Honestly, if you're already competent with js you'd be surprised how much you can actually build once you learn what I recommended.

For a more senior level, you'll want to learn more about architecture and security, so maybe add some authentication/authorization to your API and potentially look at splitting it into microservices.

 

No problem!

In that case my suggestion would be:

Theory:

  • databases
  • HTTP
  • deployment fundamentals (hosting in the cloud vs bare-metal)

Technologies:

  • at least one ORM solution
  • AWS fundamentals/core products (compute, storage, messaging)

I'd pick a single stack to start with, and just build solutions using that and covering the above topics. Most of the skills will be pretty easily transferrable between languages and frameworks.

Thank you! This is great clarification.

 

Full stack isn't just front and back end. It's also the middleware and infrastructure. It's every part of the stack.

 

EDIT: the article's title and content has been updated to "full-stack" and is no longer "front-end full-stack". What I've written below applies to front-end web more specifically.

This is very subjective -- it'll depend on who you ask, but what Brandin noted is correct -- most people's interpretations are that there isn't a such a thing as full-stack front-end dev, although, one could argue that there is front-end "leaning" full-stack suggesting that maybe the majority of the time is spent on client-side web (browsers).

The minimum will certainly vary by region. Honestly, anyone can be a dev, the minimum is equal to the minimum one can convince someone else that they can do the work or pay them for it. LOL.

But if we're talking about generally or falling across the board, my non-exhaustive list:

  1. HTML/CSS
  2. understand what a RESTful API looks like - because it's easy to understand how to obtain resources in some serialized format back if it's performed following general patterns outlined
  3. JavaScript (at least ES5) and TypeScript and knowing the various styles -- pseudo-classical (classes even though they're syntatic sugar) and prototypal 3a. more JS and its semantics in relation to its asynchronous programming model - promises (old), async/await (new), and also generators, and generally the difference between blocking and non-blocking (async)
  4. strength in at least one of the major ecosystems -- Angular, React, Vue and history with older ones, like Backbone, Ember, etc are a plus
  5. understanding browser compatibility and how to address them (e.g. polyfills)
  6. basic data structures and algorithms -- at least trees, both binary and n-ary (DOM). Have I ever had to use this? Yes, when writing a client-library or SDK for a brand new API or beta API, traversing/navigating JSON structures and nested fields is a recursive operation. Even if you're not writing a library, you're gonna be writing code that makes a request, parses it, and sometimes navigating it even if only for internal use
  7. basic security - what is XSS and how it can be prevented
  8. difference between authentication and authorization and the different ways authentication can be done
 

Thank you for sharing and for mentioning the title change (I was thinking about a front end dev trying to go full stack and I ended up writing front end full-stack). Your list seems very comprehensive. What language would you recommend for the back-end (besides JS, since I am already using it)?

 

I'd probably stick with what you know. If you were doing Ruby, I would've heavily recommended Ruby on Rails -- although a ton of people talk down on it being "opinionated", I think those opinions are within reason -- having been vetted by a LARGE open-source community of very experienced developers. I think it puts a person starting out on solid ground from which to start crafting their own viewpoints about what seemed difficult and what seemed hard and why it differs in other frameworks or paradigms. The NodeJS community unfortunately is immensely fragmented and difficult to wade through when it comes to writing software on the back-end or full-stack.

I always urge first principles and literally search for "what is X?" whenever you don't know something and follow it up with, "why is X done this way?" or "why does X exist?". There's no way to go down every rabbit hole, but it this allows you to start crafting branches of knowledge for future leaves to hang on.

The thing that I implicitly use everyday is design principles and general algorithmic thinking -- mostly running time analysis. When I say design principles, I'm kind of alluding to "clean code". This is a popular repository for JS and non-JS people alike: github.com/ryanmcdermott/clean-cod.... I would star it and use it as a reference. It does put into perspective some things -- like why some things are called what they are. The back-end of things is "everything". One of the most invaluable books I've read across my career in software thus far is, "Designing Data Intensive Applications" by Martin Kleppmann. I think it's a good starting point for setting up branches even if upon first read, half the things are questions marks do you. It's best to have at least covered some basic algorithms and data structures, though

Yes, Ruby is not very used in Europe so I can't say anything about it. Thank you for the repository recommendation, I started working in the filed a bit over 7 months ago and I tried from the beginning to build good habits when it comes to writing code. I will definitely check it out. Algorithms are still of a puzzle for me (at the moment).

 

That looks like a frontend dev job posting to me.

 

You're right -- the title of the piece and article has been edited

Sorry, I didn't know that. No wonder I wondered why there're so many comments of frontend tech stacks here :)

 

The fullstack concept covers both frontend and backend, in the case of a frontend developer, the minimum that you should know in my opinion would be the following:

1- HTML5 and CSS3 intermediate/advanced
2- Javascript
3- Git/Github
4- CSS Preprocessors (SASS, PostCSS or LESS)
5- CSS Frameworks (Bootstrap, Bulma, Fundation, etc.)
6- Javascript framework (React, Angular, Vue)

In this Github repository you can find a reference path for a frontend developer:
github.com/kamranahmedse/developer...

 

Must Have Some Basic Familiarity With-

  • Version control system, particularly Git.
  • At least one cloud service; even if you can't automatically spin up a K8s cluster or whatever, you should be able to set up an app service and deploy your code.

Frontend Stuff

  • CSS/HTML/Javascript
  • At least one of React/Vue/Angular
  • Accessibility, including ARIA and Semantic HTML
  • How to test frontend code
  • Mobile/Responsive design

Backend Stuff

  • Some backend language, and a web development framework for that; .NET/ASP, Python/Django, Ruby/Rails, etc. I know NodeJS exists, but we use Javascript on the frontend because we have to, there are actual good languages for use on the backend.
  • Some SQL, or at least some method of interacting with databases. An ORM is good, or you can use a statement mapper, or just whatever driver Mongo comes with.
  • A test framework for their backend stuff; XUnit, Moq, whatever Python and Ruby use.

This is extremely rough, based both on my own priorities and a desire to keep things kinda general.

 

Thank you for sharing. I'm missing a few points on the list but I'm getting there (can't really decide on the back-end language). Glad you mentioned ARIA, all front-end tutorials seem to forget about them or never mention them.

 

Welcome. Personally I like C#/.NET for the backend language, but that might be influenced by the fact that I'm working at Microsoft right now.

TBH, something like 60% of dealing with accessibility is a) make sure everything has the right alt/title tags, b) make sure your colors have enough contrast, and c) use the semantically appropriate element. You don't always need to use ARIA, but you should at least know it's there for when you do need it.

Great points, I am actually writing a series of articles related to accessibility these days so I'll definitely keep these in mind. We use C# at work for backend stuff so it might be a good choice.

 

What's the minimum a Full Stack developer should know? Let's see, now. Here's what I can think of: HTML, CSS, SASS, Bootstrap/Bulma/Tailwind, DOM, JS, jQuery, React/Angular/Vue/Ember/Aurelia, SSR, Universal Apps, Caching, Micro-Frontends, GraphQL, WebSockets, MySQL/PostgreSQL/MongoDB/Firebase/DyanmoDB, PHP/Python/Node/Ruby/Java/etc., API design, Web security, AWS, GCP, Azure, Serverless, Functional Programming, OOP, Design Patterns, Enterprise Patterns, Load Testing, Penetration Testing, Wireframing, Figma, Web Assembly, Mobile App Development . . . I hope I didn't miss anything.

 

Minimum things a full-stack person should know:

  • UI/UX design/development using any one framework (React, Angular, Flutter etc)
  • APIs / Backend using any one language (NodeJs, Go, Python, Java, C# etc)
  • Databases: one relational and one no-relational
  • Cloud (at least one of AWS, GCP or Azure)
  • Source control using GIT
  • CI/CD (optional but always preferred)
  • Writing infra-as-code (optional but preferred)
 

Take the following and add design pattern and so on. Other than that, here you go.

 

Oh yeah. Design patterns are a good one but I do not think all of the design patterns are must-have. Maybe the top 5 should be enough as a minimum.

 

Minimum full-stack requirements for my teams:

  • That they're able to build a front-end view using the tools the team does. Today, that typically means a framework like angular, react, or vue. That view needs to make at least one api call to a backend & render that data in the view.
  • That they're able to implement a new method for a backend API. In JavaScript world, this often times involves building or extending an express application with a route. That route should demonstrate the ability to parse a request and shaping the response.
  • That they're able to model sources of data. Whether that be SQL or NoSQL, you should be able to query databases, create new records, and instantiate new tables or collections.

Skills that make you stand out as a full-stack dev:

  • Having basic competency across the stack, but an expertise in one-or-more layers
  • Writing clean code. If your code looks like one long procedural file, I'm not going to hire you. Know how to abstract out code (tDRY) based on responsibility and scale. Bonus points if you've developed the wisdom to know when and when not to abstract.
  • Writing tests. I'm a firm believer in continuous delivery, and that requires things to be automated. You can't automate delivery if you're manually regression testing. Know not only how to write tests, but how to write code that enables good testing coverage.
  • RTFM
  • Good Code Review etiquette
 

Html, css, javascript, js libraries and frameworks such as react, angular...
Also
Server-side langs like nodejs
Database like mongodb
And its good that has knowledge of devops

I write technologies that I use them every time 😐

 

Obviously html css javascript ,
One or more ( react, angular,vue) ,
Have a good idea about ui/ux design,
A general idea about how backend work is a plus ,
Know how to use documentation ,
Work with libraries/apis (maps, animation ... )

 

I have read that people can get very far with static site generators and services like netlify and firebase. Maybe some html, css, javascript plus [some way to get a site on the internets] would be enough.

 

I would consider basic skillset for a full stack web developer as full stack front end does not stand up.

So the minimum things a full stack web developer should be able to implement:

  1. A nice, user friendly and responsive user interface.
  2. A backend interface to provide necessary data for UI to display.
  3. A database to store the data.
  4. Integration between above three things.

Now if you're considering advanced stuff, you should know:

  1. How to secure your application
  2. Performance optimizations
  3. Deployment, auto scaling etc.

And there are many more things.

Now if we look at the technology stack for above, it's huge.

So a full stack web developer knows at least one technology in front end, backend, database (and/or server side deployment) and is comfortable in development end to end flow for the application.

 

It depends on your stack.

Does your company/product build a mobile app? Then your full stack is building out the APIs and mobile app development.

 

ability to fix a broken bicycle with tools πŸ›  whose 'How to Use ....' guide has been torn into pieces by asteroid that hit earth in 1976

 

HTML
CSS
JavaScript ES6
HTTP 1.1
BASH
GIT
SQL/NoSQL
Node or another programming language with a framework
Runtime and memory model

 

The line has blurred long time ago :(
Nowadays recruiters often use 'front-end' or 'back-end' just to narrow your skillset they will pay for, tho in reality you are expected to know both ;)