Which Skills Are Essential for Junior Full Stack Developers? ✅ 👩‍💻
Tags: fullstack, beginners, learning, discuss
Published: 2024-01-09 14:32:00

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](https://curricular.dev/guides/?ref=devto&src=fsskills)

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](https://dev.to/brian_curricular/which-skills-are-essential-for-juniors-front-end-developers-4lhm).

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](https://curricular.dev/quickstarts/fullstack_quickstart/?ref=devto&src=fsskills).