Career

Learning to code in Iraq: the path I would take if I started today

If I were starting today I would not begin with a framework or a long course. The path I recommend, based on the systems I build and the teams I work with.

Mohammed Jawad5 min read
  • learning to code
  • beginners
  • career path
  • AI
  • Iraq
A sketchbook, an old computer and a cup of tea on a desk under a night light

In short

  • Start with a small, real problem that someone you know has, not with a language or a framework.
  • One language is enough to begin with: JavaScript, then TypeScript, because it opens up the web, the backend and mobile.
  • AI does not remove the need to understand. It raises the value of people who know what to ask for, can read what was written and can test it.
In this article

The question I get most is where to start. My answer today is not the one I would have given some years ago, because the tools have changed. One thing has stayed the same: a person who learns to code by building something for a real person gets ahead faster than one who learns by watching lessons.

One rule before anything else

Do not start with a language or a framework. Start with a small problem that someone you know has: a stock sheet for a nearby shop, a booking page for a clinic, a menu for a restaurant. Once you know what you want to build, the language is just a tool, and learning turns into a question you are trying to answer instead of a lesson to memorise.

Learn so that you can build something. Do not build to prove that you have learned.

Why lessons fool us

Watching a lesson feels like progress, because everything in it works and every step makes sense. Then you open the code editor on your own and face an empty page. The gap between those two feelings is where the real learning happens, and you only close it by building something yourself.

I am not telling you to drop the lessons. Use them to serve your project, not to stand in for it.

Choose your first project

A good first project has four qualities:

  • It is small enough to finish, because a project that never ends does not teach you to deliver.
  • It is for a real person who can tell you whether it is useful.
  • It has data that gets saved and displayed, not just a static page.
  • It comes from a business you understand: a nearby restaurant, a clinic, a shop in your neighbourhood, or a school.

The path as I see it

These steps do not take much money, but they do take patience. I give no timings, because everyone covers them at their own pace.

  1. Write a web page from scratch

    HTML, CSS and a little JavaScript. Make it about yourself or about your project.

  2. Give it data

    A simple database that saves and displays, such as a product list or appointments.

  3. Publish it on a real domain

    This is where you learn hosting and domains, and that something nobody can see is not finished yet.

  4. Put it in front of a real user

    Watch them use it, and change whatever confuses them. This step teaches you more than any course.

  5. Learn the habits of a team

    Version control with Git, reading code someone else wrote, writing a clear commit message, and a simple test.

One language instead of five

I recommend JavaScript, then TypeScript. The reason is practical: with them you can write a website, a backend and a mobile app. Most of the systems I have worked on recently, Madar and Taeen among them, are built largely in TypeScript.

I do not claim it is the best at everything. It opens more doors in less time. And once you have mastered it, a second language comes easily, because the same ideas keep coming back.

Also readThe tech job market in Iraq: what employers actually look forThe Iraqi market5 min read
Used programming books on a dark shelf under the light of a desk lamp and a cup of tea
The fundamentals change very little. They are what remains when the tools move on.

University, course or project

I am not against any of these paths. Each one gives you something and may leave something out.

Three paths that complement one another
ItemUniversityCourseLearning by project
What it gives youA broad theoretical foundation and a degreeAn ordered path with a trainerReal experience and work you can show
What it may lackPractice on real projects, unless you add it yourselfCarrying on by yourself once it endsSomeone to correct and guide you
Suits someone whoWants a broad foundationNeeds discipline and guidanceWants to enter the market quickly

A mix works best: a foundation from one of them, then a real project on top. Thinkra was built on the same idea. It is an education platform, and I worked on parts of it, including the mobile app, the exams, the certificates and the live lessons. Recorded courses are not enough on their own. A learner needs a trainer who answers their questions and follows their progress.

Skills that last when everyone writes with AI

Tools change quickly. Here are three skills that I think will keep their value, whoever writes the code.

Use AI as a teacher, not as a writer

I work with AI agents every day, and I write instructions for them on every project. An agent can write in minutes what used to take a day. That does not spare you the need to understand. It raises the value of three things: knowing what to ask for, reading what was written and judging it, and testing it before it reaches a user.

Warning: Do not copy what you do not understand

Ask the assistant to explain the code line by line, then rewrite it yourself. If you copy without understanding, what you build falls over at the first error, and you will not know how to fix it.

Learn the business alongside the code

To be frank, the most important thing I ever learned was how to understand the business of the person I am building for, and that is not a programming language. A programmer who sits down with the shop owner, asks how they make money and where they lose it, and only then writes the code, builds something that gets used. When everyone is writing code with the help of AI, this is the skill that sets one programmer apart from another.

Read English from day one

Arabic is not the problem. Most first-hand sources are written in English, and whoever waits for a translation is always behind. You do not need to master the language. You need to be able to read documentation and understand an error message.

Learn to read the whole error message before you paste it to someone else, too. Half the solution is usually written there, and people who read these messages properly save themselves hours.

Show what you built and apply with confidence

A project nobody sees does nothing for you with an employer. Write a short page for each one: what the problem was, who you built it for, what you built, what you learned, and a link the reader can open. I write the project pages on this site the same way: the problem first, then what was built, then the result.

If nobody but you has used it, say so. Being honest about the limits of your project is better than an inflated number.

How you know you are progressing

Go back to code you wrote a few weeks ago. If you can see how to improve it, and parts of it are a little embarrassing, that is a good sign. It means your eye is sharper than it was. Progress shows up here before it shows on any certificate.

When to apply for a job

Nobody is going to announce the day you are ready. My own test is simple: you have a project that someone other than you uses, you can explain why you made the decisions in it, and you can open someone else’s code without fear. When those come together, apply. Do not wait until you feel completely ready, because that feeling never arrives.

What holds you back

Two obstacles come up again and again: the conditions you are learning in, and the habits that keep you where you are.

Learning with an unstable internet

Many learners here study with an unreliable internet connection and unreliable electricity. Do not let that become an excuse. Prepare for it: run a server and a database on your own machine, download the documentation you need, and work on whatever does not need a connection. Along the way you will learn how the thing you are building works on the inside.

Signs that you are going in circles

If you recognise one of these, stop and build something

Note: About promises

Do not pay anyone who guarantees you a job. Nobody can guarantee one, and anyone who promises it is selling you hope. Ask instead what you will build during the course, and what work you will leave with.

The short version

Start with a small, real problem. Build it, publish it, and put it in front of a user. Do that a few times and you will have something to show an employer. That is the path I would take if I were starting today.

Projects mentioned in this article

Questions

Do I need a university degree in computing to become a programmer?

I do not think it is a requirement, though it does give you a broad foundation. Whichever path you take, what settles it for an employer is what you have actually built.

Which language should I start with?

JavaScript, then TypeScript, because with them you can write a website, a backend and a mobile app. They are not the best at everything, but they open more doors in less time.

Should I learn from courses or from projects?

A mix works best: a foundation from a course or a university, then a real project for a real person. A course on its own is not enough.

Read next