← Back to Blog
ProgrammingBeginnersCareerAI

So You Want to Learn Programming

A practical starting guide for someone completely new to programming: what to learn, what to build, how to use AI without outsourcing your brain, and how to turn it into a job.

9 min read

First: you do not need to know everything.

Programming is one of those fields where the more you learn, the more stuff you discover you don't know. That's normal. Nobody knows all of it.

Your job right now is much simpler:

Pick a place to start, learn the basics, and build things.

This guide is mostly about software development/programming. IT can also mean networking, cybersecurity, help desk, system administration, cloud infrastructure, and a bunch of other things. You can explore those later.

If coding sounds interesting, start here.

Where Do I Start?

Step 1: Pick a Language

Don't spend three weeks researching which programming language is "best."

Pick one and start.

No idea yet? Start with Python

This is what I'd recommend to most people starting from zero.

It's relatively easy to read, you can make useful stuff pretty quickly, and you'll still learn the same core programming concepts you'll use elsewhere.

Want to build websites? Start with JavaScript

Start with:

HTML → CSS → JavaScript

Don't worry about React, TypeScript, Next.js, or whatever framework people are arguing about this week. Learn JavaScript first.

Want to make games? Start with C#

C# is heavily used with Unity and is also a solid general-purpose language through .NET.

Microsoft Learn — C#

Your first language isn't permanent

You're learning programming, not just Python or JavaScript.

Once things like functions, loops, data structures, APIs, and debugging make sense, learning another language gets much easier.

Pick One Main Learning Resource

You do not need to use all of these.

Pick one main course. Use the others when you need extra practice or another explanation.

Boot.dev

Boot.dev

The only paid resource on this list.

Interactive, gamified, and focused on actually writing code. This is probably where I'd start if the format works for you.

freeCodeCamp

freeCodeCamp

Free and loaded with material. Especially useful for web development and fundamentals.

The Odin Project

The Odin Project

Free.

If web development becomes your thing, this is one of the best structured paths I've found. It includes Git, the command line, HTML, CSS, JavaScript, and projects.

Harvard CS50

CS50x

Free.

Excellent introduction to computer science.

It's also harder than most beginner courses. If it kicks your ass, come back later. You don't need CS50 completed before you're allowed to program.

Exercism

Exercism

Free practice exercises for a ton of languages.

Good when you understand a concept but need more reps.

What Am I Actually Trying to Learn?

  1. Variables and basic data types

  2. if / else

  3. Loops

  4. Functions

  5. Lists, arrays, dictionaries, and objects

  6. Reading errors and debugging

  7. Files and input/output

  8. Basic classes and objects

  9. Git and GitHub

  10. APIs

  11. Basic SQL and databases

  12. Building things without a tutorial telling you every step

That's plenty for now.

You do not need Kubernetes, distributed systems, machine learning, advanced algorithms, five cloud platforms, or whatever else you've seen people arguing about online.

You'll know when you need that stuff.

Make a GitHub Account

GitHub

Do this pretty early.

GitHub is where you'll keep your projects and, eventually, show people what you've built.

You only need a little Git at first: repositories, commits, git add, git commit, git push, git pull, basic branches, and README files.

GitHub has free interactive lessons here: GitHub Skills

Your account doesn't need to look impressive.

You're new. It's supposed to look like you're learning.

Build Things Early

This matters more than almost anything else in this guide.

Watching someone program is not the same thing as programming.

Once you've learned a few basics, start making tiny things.

First projects

  • Number guessing game

  • Rock Paper Scissors

  • Calculator

  • Unit converter

  • Password generator

  • Quiz game

  • Simple text adventure

Then move into things like: expense tracker, movie or game backlog, weather app, Pokémon lookup using an API, Discord bot, file organizer, habit tracker, small website, or small game.

Build things you're interested in when possible.

You'll push through a lot more frustration trying to make something you actually want.

When You Need Project Ideas

Save these. Don't try to work through all of them.

App Ideas

florinpop17/app-ideas

Lots of project prompts sorted by difficulty.

Project Based Learning

practical-tutorials/project-based-learning

Projects and tutorials organized by programming language.

Build Your Own X

codecrafters-io/build-your-own-x

This is for later.

It has guides for building things like your own web server, shell, database, Git, emulator, and programming language.

Don't look at that list on day three and decide you're behind.

Things I Wouldn't Do

Don't buy a pile of courses

There is already more good free material online than you could finish.

Another $15 Udemy course usually isn't what you're missing.

Don't keep changing languages

Every language becomes frustrating eventually.

If you switch every time that happens, you'll spend six months learning the basics six different times.

Stick with one long enough to actually build with it.

Don't get stuck in tutorial hell

Tutorials are useful.

But the progression should eventually become: tutorial → small project → harder project → idea of your own

At some point you have to close the video and figure things out yourself.

What About AI?

This is probably the obvious question in 2026:

Why spend all this time learning to code when AI can already write code?

