Skip to content

Build something

"Build a project" is advice that helps nobody. These are challenges: a target, a definition of finished, and no solution.

How a challenge works

Every challenge has the same four parts.

Part Means
Goal One sentence on what the thing does
Done when The checklist that decides whether you've finished
Stretch Optional extras, roughly in order of difficulty
Time A rough estimate for someone at that level, assuming they get stuck twice

The time estimate is a guide, not a target. Taking three times as long is normal and isn't a signal about you.

Levels

  • Beginner


    You know loops, functions and lists. You haven't built anything with more than one file.

    Beginner challenges

  • Intermediate


    You've finished something. Now you want it to have structure, tests and an interface someone else could use.

    Intermediate challenges

Rules of the exercise

  • Use the standard library first. Reach for a dependency when the standard library actually can't do it.
  • Write it badly, then fix it. A working ugly version beats an elegant plan.
  • Post it in the showcase channel when it works, even if you think it's small.

Stuck is the point

A challenge you can finish without getting stuck was too easy. When you do get stuck, ask well and say which challenge you're on.

If none of these appeal

challenges here are deliberately few. When you want a longer list, or something in a specific direction:

Where What you'll find
python-beginner-projects Dozens of small project ideas with source. Read the idea, close the tab, then write it yourself
discord.py masterclass A full guide to building a Discord bot, which is how a lot of people here started
Eos Our own bot. Real issues, real review, and contributions are welcome

Reading the solution isn't building it

The first two links include working code. Looking at it before you've tried costs you the entire exercise.

Adding a challenge

Open a pull request. Keep the four parts, don't include a solution, and make sure "done when" is something a reader can check for themselves.