At Curricular, my team and I spend hours researching, reviewing, and recommending the best ways to learn development skills. You can check out our learning guides at curricular.dev
As part of our research, we decided to compile a list of the skill areas that are needed to work professionally as a Fullstack Developer, mostly independent of frameworks or tooling. This is the sequel to our previous post about the skills Frontend Developers need.
And now I'd like your feedback.
About the List of Essential Skills for Junior Fullstack Developers
My team interviewed a bunch of senior developers, sifted through a lot of the readily-available online advice, and debated with one another to produce this list.
Our goal is to help aspiring fullstack developers understand which technical skills are most important to prioritize, in order to excel as a Fullstack Developer and meet or exceed your teammates' expectations.
Of course, learning never stops, and some skills are important to acquire as you gain experience as a junior developer. So we've separated skills into a Foundational List and a Growth List with new and Junior Fullstack developers in mind.
The items in the Growth list are things that a Junior developer would not be expected to handle alone, right out of school, on a team.
Within each, the knowledge areas have been categorized into domains: UI Design & Interactivity, Frontend Servers, State Management, HTTP Request / Response, API Development, and Databases. These are somewhat loose domains meant to help you consider skills based on their main purpose.
Often the skills cross into multiple areas, so don't take this as a strict classification; placing a skill in one domain versus another doesn't mean that it precludes the others.
Of course, these are technical skills. There are additional nontechnical skills you'll need in order to excel, like teamwork, creativity, problem solving, pair programming, and estimation. Those are also left off at this point.
I'm excited to hear your feedback!
Foundational Skills
User Interface Design & Interactivity
HTML
- Syntax
- Elements
- Attributes
- Document Structure
- Properties
- Events
CSS
- IDs and Classes
- Dynamic Layouts and Responsive Design
- Flexbox
- Grid
- Variables
- Media queries
- Frameworks - advantages, tradeoffs, and basic usage
- Tailwind
- Bootstrap
JavaScript
- DOM Lifecycle
- Browser event loop
- Event listeners
- Callbacks
- DOM Manipulation
- Async/Await
- Promises
- A JavaScript framework or library
- React
- Angular
- Vue
Frontend Servers
- Static Site
- Server-side Rendering
Version Control
- Git and GitHub basics (clone, fork, branch, merge, pull request, conflict resolution)
- Writing good commit messages
- Protecting sensitive information
State Management
Global State
- Frameworks and Patterns (e.g. Redux)
Local State
- Prop Drilling
HTTP Request / Response
- Protocols
- TCP/IP & IP Addressing
- Route
- Headers
- Payload
- Status Codes
API Development
Backend Programming
- Fundamentals of a backend language and framework
- JavaScript with Node & Express
- Python with Django or Flask
- Ruby with Rails
API Servers
- Ports
Database Interfaces
- ORMs
- ODMs
Routing
- REST
- SOAP
- GraphQL
Databases
Database Schemas and Models
- Relational
- Tables
- Joins
- Non-relational
- Documents
- References
Data Manipulation
- Reading
- Writing
Queries and Mutations
- SQL basics
- NoSQL basics
Database Management Fundamentals
- Reliability
- Efficiency
Additional Topics
Project Organization
- Dependency Management
- Source code kept separate from compiled code
- All tests contained in their own folder
Web architecture
- MVC
- Microservices
Website hosting, delivery, and deployment
- Cloud Computing Essentials
- Cloud Platform Essentials (AWS, Azure)
- Containerization (Docker)
- Continuous Delivery and Continuous Integration
Software quality
- Writing clean code
- Testing and Test-driven development
- Debugging strategies
Growth Skills
Generally, in most contexts, juniors will start working on support and some small contained features, with an increase in complexity as they acclimate and gain experience.
Some skills juniors will want to add in order to continue progressing include:
- TypeScript
- Accessibility
- Security
- Authentication and Authorization
- Messaging / Message Bus
- Caching
- Enterprise Languages and Frameworks
- Java with Spring and Spring Boot
- C# with .NET / ASP.NET
What Do You Think?
Have we missed anything critical that you'd expect from a junior fullstack developer? Are there any skills on this list that you're surprised about? Or confused about? Let me know in the comments.
And if you're an aspiring full stack developer interested in learning these skills, check out our guide to the best fullstack programs and learning resources.
Top comments (11)
I'm not sure whether that really helps with the stated goal of prioritizing.
There are lots of people on the internet who makes lists of things that junior developers are supposed to learn.
I personally think that your list is better than most, but junior readers have no way to know really.
People who do this kind of lists usually do them with good intentions, but as we all know, the road to hell is paved with good intentions.
There is a reason we don't throw away all traffic signs all at the same place.
What I mean is that the actual effect this has to juniors is too often feeling "I don't know where to start, I am overwhelmed, I have imposter syndrome"
I hear you on this. I should clarify that I'm envisioning this as step 1 - identify the key skills that are actually needed. Step 2 would be the roadmap of which skills to learn.
My hope would also be that in its current state, learners a bit further in their journey can look at the list to see which skills might be missing. Learners starting from scratch probably won't benefit from this current version.
Good list!
Ruby isn't as popular any more and I'm not sure it's worth learning in 2024. I'd replace it with C#. I know you listed C# in the "enterprise languages" list, but it's a general-purpose language that has way more use cases than just enterprise ones, runs on all major platforms, and the best IDE for it (Visual Studio) is free for individual developers.
I'd avoid SOAP, GraphQL and anything cloud (AWS) or containerization (Docker) until the basics are mastered. For a junior, these are "nice to have" rather than important things they should know. GraphQL in particular isn't a "one size fits all" and has particular scenarios where it's useful, and a junior dev won't yet understand the nuance there.
Great feedback. I agree that cloud and containerization should follow other foundations, and point taken that these could be considered "nice to have" for many roles, but it also seems like the bar is moving more in the direction of "gotta have the basics" for those topics.
Agreed on GraphQL, that one would probably fit better beneath "Growth" skills rather than "Foundational."
Congratulations on graduating, and good luck with your job search, Jamey!
Thanks for this. I've been a frontend developer for 4 years, but heard the term "Browser event loop" for the first time today. Only knew about the event loop in Node.js.
Links to helpful resources would be a nice improvement here!
Thanks! Glad it was helpful.
While not linked in this post, we have published some guides recommending specific resources. Generally, our recommendations are comprehensive purpose built programs or learning paths, like App Academy Open, Odin Project, or paid resources like Udacity's Full Stack Nanodegree or a Codecademy career path. Those types of programs tend to be industry-aligned, have a nice flow that builds lesson upon lesson, along with hands-on practice.
But I also hear you on curating resources for the specific topics - would definitely take this list to the next level.
From a Junior I would expect basic SQL knowledge, basic HTML/CSS/JS skills and a good logic.
From the company that is hiring the Jr, I would expect patience and having a experienced developer able to guide the Jr.
Otherwise we fall into the loop of "I'm starting to work, need some experience / Need some Jr with experience to work."
Agree with you that companies need to provide great infrastructure to support juniors - experienced devs to guide them, career mentorship, and some well-defined and contained assignments as they're starting out. From my experience, companies are getting better at this all the time.
For a junior, woah. This is a seriously comprehensive list.