Because writing code is only part of the job.

The harder part is figuring out what you're actually trying to build, how the pieces should work together, why something broke, and whether the solution you're looking at is even correct.

AI can generate surprisingly good code.

It can also generate code that looks completely reasonable and is subtly wrong, insecure, outdated, or solving the wrong problem.

If you don't understand the fundamentals, it's hard to tell the difference.

So absolutely use AI while you're learning. I do.

Just use it as a tool instead of letting it do all the thinking for you.

Good questions are things like:

Explain why this isn't working.

Give me a hint without giving me the answer.

What concept am I misunderstanding here?

Walk me through what this code is doing.

I fixed this, but I don't understand why the fix worked.

Once you're more comfortable, let AI handle boilerplate, help you debug, explain unfamiliar code, research libraries, or speed up parts of a project you already understand.

You do not need to prove you can build an entire application from memory with no Google, documentation, Stack Overflow, or AI. That's not how development works.

The goal is to understand what you're building well enough that you're still the one driving.

Yeah, that makes sense.

And eventually: Nope. That's wrong.

AI isn't a reason not to learn programming.

It's a reason to learn programming and get good at using AI.

Knowing both is a hell of a lot more useful than only knowing how to prompt something and hoping the answer works.

When Coding Starts to Click

Eventually you'll notice a change.

Instead of only asking:

What should I learn next?

you'll start thinking:

I wonder if I could build that.

That's a good place to be.

You might make a little script because something on your computer annoys you. You might try making a game. You might automate something completely unnecessary just because you want to see if you can.

Follow that curiosity.

Some of the best learning happens when nobody assigned you a project and you have to figure out how to make an idea work.

Just don't confuse spending every waking hour coding with progress. Consistency matters a lot more than burning yourself out.

Get Around Other Developers

This is optional, but it helps.

Watch some programming YouTube. Join a Discord. Look through GitHub. Read discussions even when half of what people are saying makes no sense yet.

A few places worth checking out:

You don't need to understand everything.

The point is just to slowly get familiar with what people build, what tools exist, and how developers talk about problems.

When You Get Stuck

You will get stuck constantly.

That's part of programming.

Try this before deciding you're completely screwed:

  1. Read the error message.

  2. Look at the file and line it points to.

  3. Check what you changed recently.

  4. Print/log values and see what the program is actually doing.

  5. Search the exact error.

  6. Check the documentation.

  7. Ask AI to explain what's happening.

  8. Reduce the problem to something smaller.

  9. Walk away for a few minutes if you're going in circles.

Useful references:

Web development: MDN Web Docs

Python: Python Tutorial

General developer roadmaps: roadmap.sh

Questions and existing solutions: Stack Overflow

And ask other people.

Every developer has asked questions that felt stupid afterward.

That's how you learn.

If I Restarted Today, This Is What I Would Do

If I had to start from zero again:

  1. Start with Python.

  2. Pick one main course.

  3. Code most days, even if it's only 30–60 minutes.

  4. Create a GitHub account early.

  5. Start tiny projects within the first couple weeks.

  6. Learn enough Git to save and publish my work.

  7. Keep making projects slightly harder than the last one.

  8. Learn basic SQL once I'm comfortable programming.

  9. Build something I came up with myself.

  10. Start looking at real job listings before I think I'm ready.

Not necessarily applying yet.

Just look at what companies are asking for. It'll start giving you an idea of where all of this is going.

Turning This Into a Job

Don't worry about this on day one.

Your first goal is simply becoming comfortable building things.

I'd start seriously thinking about developer jobs when you can:

  • Write small programs without following a tutorial line-by-line

  • Use Git and GitHub

  • Debug your own code

  • Look things up in documentation

  • Work with an API

  • Store and retrieve data from a database

  • Read code somebody else wrote

  • Explain how your own projects work

I'd also want 3–4 projects you're actually willing to show somebody.

They don't need to be revolutionary.

A good beginner portfolio might have:

  1. A smaller project showing you understand your language

  2. Something that uses an external API

  3. Something that uses a database

  4. A larger project you designed yourself

Put the good ones on GitHub and write a README explaining what they do, what you used, and how to run them.

Then start applying.

Look beyond just Junior Software Developer too:

  • Software Developer

  • Web Developer

  • Backend Developer

  • QA / Automation

  • Application Support

  • Technical Support Engineer

  • Entry-level IT jobs where scripting is useful

Build a basic resume. Make a LinkedIn. Put your projects somewhere people can see them.

Then apply while you keep learning.

Don't wait until you feel completely ready, because you probably never will.

Getting the first job is the hardest part. Once somebody has actually paid you to work with software, you're no longer trying to prove you could do the job. You've done it.

Keep This Simple

You are going to find a thousand different things people say you "need" to learn.

You don't.

For now:

Pick a language. Learn the fundamentals. Build things. Get stuck. Figure out why. Build something harder.

Come back here when you lose the plot.

That's enough to get started.