I'm interested in programming because I enjoy web development, game development, and building general applications. I like seeing how things work, making them fail, and figuring out how to fix them. I've worked through some C and C++ tutorials, but I'm confused by the advice to "build something that solves a problem." Does that mean I should write my own calculator instead of using one, or create my own compression tool instead of using an existing utility? How should I choose projects that help me learn without unnecessarily rebuilding tools that already exist?
5 Answers
Courses and tutorials can provide structured exercises, but eventually you should make your own small projects. Don’t worry if a project is impractical or duplicates an existing program; it can still teach you a lot. For example, writing a basic command-line calculator or a tool that displays binary data can be worthwhile if you’re doing it deliberately to understand the concepts.
Start with something small that interests you, then divide it into manageable pieces. Keep the user interface separate from the underlying logic, and work through each part one at a time. For web or game development, pay attention to features you see in other projects and try implementing simplified versions yourself. If you get stuck, research the concept and then attempt it again.
“Build something you need” is only one possible source of project ideas, and it can be poor advice for beginners because your real needs may be too large or vague. Small text-based games, simple utilities, or basic versions of interesting applications are good practice. Build a first version, then add one feature at a time—such as extra operations, file handling, or a graphical interface. The important part is continuing to practice and learn.
Think of programming projects as experiments rather than replacements for everyday software. You might make a tiny calculator, a card database, a book tracker, a simple web server, or a game prototype. Choose a manageable idea, finish a basic version, and expand it gradually. That approach gives you concrete goals without requiring you to rebuild a full professional application.
You don’t need to replace every tool you use with one you wrote yourself. The point is to choose projects that keep you interested and give you useful practice. If learning about calculators, compression, or another topic sounds fun, build a small version for the experience—but use existing software when you simply need the result. Programming can be useful, educational, or just enjoyable.

That makes sense. I’m interested in coding itself and in understanding how things work, so I’ll focus more on projects that are fun to explore rather than forcing everything to solve an immediate need.