Before You Start: What You Actually Need
Beginners often stall before they even open an editor because they think they need something they don't have yet — a powerful laptop, a computer science degree, or a "logical brain." None of that is true. Here's what you genuinely need, and what you can safely ignore.
- Any laptop from the last 6–8 years, Windows, Mac, or Linux — Python and VS Code run comfortably on modest hardware.
- A stable internet connection for documentation, videos, and pushing code to GitHub.
- Roughly one hour a day of focused, distraction-free time — consistency beats occasional long sessions.
- A notebook or notes app to write down what confused you — you will come back to it, and re-reading your own confusion is one of the fastest ways to learn.
- Comfort with being confused for long stretches — this is normal and it does not mean you are "not cut out for it."
- Free accounts: GitHub, a code editor (VS Code), and whichever course platform you pick from the resource table below.
Notice what's missing from that list: a computer science degree, expensive courses, a powerful GPU, or prior coding experience. None of those are prerequisites for Phase 1.
Phase 1: Foundations (Months 1–3)
The goal of Phase 1 is not to learn everything — it is to learn enough to build something. Most beginners try to "finish learning Python" before starting projects. This is backwards. You learn by building.
Choose Python — and Commit
Do not agonise over the choice. Python is the correct answer for beginners in 2026. It is readable, versatile, has the best job market, and every major AI tool is Python-first. Install Python and VS Code. Spend two hours getting familiar with the environment before writing a single line of code.
Learn the Core Language (6 weeks)
Variables, data types, conditionals, loops, functions, lists, dictionaries, and basic file I/O. Use Python.org's official tutorial or CS50P (free). Do not watch tutorials passively — type every example yourself. If you can write a function that processes a list and returns a result, you have the foundations.
Build Three Small Projects
A number guessing game. A simple calculator. A to-do list that saves to a file. These feel trivial, but building them from scratch — no tutorials, just you and documentation — is where learning actually happens. Struggle through them. Do not look up the solution until you have genuinely tried.
Learn Git from Day One
Version control is not optional. Every professional developer uses Git. Install Git, learn init, add, commit, push. Create a GitHub account and push every project you build. This builds your portfolio from week one and teaches a critical tool early.
How to Actually Learn a New Concept (Not Just Watch It)
Phase 1 fails for most beginners not because Python is hard, but because of how they study it. Watching a video feels like progress because you understand every sentence as it plays — but understanding someone else's explanation is not the same skill as producing the code yourself from a blank file. These five habits close that gap:
Close the tutorial, then rebuild it
After watching or reading an explanation, close it entirely and try to rebuild the example from memory. Where you get stuck tells you exactly what you didn't actually learn.
Explain it out loud to no one
Talk through what a piece of code does, line by line, as if teaching it. Vague hand-waving in your explanation reveals a gap in your understanding — this is sometimes called the "rubber duck" technique.
Space out your review
Revisit a concept a day later, then a week later, instead of only the day you learned it. Spaced review is one of the best-documented ways to move something from short-term to long-term memory.
Change the problem slightly
Once a tutorial example works, deliberately modify the requirements — different input types, an extra feature, an edge case — so you're solving a new problem instead of recalling a memorised solution.
Read error messages fully
Beginners often panic and search the first three words of an error. Read the whole traceback — it usually names the exact file, line, and cause. Learning to read errors calmly is a core skill, not a shortcut around one.
Phase 2: Specialisation (Months 4–8)
Once you have the foundations, you choose a track. The three most employable paths for beginners:
Choosing Your Track: Quick Comparison
If you're stuck deciding between tracks, this is the honest breakdown of what day-to-day work and prerequisites actually look like in each one:
| Track | Math comfort needed | Visual feedback | Day-to-day work |
|---|---|---|---|
| Web Development | Low | High — you see what you build instantly | Building UI features, wiring up APIs, fixing layout and logic bugs |
| Data Science / ML | Medium–High | Medium — charts and metrics, not visual UI | Cleaning data, running experiments, interpreting model results |
| Backend / API Dev | Low–Medium | Low — most work is invisible to end users | Designing data models, writing endpoints, thinking about scale and security |
| AI / LLM Engineering | Medium | Medium — outputs are text/behaviour, not UI | Prompt and pipeline design, connecting APIs, evaluating model outputs |
Not sure which fits? Start Track A (Web Development) by default — it has the widest job market, the fastest visual feedback loop to keep you motivated, and everything you learn (Git, APIs, deployment, debugging) transfers directly if you switch tracks later.
Phase 3: Portfolio and Job Prep (Months 9–15)
Your portfolio is your CV. Hiring managers look at GitHub before they look at your resume. Here is what a competitive portfolio looks like for a junior developer:
What hiring managers weigh when reviewing junior developer applicants.
Build one project that solves a real problem you or someone you know actually has. Not a tutorial project. Not a clone. Something real. Hiring managers can tell the difference in 30 seconds — and one real project beats five tutorial clones every time.
The Best Free Resources at Each Phase
| Phase | Resource | Why It's Good |
|---|---|---|
| Phase 1: Python | CS50P (Harvard, free) | Best structured Python course for beginners. Project-based. Free certificate. |
| Phase 1: Python | Automate the Boring Stuff (free online) | Practical projects from day one. Teaches real Python use cases. |
| Phase 2: Web | The Odin Project (free) | Best free full-stack web dev curriculum. Project-heavy. Community support. |
| Phase 2: Data | Kaggle Learn (free) | Short, practical data science courses with real datasets. Certificates included. |
| Phase 3: Algorithms | NeetCode.io (free tier) | Structured LeetCode preparation with clear video explanations. Essential for interviews. |
| Phase 3: Portfolio | GitHub Pages (free) | Host your portfolio website and projects for free. Essential for visibility. |
Tutorial hell. Watching tutorials endlessly without building anything. After every tutorial, build something from scratch using the concepts — even if it's small.
Perfect roadmap seeking. Spending weeks researching which language to learn instead of just starting. Python. Start today.
Learning breadth instead of depth. Touching JavaScript, then Python, then Java, then Go, then... Pick one language and go deep. Breadth comes after foundations.
The Job Application Process, Step by Step
Having a portfolio doesn't automatically translate into interviews — applying is its own skill, and most beginners do it inefficiently. Here's a more deliberate process:
Tailor the resume to the listing
Mirror the exact technology keywords from the job posting (e.g. "React", "REST API", "PostgreSQL") in your resume — many companies filter applications by keyword before a human ever reads them.
Lead with projects, not job history
As a junior candidate with little or no professional experience, put your strongest project at the top with a one-line description of the problem it solves and the stack used — not buried under an "Education" section.
Apply in weekly batches
Set aside a fixed block of time each week to apply, rather than one at a time whenever you feel like it. Batching keeps momentum and turns applying into a habit instead of a dreaded occasional task.
Prepare a two-minute portfolio walkthrough
Practise explaining your best project out loud: the problem, your approach, one technical decision you're proud of, and one thing you'd improve. Interviewers ask this constantly — have a rehearsed, confident answer ready.
Practise explaining your thinking, not just the answer
Technical interviews weigh how you approach a problem as much as whether you solve it. Practise narrating your reasoning out loud while solving practice problems, not just silently typing the solution.
Follow up, then move on
A short, polite follow-up after a week of silence is reasonable. After that, put your energy into the next application rather than waiting — a slow "no" from one company shouldn't stall your whole search.
Your first developer job will feel disorienting even after a strong portfolio — that's normal, not a sign you're underqualified. Expect a real codebase to look messier and larger than any tutorial project. Expect to ask "obvious" questions; good teams expect this from juniors and would rather you ask than guess. Expect code review comments on almost everything you submit at first — that's how you learn the team's standards, not a judgement of your ability. The developers who struggle most in their first months aren't the ones who ask the most questions — they're the ones too anxious to ask any.
Frequently Asked Questions
Do I need a computer science degree to become a developer?
No. Many working developers are self-taught or came from bootcamps and free resources like the ones in this roadmap. A degree can help with certain large companies' initial resume filters, but a strong portfolio of real, deployed projects is what actually gets you interviews and offers at most companies.
Is it too late to start learning to code as an adult?
No. People successfully switch into development careers at every age. What matters far more than your starting age is consistency — an hour a day for a year outperforms a few intense weeks followed by giving up.
Should I learn multiple programming languages at once?
Not at the beginning. Learning breadth before depth is one of the three beginner traps covered above. Get comfortable in one language first — the core concepts (variables, loops, functions, data structures) transfer to every other language once you understand them properly in one.
How much algorithm and LeetCode-style practice do I actually need?
Enough to comfortably solve easy-to-medium problems involving arrays, strings, hash maps, and basic recursion — most junior interviews don't go far beyond that. Treat it as one part of Phase 3 preparation alongside your portfolio, not a substitute for having built real projects. A candidate with three solid deployed projects and adequate algorithm practice will usually out-interview one with excellent algorithm skills and no real projects.
What if I don't have time for a coding bootcamp?
You don't need one. Every resource in the free-resources table below has a high-quality free version, and this entire roadmap is designed around self-paced study — 1–2 hours a day fits around a full-time job, school, or other commitments. See the free-resources table above for a starting point at each phase.
· · ·
Key Takeaways
What to Remember
- The order matters: foundations first (Python + Git), then specialisation, then portfolio, then job applications
- You can become job-ready in 12–18 months studying 1-2 hours per day — no bootcamp or degree required
- Choose a track based on your goals: web dev (most jobs), data science (highest salaries), AI engineering (fastest growth)
- Portfolio beats CV — 3-5 real, deployed projects matter more than any certification
- Build one real project that solves an actual problem — it beats five tutorial clones every interview
- The three traps: tutorial hell, perfect roadmap seeking, and learning breadth before depth