Forward Deployed EngineeringChoosing and planning your learning

Learning to code from zero after 30: a realistic first 12 weeks

PK
Pankit Kumar
Sr. Data Scientist at Parexel (a Goldman Sachs–backed company) · 27 September 2026 · 4 min read
In this article (6 sections)

Related programme: the FDE for Freshers course (6–7 months; EMI from ₹8,000/month · full fee shared on your counselling call). See also open Forward Deployed Engineer jobs in India, updated daily.

The short answer

You can learn to code from zero after 30, and the first 12 weeks should aim at one thing: writing small, complete Python programs from a blank file without copying. Expect slower syntax recall than a 20-year-old with free evenings, but faster judgement about what a program is for — which is the part most beginners lack.

What actually changes after 30

Most people who start late assume their memory is the problem. It rarely is. The real differences look like this:

Harder after 30Easier after 30
Finding two free hours in a rowKnowing what a business process is and why it breaks
Tolerating feeling stupid in front of younger classmatesAsking a precise question without embarrassment once you decide to
Recovering a week lost to family or workSticking to a schedule you have committed to
Unlearning "I must understand everything before I start"Spotting when a task is unclear and asking for acceptance criteria

The second column matters more than it seems. A forward deployed engineer spends much of the job turning a vague client request into working software, and ten years of handling customers, vendors or operations is directly useful there. The first column is what the plan below is designed around.

The 12-week sequence

Each block ends with a program you write yourself. If you cannot write it without looking, you repeat the block rather than moving on.

WeeksTopicFinish line
1–2Running Python, variables, print, input, arithmetic, stringsA tip-and-split calculator for a restaurant bill
3–4Lists, loops, if / else, dictionariesA categorised monthly expense summary
5–6Functions, reading and writing files, simple errorsA script that reads a CSV of expenses and writes a report file
7–8Debugging with tracebacks, try / except, testing with assertThe same script, now refusing bad rows with a clear message
9–10Command line basics, Git, a first repositoryThe project on GitHub with a README a stranger can follow
11–12SQL basics with SQLite, calling SQL from PythonExpenses stored in a table and queried by month

SQL enters late on purpose. Two languages at once is where most late starters stall.

Three checkpoint exercises

These are the tests. Close every tutorial, open an empty file, and time yourself.

Week 2 checkpoint. Ask for a bill amount, a tip percentage and a number of people; print each person's share rounded to two decimals. Target: under 20 minutes.

Week 4 checkpoint. Given a list of expense lines, total them by category. This is the one most people copy from somewhere; do not.

python
# Week 4 checkpoint: synthetic expense lines
lines = [
    "groceries,1240",
    "travel,380",
    "groceries,560",
    "phone,299",
    "travel,150",
]

totals = {}
for line in lines:
    category, amount = line.split(",")
    totals[category] = totals.get(category, 0) + int(amount)

for category in sorted(totals):
    print(f"{category:<10} {totals[category]:>6}")

assert totals == {"groceries": 1800, "travel": 530, "phone": 299}

Week 8 checkpoint. Extend the same idea so a malformed line does not crash the program but is reported.

python
lines = ["groceries,1240", "travel,abc", "phone,299", "badline"]

totals, rejected = {}, []
for number, line in enumerate(lines, start=1):
    parts = line.split(",")
    if len(parts) != 2:
        rejected.append((number, "expected two fields"))
        continue
    category, amount = parts
    try:
        value = int(amount)
    except ValueError:
        rejected.append((number, f"amount '{amount}' is not a number"))
        continue
    totals[category] = totals.get(category, 0) + value

print(totals)
for number, reason in rejected:
    print(f"line {number} rejected: {reason}")

assert totals == {"groceries": 1240, "phone": 299}
assert len(rejected) == 2

The week 8 version is the first program that behaves like real work. Client data is always dirty, and a script that explains why it refused a row is worth more than a clever one that crashes.

A week that fits a job and a household

Assume 7 hours. Split it so no session is longer than 90 minutes:

  • Monday, Wednesday, Thursday: 60 minutes each — new concept, then type every example yourself.
  • Tuesday: 30 minutes — redo last week's checkpoint from blank.
  • Saturday: 90 minutes — the block's finish-line program.
  • Sunday: 60 minutes — fix what broke, write two lines in a learning log about what confused you.

The Tuesday redo is the part people skip and the part that works. Recall, not rereading, is what moves syntax into long-term memory.

Signals to change the plan

Keep going if you can finish a checkpoint slowly but alone. Adjust if any of these repeat for two weeks:

  1. 1You understand every video but cannot start a blank file. Cut watching time in half and double the blank-file time.
  2. 2You spend sessions installing and configuring. Use one editor and one Python version; stop comparing setups.
  3. 3A traceback makes you close the laptop. Read the last line first. It names the error type and usually the line number.
  4. 4You missed a full week. Do not jump ahead to "catch up". Redo the previous checkpoint, then continue.

Where this leads

Twelve weeks gets you a foundation, not a job-ready profile. An FDE role also needs APIs, cloud basics, production habits and the client-facing craft that comes after programming. If you want that path mapped out, the FDE for Freshers programme starts from zero prerequisites, and the forward deployed engineer hub explains what the role involves before you commit. A useful first step is the free resume skill check, which shows which of your existing skills already count.

Frequently asked questions

Is 30 too old to start learning programming?

No. Age does not stop you from learning syntax or logic. What changes after 30 is usually time, energy and responsibilities, so the plan has to fit shorter sessions and be built around small finished programs rather than long unbroken study days.

How many hours a week does a beginner need to learn Python?

A steady 6 to 8 hours a week, split across at least four days, is enough to make visible progress in 12 weeks. Four short sessions beat one long Sunday because programming skill depends on repetition and recall, not on a single marathon.

PK
Pankit Kumar
Lead Instructor, NeuraPath Academy

Pankit Kumar has 10 years in Data Science & AI, building and shipping production systems in regulated pharma and clinical environments. He is a freelance trainer at Boston Institute of Analytics, AnalytixLabs and Scaler, and has taught this material to thousands of working professionals.

This article is part of our FDE for Freshers programme — 6–7 months. Build your engineering foundations, then take AI from discovery to delivery.

Explore FDE for Freshers
Counselling is free · no obligation

Not sure which programme fits?

Tell us your background and we will map it to the right entry point — including saying so when a cheaper programme is the better fit. A counsellor replies within one working day.