How to Start Learning Programming From Zero: A Realistic 6-Month Roadmap
Almost every week someone tells me they have been learning to code for a year and still cannot build a simple login page on their own. It is almost never a talent problem. It is the order they studied things in and the way they spent their hours. What follows is the exact sequence I would give my own younger brother if he told me he wanted to start tomorrow. There is no magic shortcut, but there is a path considerably shorter than the one most people walk.
First decide the destination, not the language
The first question beginners ask is which language to learn. It is the wrong first question, because a language is just the tool that follows from the thing you want to build. Answer this instead: six months from now, what is the one thing you want to be able to point at and say you made it? The language then chooses itself.
- Websites, landing pages, online shops, web apps: HTML and CSS, then JavaScript
- Cutting repetitive office work, reports, data analysis, first steps into AI: Python
- Mobile apps: Dart with Flutter, which gets you both iOS and Android from one codebase
- Games: C# with Unity, or Scratch if you are teaching a child
- Genuinely undecided: pick Python if you work in an office, JavaScript if you want something visual on screen fast
The six-month roadmap in four stages
This plan assumes 6 to 10 real hours a week, which is what people with full-time jobs sustain without burning out. More time compresses it, less time stretches it, but do not skip stages. Every skipped stage comes back as a pothole in month three, usually on the evening you were feeling most motivated.
Stage 1, weeks 1-2: stop being afraid of the machine
- Install Visual Studio Code and learn to open a folder as a project rather than opening single files
- Understand file paths and folder structure properly. You should always know where on disk the file you just saved actually lives
- Learn three terminal commands: cd to move into a folder, ls or dir to see what is in it, mkdir to make a new one
- Install Python or Node.js and run your first file from the terminal yourself, not from a button in a tutorial site
- Create a GitHub account and push one file up, even if it contains a single line
This sounds trivial, and it is where the most silent quitting happens. Someone who cannot confidently say which folder their file is in will experience programming as uncontrollable magic forever. Two weeks here is the highest-return investment on the entire path.
Stage 2, weeks 3-8: one language, the 20 percent that matters
You do not need the whole language. Roughly 20 percent of it covers about 80 percent of everyday code. Get fluent in that first, and leave the clever features for later.
- Variables and basic types: numbers, text, true and false
- Conditions with if and else, and how comparisons behave
- Loops: for and while
- Functions: take something in, do work, hand something back
- Core data structures: lists and dictionaries in Python, arrays and objects in JavaScript
- Reading error messages, which matters more than the entire remaining half of the syntax
# The 20% you use almost daily: variable, dictionary, loop, condition, function
def over_budget(spent, budget):
return spent > budget
monthly_budget = 8000
spending = {"Jan": 7200, "Feb": 9100, "Mar": 6400}
for month, amount in spending.items():
if over_budget(amount, monthly_budget):
print(month, "over by", amount - monthly_budget)
else:
print(month, "within budget")Those ten lines use every item on the list above. If you can write something like that from an empty file without copying anyone, stage 2 is done. The target for this period is roughly 25 to 30 small exercises you actually typed, not a playlist you finished watching.
Stage 3, weeks 9-14: build three things nobody asked for
- 1A personal profile page where you wrote the layout yourself instead of downloading a template
- 2Something that pulls data from a public API and displays it, such as exchange rates, gold prices or the weather. This is where you meet JSON for the first time
- 3Something that fixes a real annoyance in your own life or job: a script that merges the monthly Excel files, a page that tracks household spending, a bot that reminds your team about deadlines
The third project is the one that changes everything, because you will be the only person on earth who knows how it is supposed to behave. There is no solution to copy. It is also the project you will talk about most naturally in an interview, because you will not be reciting anything.
Stage 4, weeks 15-24: git, deployment, portfolio, feedback
- Learn four git commands: add, commit, push, pull. That is enough for your first year
- Put every project on GitHub with a README that says what it is, how to run it, and what you used
- Deploy for real on a free tier of Vercel, Netlify or Render so anyone can open your work from a link
- Get your code reviewed by a human at least once, whether a teacher, a senior friend or an online community. People who are never reviewed pick up habits they cannot see
- Write a one-page CV with the project links at the very top, not a list of courses you attended
How long each stage really takes
What determines when you finish is not the number of months but the number of focused hours. Someone doing 12 hours a week will leave someone doing 3 hours a week far behind even though they started on the same day. These are the numbers we see from real learners.
| Stage | Focused hours | At 5 hrs/week | At 12 hrs/week | Done when |
|---|---|---|---|---|
| 1. Tools and setup | 10-15 hrs | 2-3 weeks | 1 week | You can create a project folder and run a file from the terminal without searching for how |
| 2. Language core | 60-80 hrs | 3-4 months | 6-7 weeks | You can write a 50-line program from an empty file unaided |
| 3. First three projects | 80-120 hrs | 4-6 months | 2-3 months | All three run on someone else's computer, not only yours |
| 4. Git, deploy, portfolio | 20-30 hrs | 1-1.5 months | 2-3 weeks | A stranger can open your work from one link |
That totals roughly 180 to 250 focused hours before you can apply for junior roles without cringing. To be straight with you, that is the floor, not the finish line. Your first year in a real job will teach you several times what these six months did. But those 250 hours are the door that lets you keep learning while someone else pays for it.
The five mistakes that make people quit
- 1Tutorial hell. It makes perfect sense while you watch and evaporates the moment the video stops. The rule: never open a second tutorial before you have built something with the first one.
- 2Perpetual restarting. Plenty of people take the same beginner course for the fourth time because they still feel shaky. That feeling does not go away by starting again. It goes away by building a project slightly harder than you are comfortable with.
- 3Three languages at once. Python this week, JavaScript next week, Java the week after. You end up shallow in three things and employable in none. Pick one and stay with it for six months.
- 4Pasting code without reading the error. You grab a fix from the internet or an AI, the red text disappears, and you move on without learning the thing the error was trying to teach you. Next time you are stuck in exactly the same place.
- 5Studying alone with no deadline. Nobody is waiting for the work, nobody checks it, nothing is due. The busy week arrives, you skip, and you never come back.
Notice that not one of those is about mathematical ability or intelligence. All five are about systems and environment, which means all five are fixable.
A weekly routine that survives a full-time job
- Four sessions of 60 to 90 minutes beats one six-hour Sunday. Your brain consolidates in the gaps between sessions, not during them
- End every session by writing one line about what you will do next time. That alone saves you roughly 15 minutes of warm-up each session
- Finish one small project a month. Finished and imperfect always beats perfect and unfinished
- Spend 20 minutes on a Friday rereading code you wrote three weeks ago. If it looks bad to you now, that is the measurement: you improved
- Put your study blocks in the calendar like a dentist appointment. Waiting until you feel free does not work, because that day never arrives
What to do the moment you get stuck
The skill that separates people who can program from people who cannot is not memorising syntax. It is reading errors. Here is a real one from the budget program above.
Traceback (most recent call last):
File "budget.py", line 9, in <module>
print(month, "over by", amount - monthly_budget)
TypeError: unsupported operand type(s) for -: 'str' and 'int'- 1Read the bottom line first. It tells you what went wrong: something tried to subtract a number from a piece of text
- 2Read the file name and line number. It tells you where: budget.py, line 9
- 3Go back and ask where the value you assumed was a number came from, and at what point it became text
- 4If you still cannot see it, print the value just before the line that breaks. One print beats an hour of guessing
- 5Search using only the final error line. Do not search your own file names or variables, because nobody else on the internet has your exact code
How to tell whether you are actually improving
The problem with self-study is that there are no grades, so you never know where you stand. Use these five checkpoints instead. You can test yourself on each in ten minutes.
- You can explain out loud what the function you just wrote does, what it takes in and what it gives back
- You can guess roughly where the problem is from an error message before you even open the file
- You can start from an empty file without digging up an old project to copy the skeleton
- You can read someone else's code and follow their intent, even if you could not have written it yourself
- You can estimate how many hours a small feature will take and be wrong by less than a factor of two
If you look at code you wrote three months ago and feel no embarrassment at all, those three months did not move you.
What the job market actually looks like
To be honest with you, nobody can guarantee you a job. Junior roles in Thailand are competitive, and what gets you past the first screen is work someone can open plus your ability to explain your own code, far more than the number of certificates you hold. The figures below are ranges commonly seen in the Thai market in 2026 and vary by company, team size and province.
| Role | Typical range (THB) | Notes |
|---|---|---|
| Junior web developer (Bangkok) | 20,000-35,000 / month | Software houses and agencies usually want 2-3 projects to look at |
| Junior developer (outside Bangkok) | 15,000-25,000 / month | Fewer openings, but fewer applicants too |
| Junior data / automation with Python | 22,000-40,000 / month | A big advantage if you bring domain knowledge from a previous career |
| Freelance small business website | 8,000-40,000 / project | Depends on page count and back office needs. Always budget time for revisions |
| 2-3 years of experience | 45,000-80,000 / month | The steepest part of the curve if you picked a stack with demand |
For readers in Laos, the salaried market is smaller and local pay is meaningfully lower than in Thailand. The people we see doing best usually combine a local role with remote or freelance work for clients in Thailand and abroad, which makes technical English and a portfolio anyone can open online more valuable than a degree.
Start this week, not next month
Everyone who can code today once sat staring at a black screen with no idea what to type. The only real difference is the date they started. If you have read this far and still do not know what to do first, do these three things within seven days.
- 1Install VS Code plus Python or Node.js and successfully run your first file from the terminal. Budget one hour
- 2Block four one-hour slots in next week's calendar and name each one after what you will actually do in it
- 3Write down on paper the one thing you want to point at in six months, and stick it somewhere you see every day
All of this is free and it genuinely works if you have the discipline. If you know your weak point is having nobody to check your work and no deadline, a live small-group class fixes exactly that. At ALL IN ONE STATION our Web Development and Python & AI courses run 3 months and 36 hours with 6 students per teacher and end in a portfolio project. But whether you learn with us, with someone else, or entirely on your own, the sequence above does not change.
Frequently asked
Starting from zero, how long until I can apply for jobs?
From what we see with real learners, roughly 180 to 250 focused hours before you are ready to apply for junior roles with work to show. At 6 hours a week that is about 8 months; at 12 hours a week it drops to around 4 or 5. Hours spent building are what count, not months on the calendar.
I am bad at maths. Can I still learn to program?
Yes. Most web and automation work needs arithmetic and if-then logic, which is a completely different thing from calculus. Serious maths only becomes necessary if you go deep into machine learning or 3D graphics, and that is a second-year concern at the earliest.
Do I need an expensive computer?
No. A laptop with 8GB of RAM and an SSD handles almost all web and Python work comfortably. Powerful hardware only matters when you train large AI models or edit video, and you can upgrade when you actually reach that point.
I am 35. Is it too late to start?
It is not, and working adults often have the advantage: you understand business context and you have discipline that fresh graduates have not developed yet. The fastest route for you is usually to solve a problem inside your current job first, such as automating a report, then move into tech from there.
Want someone to check your work?
Self-study gets you part of the way. Having your code reviewed gets you there faster. Free consultation, no obligation.
Chat free on WhatsApp