Phase 1: one language, properly (2-3 months)
The goal of this phase is not familiarity with a language - it is the ability to turn a described problem into working code without hand-holding. Pick one language and stay in it.
- ✓Syntax, control flow, functions, and the built-in data structures your language provides.
- ✓Object-oriented basics if the language is object-oriented: classes, objects, inheritance, interfaces, and when to use each.
- ✓Error handling, file input and output, and the standard library - most beginners badly under-learn the standard library.
- ✓Write at least fifty small programs. Not tutorials followed along with, but problems solved from a description.
- ✓End-of-phase test: you can write a program of two or three hundred lines that reads input, processes it and produces output, and you can debug it without copying the error message into a search engine.
Practice this now
Phase 2: computer-science core (3-4 months)
This is the phase people skip, and it is the one that separates a developer who can only assemble tutorials from one who can reason about a system. It is also what technical interviews test most directly.
- ✓Data structures - arrays, strings, linked lists, stacks, queues, hash tables, trees, heaps, graphs - implemented at least once by hand, then used from the standard library.
- ✓Algorithms and complexity - sorting, searching, recursion, two pointers, sliding window, basic dynamic programming, graph traversal, and Big-O analysis for all of it.
- ✓Databases - relational modelling, keys, normalisation, and real SQL: joins, grouping, subqueries, indexes and what makes a query slow.
- ✓Operating systems - processes and threads, memory management, scheduling, concurrency and deadlock.
- ✓Networking - the layered model, TCP versus UDP, HTTP and HTTPS, DNS, and what happens between typing a URL and seeing a page.
- ✓End-of-phase test: you can pick the right data structure for a problem and justify it by complexity, and you can write a multi-table SQL query without looking up the syntax.
Practice this now
Phase 3: tooling that professionals assume you have (2-3 weeks)
Short but non-negotiable. These are the things nobody will teach you on the job because everyone assumes you already know them, and not knowing them is immediately visible.
- ✓Git properly - branching, merging, rebasing, resolving conflicts, and writing commit messages a colleague can read. Not just push and pull.
- ✓The command line - navigating, piping, searching with grep, permissions, and running things on a remote machine over SSH.
- ✓A real editor or IDE, including its debugger and its refactoring tools.
- ✓Reading documentation as a first resort rather than a last one.
- ✓Basic testing - writing unit tests, and understanding why untested code is a liability rather than a saving.
Practice this now
Related reading
Phase 4: build real applications (3-4 months)
This is where you become employable, because this is where the evidence gets made. The target is not 'learn a framework' but 'ship something that works, that other people can use, and that you can explain completely'.
- ✓Pick a track - web frontend, backend, mobile or data - and learn its standard stack rather than sampling all of them.
- ✓For web: HTML and CSS, a frontend framework, a backend framework, a database, and REST API design including authentication.
- ✓Deploy your work. A project running at a URL is worth several projects sitting in a folder, because deployment forces you to meet real constraints.
- ✓Build two or three substantial projects, not ten trivial ones. Substantial means it stores data, handles errors, has more than one user flow, and does something a person would actually want.
- ✓Write a readme that explains the problem, your approach and the trade-offs. Interviewers read it, and it doubles as rehearsal for the conversation.
- ✓End-of-phase test: you can walk someone through your project's architecture and defend every significant decision in it.
Practice this now
Phase 5: system design basics (1 month)
Only the basics, and only after phase 4. Entry-level interviews rarely ask you to design a distributed system, but they frequently ask why you structured your project the way you did - and that is system design at the scale that matters for a first job.
- ✓Client-server architecture, what a load balancer does, and where caching helps.
- ✓Databases at a design level: when to use a relational database, when a document store makes sense, and what an index costs.
- ✓API design - resource modelling, status codes, pagination, versioning, idempotency.
- ✓Authentication and authorisation, sessions versus tokens, and password storage done correctly.
- ✓Enough about scaling to discuss it honestly: vertical versus horizontal, statelessness, and the difference between a bottleneck you measured and one you assumed.
Practice this now
Phase 6: interviews and the job hunt (ongoing, 2-3 months)
- ✓Data structures and algorithms practice under time pressure - problems solved on a clock, explaining your reasoning aloud as you go.
- ✓Core-subject revision as MCQs: DSA, DBMS, operating systems, networks, OOP. Written tests hit these hard.
- ✓Aptitude and reasoning if you are targeting companies that screen with them, which in India means most mass recruiters.
- ✓A rehearsed project walkthrough - two minutes and ten minutes - plus honest answers about what you would change.
- ✓Behavioural preparation: four STAR stories, a genuine reason for wanting each company, and an honest bounded weakness.
- ✓Apply widely and early. The first few interviews are training regardless of outcome, so do not save your best applications for after you feel ready.
What to skip (for now)
Popular roadmaps include everything, which makes them useless as roadmaps. Here is what you can defer without cost until after your first job.
- ✓Microservices, Kubernetes and service meshes. These solve organisational problems you do not have yet.
- ✓Advanced system design - consensus protocols, sharding strategies, event sourcing. Not asked at entry level.
- ✓More than one frontend framework. Learn one well; the second takes a fortnight when you need it.
- ✓Blockchain, unless you specifically want to work in that field.
- ✓Design patterns as a memorised catalogue. Learn them when you meet the problem each one solves, or they become vocabulary without judgement.
- ✓Certifications for general software engineering roles. Projects and fundamentals carry the weight here, unlike in cloud or security where certifications do count.
Practice this now
Honest timelines
Two things move these numbers more than talent does. Consistency beats intensity - an hour daily outperforms a weekend marathon, because programming skill consolidates through repeated practice. And building beats consuming: the people who take longest are almost always the ones who kept taking courses instead of shipping something.
| Your situation | Realistic timeline | The main risk |
|---|---|---|
| CS student, alongside coursework | Across years 2 and 3 | Leaving projects until placement season |
| Non-CS graduate, full-time study | 12-15 months | Skipping the CS core in phase 2 |
| Working professional, 10-12 hours a week | 18-24 months | Losing consistency, not lacking ability |
| Career changer with an analytical background | 12-18 months | Underestimating how long real projects take |
Practice this now
