At Curricular, we spend hours researching, reviewing, and recommending the best ways to learn development skills.
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
Getting the Skills
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.