If you're a fresher trying to become a web developer, the hardest part is rarely the code. It's knowing what to learn first. Many beginners spend months jumping between tutorials, then find job posts asking for things they never practised.
This is the roadmap I'd follow: skills in order, a project for each stage, and a few code snippets for the concepts that trip people up in interviews.
It assumes 3-4 focused hours a day. If you're studying part-time, expect it to take about twice as long.
The roadmap at a glance
| Weeks | Focus | What you finish |
|---|---|---|
| 1-3 | HTML, CSS, Git | Responsive portfolio site |
| 4-7 | JavaScript | Three small interactive apps |
| 8-10 | React | Dashboard using API data |
| 11-13 | Node.js, Express, SQL/MongoDB | REST API with authentication |
| 14-15 | Integration, deployment | Live full-stack app |
| 16 | SEO, performance, interview prep | Polished portfolio |
Weeks 1-3: HTML, CSS and Git
Don't rush this stage. Every framework you learn later compiles down to HTML and CSS.
Focus on:
- Semantic tags (
header,nav,main,article,footer) - Flexbox and Grid
- Responsive layouts with media queries
- Basic accessibility (alt text, contrast, focus states)
A small example of a layout that adapts without a framework:
.cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 1rem;
}
Project: a mobile-first website for a local cafe or shop. No Bootstrap.
Learn Git in week one, not week twelve. You need commit, push, pull, branching, merging and pull requests.
Weeks 4-7: JavaScript (spend the most time here)
Weak JavaScript is a common reason freshers struggle in technical rounds. Closures and async behaviour come up constantly, because they separate people who understand the language from people who memorised snippets.
A classic closure example:
function makeCounter() {
let count = 0;
return () => ++count;
}
const counter = makeCounter();
counter(); // 1
counter(); // 2
And fetching data with proper error handling, which beginners often skip:
async function getUsers() {
try {
const res = await fetch("https://jsonplaceholder.typicode.com/users");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
return await res.json();
} catch (err) {
console.error(err.message);
return [];
}
}
Projects: an expense tracker, a to-do app, a quiz app, all without a framework.
Weeks 8-10: React
Learn React only after you can build an interactive page without it. Otherwise you end up copying patterns you can't debug.
Cover components, props, state, useEffect, routing and forms. Always handle loading and error states, because that's where junior code usually breaks:
function Users() {
const [users, setUsers] = useState([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
useEffect(() => {
getUsers()
.then(setUsers)
.catch(() => setError("Something went wrong"))
.finally(() => setLoading(false));
}, []);
if (loading) return <p>Loading...</p>;
if (error) return <p>{error}</p>;
return <ul>{users.map(u => <li key={u.id}>{u.name}</li>)}</ul>;
}
Project: a movie or recipe finder that uses a public API.
Weeks 11-13: Back end and databases
Pick one stack and go deep. If you already know JavaScript, Node.js with Express is the quickest route.
Learn routing, middleware, validation, authentication and environment variables. Security belongs here from day one. For example, never store plain-text passwords:
import bcrypt from "bcrypt";
const hash = await bcrypt.hash(password, 10);
// store `hash`, never `password`
const isMatch = await bcrypt.compare(inputPassword, hash);
For databases, learn SQL first (joins, grouping, indexes), then MongoDB. A good test: design a schema for an online store with users, products, orders and order items, then write a query for the five best-selling products last month.
Project: a job board or mini store with login and CRUD.
Weeks 14-15: Deploy everything
A project that only runs on your laptop is a draft. Put every project online (Vercel, Netlify and Render all have free tiers, but check current limits).
Also learn what happens beyond clicking Deploy:
- How domains and HTTPS work
- Environment variables in production
- Reading build logs when a deploy fails
Never put secret keys in front-end code. Anyone can read them in the browser.
Week 16: SEO, performance and interview prep
Most freshers skip this, which is exactly why it helps you stand out.
- Run Lighthouse on every project and fix what it flags
- Learn Core Web Vitals (LCP, INP, CLS)
- Write unique titles, meta descriptions and a logical heading order
- Practice explaining your design decisions in about a minute
A note on AI coding tools
They're great for boilerplate, test data and explaining error messages. But treat them like a fast junior pair programmer: often useful, sometimes wrong. Review every line, run the tests, and don't commit code you can't explain. Interviewers increasingly ask you to walk through your own project live.
Portfolio checklist
- [ ] 3-5 deployed projects with live links
- [ ] A README for each with a screenshot, tech stack and setup steps
- [ ] Clean commit history
- [ ] A short case study for your best project
Mistakes to avoid
- Watching tutorials endlessly without building anything
- Learning several frameworks at once
- Skipping JavaScript fundamentals
- Never deploying
- Waiting until you "feel ready" to apply
Apply when you have around three live projects you can explain confidently.
Wrapping up
You don't need to learn everything for your first job. HTML, CSS, JavaScript, Git, one framework, one back-end stack and a database, all deployed, is enough to get shortlisted.
What are you learning right now? Share your stack or your first project in the comments, and I'll try to help.
Top comments (0)