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?

ari_o profile image Arika O ・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

pic
Editor guide
Collapse
brandinchiu profile image
Brandin Chiu

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.

Collapse
ari_o profile image
Arika O Author

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.

Collapse
carltonupp profile image
Carlton Upperdine

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.

Collapse
brandinchiu profile image
Brandin Chiu

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.

Thread Thread
rozbarnes profile image
Roz Barnes

Thank you! This is great clarification.

Collapse
elmuerte profile image
Michiel Hendriks

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

Collapse
wulymammoth profile image
David

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
Collapse
ari_o profile image
Arika O Author

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)?

Collapse
wulymammoth profile image
David

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

Thread Thread
ari_o profile image
Arika O Author

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).

Collapse
bravemaster619 profile image
bravemaster619

That looks like a frontend dev job posting to me.

Collapse
wulymammoth profile image
David

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

Thread Thread
bravemaster619 profile image
bravemaster619

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

Collapse
christianedsv profile image
Christian Hernandez

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...

Collapse
darthbob88 profile image
Raymond Price

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.

Collapse
ari_o profile image
Arika O Author

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.

Collapse
darthbob88 profile image
Raymond Price

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.

Thread Thread
ari_o profile image
Arika O Author

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.

Collapse
gkumarau profile image
Gourav Kumar

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)
Collapse
dablurr profile image
Dablurr

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

Collapse
gkumarau profile image
Gourav Kumar

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.

Collapse
theaccordance profile image
Joe Mainwaring

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
Collapse
h4kst3r profile image
Hakim Bencella

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 ... )

Collapse
ma2web profile image
ma2web

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 😐

Collapse
vonheikemen profile image
Heiker

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.

Collapse
mrshan profile image
mr-shan

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.

Collapse
gabek profile image
Gabe Kangas

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.

Collapse
abinash393 profile image
αвιηαѕн

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

Collapse
madza profile image
Madza

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 ;)

Collapse
tilakmaddy profile image
Tilak Madichetti

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