# learn-to-program: a curated link list for web development beginners

> karlhorky/learn-to-program is a single README that indexes free and freemium courses for people starting web development. It is a reading list, not software, and the repository holds nothing else.

**karlhorky/learn-to-program** — Educational resources to learn to program (Foundation in Web Development)

- Repository: https://github.com/karlhorky/learn-to-program
- Stars: 4,957 · Forks: 251
- Language: Unknown
- License: not declared
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/karlhorky-learn-to-program

## What karlhorky/learn-to-program actually is

The README opens with a complaint: courses, books and guides for programmers are "either hard to find or of low quality." The repository is the response to that complaint. It is a curated list, in the awesome-list style, of educational resources for people learning to program, with the stated focus on a foundation in web development. Each entry gives a name, a link, a cost label (Free, Freemium, Paid or Mixed) and a parenthetical list of topics. Codecademy is labelled Freemium and covers HTML, CSS, JavaScript, jQuery, Python, Ruby, Rails, PHP, C++ and Java. Khan Academy's Hour of Code is labelled Free and covers HTML, CSS, JavaScript and SQL. That four-part format is the whole data model.

The audience is narrow and worth stating plainly. This is for someone who has decided to learn web development and now has to choose where to start, and for the person who keeps getting asked that question. It is not a curriculum. There are no exercises, no ordering beyond two difficulty bands, and no assessment. If you already know which language you want and which course you want, the list adds nothing.

## How the list is organised, and where it runs out

The README sorts entries into Beginner and Intermediate. The Beginner band is the long one: Codecademy, Khan Academy's Hour of Code, UpLeveled Bootcamp Prep Course, Treehouse, Learn CSS Layout, Udemy, Code Avengers, Shay Howe's Learn to Code HTML & CSS, HTML Dog, freeCodeCamp, Vertabelo Academy, The Odin Project, MDN Learning Area, GitHub Skills, Grid Garden, Flexbox Froggy, Hexlet.io, Programming Historian, Software Carpentry, Hyperskill by JetBrains Academy, Cratecode, DataCamp and Developer Roadmaps. The Intermediate band is shorter and includes Khan Academy's Computer Programming and Computer Science pages, Udacity, Learn Python the Hard Way, Michael Hartl's Ruby on Rails Tutorial, The Concise TypeScript Book, LinkedIn Learning, Thinkful, exercism.io, LabEx and PluralSight.

Two things stand out. First, the cost label is the most useful column and the topic list is the least: a beginner choosing between freeCodeCamp and Treehouse is choosing on price and format, not on the topic string. Second, the Intermediate band is visibly thinner and its entries are older in flavour (Rails, AngularJS, Thinkful). The README gives no criteria for how a resource got listed, no date of last review per entry, and no note on which links were checked. That is the main weakness: a curated list is only as good as its curation, and the curation process is undocumented.

## There is nothing to install

The repository contains one top-level entry, README.md. There is no package manifest, no build step, no CLI and no runtime. The README gives no installation instructions because there is no software to install. The way to use it is to read it, either on GitHub or by cloning it locally.

To keep a local copy that you can edit into your own shortlist, clone the repository and open the file:

```bash
git clone https://github.com/karlhorky/learn-to-program.git
cd learn-to-program
```

After the clone, the directory holds README.md. There is no other file to run and no dependency to fetch.

If you would rather read it in a terminal without a browser, the README is plain Markdown, so any pager works:

```bash
less README.md
```

You should see the same heading structure as on GitHub: "Learn to Program", then "Foundation in Web Development", then the Beginner and Intermediate sections. A first real use is to copy the entries that fit your budget into a file of your own and delete the rest, because the list is long enough that reading it end to end is its own procrastination.

## What the list does not tell you

The README does not document how entries are selected, when each was last checked, or whether a listed resource still exists in the form described. Links rot, and a list with no per-entry review date gives you no way to tell a live entry from a stale one. The repository also carries no release history, so there is no changelog to consult when an entry moves or disappears; the only signal is the commit history on the default branch, whose last push was on 2026-09-14.

