Programming

Writing software — a creative, high-leverage skill you can learn entirely for free.

Programming
Photo by Fotis Fotopoulos on Unsplash

At a Glance

Category

Technology

Cost to Start

Free

Time Commitment

Significant Time Investment

Space Needed

Minimal / Anywhere

Physical Intensity

Low / Sedentary

Solo or Social

Solo-Friendly

Overview

Programming is building things with code, from small scripts that automate annoyances to full applications. The resources are extraordinary and almost entirely free.

Progress depends on building projects rather than consuming tutorials — the gap between following along and building independently is where most beginners get stuck.

Getting Started

Pick one language and stick with it. Python and JavaScript are both excellent first choices.

Build small projects that solve your own problems rather than following tutorials indefinitely.

Learn version control with Git early. It is standard everywhere and saves you from yourself.

Read other people's code. It teaches structure in ways writing your own does not.

What You'll Need

The barrier to entry is essentially zero, and the best resources are free.

  • A computer. Any computer from the last decade. You do not need a powerful machine to learn.
  • A code editor. VS Code is free and the de facto standard. Editor choice matters far less than beginners think.
  • A free learning resource. The Odin Project (web development), CS50 from Harvard (computer science fundamentals), and Automate the Boring Stuff (Python) are all free and genuinely excellent — better than most paid courses.
  • A GitHub account, free, for version control and a portfolio.

That is the complete list. Total cost: nothing.

Worth paying for later, once you know you are staying: a domain name if you want to host projects, and possibly a single well-reviewed course if you find you learn better with structure. Be wary of expensive bootcamps until you have built things on your own and confirmed you enjoy the work.

First Steps & Progression

Your first month

  1. Pick one language and commit to it. Python for general purpose and automation, JavaScript if you want to build things visible in a browser. The first language matters far less than sticking with it.
  2. Work through a structured course rather than assembling random tutorials.
  3. Type the code yourself. Never copy-paste while learning — the act of typing and fixing your typos is a large part of how the syntax sticks.
  4. Build something small that solves your own problem in week two or three. A script that renames files, a page that tracks something you care about. Personal relevance is what sustains motivation.
  5. Learn Git basics early — commit, push, branch. It is standard everywhere and it saves you from yourself.

Beginner → Intermediate → Advanced

  • Beginner: Syntax, variables, loops, functions, and reading error messages without panic. The milestone is building something small without following a tutorial.
  • Intermediate: Data structures, debugging methodically, using libraries and APIs, and structuring a project across multiple files. You start reading documentation instead of searching for tutorials.
  • Advanced: Architecture and design tradeoffs, testing, performance, and reading other people's codebases comfortably.

Common Mistakes & Tips

  • Tutorial hell. Endlessly completing tutorials feels productive but builds no independent capability. The cure is uncomfortable: build something with no tutorial, get stuck, and work through it.
  • Language hopping. Switching languages every few weeks resets your progress. All popular languages share the same underlying concepts — depth in one transfers.
  • Copy-pasting without understanding. It gets code working and teaches nothing. If you cannot explain what a line does, you have not learned it.
  • Not reading error messages. Beginners panic at red text. Error messages usually state the problem and the line number quite precisely — read them carefully before searching.
  • Skipping the fundamentals to chase frameworks. Learning React before understanding JavaScript produces a fragile, frustrating experience.
  • Comparing yourself to people online. You are seeing polished results, not the hours of confusion behind them. Everyone gets stuck constantly — that is the job, not a sign of failure.
  • Not using version control. Learn Git early. Losing work to a bad edit is a rite of passage worth skipping.

Frequently Asked Questions

Which language should I learn first?

Python if you want general-purpose programming, automation, or data work. JavaScript if you want to build websites and see visual results quickly. Both are excellent first languages with enormous free resources.

Do I need to be good at math?

For most programming, no. Basic logic and arithmetic cover the vast majority of software work. Math matters heavily in specific niches — graphics, machine learning, cryptography, simulation — but not in general application development.

How long until I can build something real?

A small useful script within weeks. A functioning web application in three to six months of consistent practice. Employable skill typically takes a year or more of serious effort.

Do I need a computer science degree?

Not to program, and not for many jobs. A degree helps with fundamentals and some hiring pipelines, but a portfolio of things you actually built is what most employers respond to.

Is it too late to start as an adult?

No. Plenty of people start in their thirties, forties, and later. Prior domain experience in another field is frequently an advantage rather than a handicap.

Related Hobbies