The bigger limitation is that a list cannot teach. Being told that The Odin Project is Free and covers HTML, CSS, JavaScript, Ruby and Rails does not tell you whether its pace suits you, whether it expects a study group, or whether it has changed since the README line was written. The list also mixes very different formats under one heading: an interactive game such as Flexbox Froggy, a full bootcamp prep course, and a peer-reviewed lesson series for digital humanists all sit in the same Beginner band. If you need a sequence with prerequisites, this is the wrong artefact. If you want one authoritative syllabus, this is a menu, not a meal plan.

## Alternatives and how they differ

The closest alternative in kind is a different curated list. The README itself points at Developer Roadmaps (roadmap.sh), which is Free and covers Fullstack, UX Design, Cyber Security, Computer Science, Blockchain, DevOps and PostgreSQL. The difference is structural: roadmap.sh is a set of ordered dependency graphs, so it answers "what comes before what", while learn-to-program is a flat annotated index that answers "what exists and what does it cost". If your problem is sequencing, the roadmap format fits better; if your problem is discovering free options, the list format is faster to scan.

A second alternative is a single structured course rather than an index. freeCodeCamp and The Odin Project appear in the Beginner band as entries, and either one on its own is a complete path with exercises and projects. Adopting one of them means committing to its order and its stack; adopting learn-to-program means keeping your options open and doing the choosing yourself. The list is the better artefact when you are advising someone else, because it lets them pick. It is the worse artefact when you are the one who needs to be told what to do next.

## Maintenance, licensing and upgrade cost

The repository is not archived, and the last push was on 2026-09-14. There are no releases, so there is no version to track and no upgrade path to plan. Your maintenance cost is the cost of re-reading the list when you want a new resource, plus the cost of noticing when a link you saved has died. Nothing in the repository will break on you.

The licence is not stated anywhere in the repository, and no licence file appears among its top-level entries. For a README that links to third-party sites, the practical consequence is that the text itself has no declared reuse terms, so if you want to republish or adapt the list, you have no stated permission to rely on. The linked resources carry their own terms, and several entries are labelled Paid or Freemium, so a link is not a licence to use the course content. Treat the list as a pointer, not as a source you can copy.

## Conclusion

Adopt this list if you are a self-directed beginner in web development who wants a short, opinionated starting point, or a mentor assembling reading material for someone else. Do not adopt it if you need structured exercises, progress tracking or a syllabus with deadlines: it is a README with links, and the only file in the repository is README.md. Before relying on it, check the Beginner section for the entries whose cost label matches your budget, open two or three of those links yourself, and note that the repository has no releases and no licence file, so there is nothing to install and nothing to upgrade.

## FAQ

### Where can I learn to program for free?

The README marks a large part of its Beginner band as Free, including Khan Academy's Hour of Code, Learn CSS Layout, Shay Howe's Learn to Code HTML & CSS, HTML Dog, freeCodeCamp, Vertabelo Academy, The Odin Project, MDN Learning Area, GitHub Skills, Grid Garden, Flexbox Froggy, Programming Historian, Software Carpentry, Cratecode and Developer Roadmaps.

### What's the best way to learn to program?

The repository does not rank its entries or recommend one path; it groups them into Beginner and Intermediate bands and labels each with a cost and a topic list. The choice between an interactive platform and a written guide is left to the reader.

### Is learning to program still worth it?

The README does not address this question. It states only that educational resources are either hard to find or of low quality, and that the list exists to collect high quality ones.

### Is 40 too old to start coding?

The README does not discuss age or prior experience. Its Beginner band assumes no background, and entries such as Software Carpentry and Programming Historian are aimed at researchers and digital humanists rather than school students.

## Sources

- [Issues](https://github.com/karlhorky/learn-to-program/issues)
- [karlhorky/learn-to-program on GitHub](https://github.com/karlhorky/learn-to-program)
- [README](https://github.com/karlhorky/learn-to-program/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/karlhorky-learn-to-program
