Independent coding projects are a great way to both gain realistic programming experience and cement the concepts you’ve learned. This makes them a good fit if you’re looking for a next step after finishing your initial course, or programming how-to book, or coding tutorial. It’s also good if you have some experience and simply want to further develop your skills.
Keep In Mind…
These projects are mostly aimed at advanced beginners and above. “Advanced beginner” here essentially means someone who is pretty comfortable about the basics…something between a semester and a year in college.
Especially with the advanced versions, many projects have the potential to be long-term. This may be a good thing if you have the time and want to get practice working on a project of that scale. However, if you don’t, you may want to set a deadline or a strict scope of features. You can always come back and add things if you decide you need more practice.
Another balancing act is how deeply you want to delve into the area-specific data. If you’re making a web application to practice general programming skills and don’t foresee doing a lot of web development, you may want to choose a framework or library that is as simple as possible. That gives you an opportunity to practice software design and working with libraries without an unnecessary emphasis on a specific area.
Normally, you would choose a project and then choose a programming language accordingly, but if you’re making a project to learn, you may want to pick a project based on the language you want to practice. To help you do that, languages are listed alongside these projects.
Note that you can usually use any language for any project, but in some cases you may be blazing your own trail and fighting the design of the language.
Show and Tell: Create A Blog
Do you have a hobby you’d like to share with the world? Or, if you’re not that ambitious, just your friends and family? Creating a website is a great way to do that.
While there are plenty of tools that will enable you to create a website without writing code, it’s still a good independent coding project.
The simplest way to do this is to code a blog.
What Coding A Blog Entails
In their essence, a blog consists of posts, with date, contents, title, and a page linking to those posts.
This is a suitable for intermediate programmers. Typically, you’ll also create a behind-the-scenes interface to write and edit posts, but for simplicity’s sake, your website could instead load posts from files on your hard drive.
Take Your Blog To The Next Level
A more involved (but interesting!) project would be to tailor your blog to the hobby itself. For example, if you enjoy baking, try designing your blog to support tagging your recipes by ingredients, preparation time, or other characteristics.
An even more advanced addition would be to create a flexible content management system that allows the user to define their own types of pages. The simplest way to do this is to use an existing templating language and to allow users to provide their own template files. Look to Jekyll or Lektor for design inspiration.
Go On An Adventure: Code Your Own Game
Adventure games are one of the oldest genres of video game, so why not try your hand at creating one?
Of course this could be a traditional fantasy adventure with monsters, mages, and magic, but it could also be in a futuristic setting, or even an ordinary one. The adventure game aspect is more about the game’s mechanics: exploration, unlocking areas, and maybe some combat.
These allow for creativity while still pushing you to learn from existing tutorials for creating games in this genre.
What Coding A Game Entails
Unless you’ve already learned graphics programming, the graphics will probably going to be the most challenging area. As a consequence, though, is that this will be the area where you’re going to learn the most.
And the good news is: you’ve got options:
Text adventure games simply prompt the player for their next action, such as “LOOK” or “ATTACK”, and then it informs the player what happened as a result. These kinds of prompts are often included in tutorials, so you probably know how to do this already.
ASCII games use art to do things like make environments and characters and draw a basic map (example). While you can do this with basic print statements, positioning things alongside a map makes it more complicated.
Tile-and-sprite based graphics show a top-down 2D view (Think “Zelda”) comprised of square tiles and moving characters and entities (sprites) that are drawn on top. This probably requires using an additional library, which is valuable practice even if you don’t plan to make 2D games later.
While you could also use 3D graphics, that ups the complexity significantly, so it’s probably not a good idea unless that area of programming is interesting to you in itself.
Challenging (but Rewarding) Parts of Game Programming
You’ll learn a lot about programming by exploring how you represent things in your game’s world:
- Hard coding is the easiest, but tends to become less manageable and hard to change later. For example, you could have a function for each room that draws it to the screen, and another function for each room that handles any enemies, puzzles, or events that happens in that room.
- Basic data structures give you more room to grow and are useful in a variety of contexts. For example, you could create a room class, struct, or record type to store the properties of each room. Then, you put them in a 2D array or list.
- Map creation tools like Tiled have already done the hard work of figuring out a data representation and creating a map editor. You just need to integrate the library into your program. You’ll probably still have to lean on your own data structures for other aspects, but it saves time and gives you practice working with a library.
- Entity component systems are an approach often used by more substantial games, including big-budget titles. The idea is that your game consists of entities, which have certain components in common that are updated by the systems. For example, the player and an enemy might both be entities that have a health component which is updated by a damage system. This approach is relatively abstract, but is a flexible way to design games that scale up to large projects.
C, C++ are the most-used languages for programming games so they have the most libraries to use and documentation to reference; there are also good graphics and entity component systems libraries for C# and Java. But this can still be a good project for practicing other languages. If you’re sticking to a text-based game, any coding language will do.
Get Reliable Answers: Create an API Dashboard
Find yourself looking up specific kinds of questions over and over? While it’s hard to beat Google in the sheer versatility of questions it can tackle, you can still build tools to look up information specific to your area of interest, whatever it is.
What Coding An API Dashboard Includes
In the simplest form, you can make your application run on the command-line and prompt the user for what they’re looking for information about. On the complex end, you could make an entire mobile or desktop application to present the information.
If you don’t mind using the APIs directly, pretty much any language will do because virtually every language has libraries for HTTP, JSON, XML, and similar, which are used by the vast majority of APIs.
If you want to create a desktop application, Swift or Objective-C on macOS or C# or C++ on Windows are going to work the best. Swift of Objective-C are also good for iOS apps, while Java is the best language for Android applications.
Status Check: Program an API Search
Most people have at least a few questions they want answered every morning:
What’s the weather?
What’s on my schedule?
What’s going on in the world?
Maybe you get this information by browsing on a phone, asking a home assistant, flipping on the TV, or, the classic approach, opening a physical newspaper. Using programming you can create a version of this report tailored to your needs and interests, teaching yourself more about APIs and web programming along the way.
Ideas to Expand Your API Search Project
This project has two parts: the part that gathers the information and the part that formats it nicely. If you want to get fancy, you could add a third part that delivers the update to you on a schedule.
This project in particular lends itself to gradually evolving in complexity and difficulty. Here are a few steps along the gradient from simplest to full-featured:
- Create a one-line weather update using a library that prints out the day’s high and low temperature and precipitation chance.
- Use multiple APIs and libraries to create a detailed report that adds additional information you might be interested in when you wake up: headlines, calendar appointments, stock prices, outstanding to-do items, an inspirational quotation, etc.
- Create a web application that automatically generates the report on a schedule that you can visit online or receive by email.
Other Project Sources
There are far too many coding project ideas to share in a single article, so here are a few interesting resources to begin expanding your list of ideas.
Learn All The Programming Rules
Automate the Boring Stuff in Python includes a number of automation projects.
Work Through Video Tutorials
Traversy Media and Clever Programmer are YouTube channels that frequently go through example projects. You may want to try to create the project yourself, and only actually watch the video if you get stuck or to compare your solution to theirs.
Try a Coding Challenge
There are also many sites that offer coding challenges. These aren’t quite as realistic as a project, but they’re shorter and more self-contained and exercise your skills in a similar way, so they might be a good alternative if you don’t have the time.
Some good sources for coding challenges include Daily Programmer or Advent of Code, which has daily exercises December 1 through Christmas and past exercises available year-round. For more mathematically focused ones, try Project Euler. If you’re building up your Machine Learning chops, try Kaggle.
Even More Coding Resources
You can expect to make extensive use of the various libraries’ documentation and Q&A sites like Stack Overflow that answer very specific questions or explain how to do very narrow tasks.
Don’t forget that you can use tutors as well. You might associate tutoring with homework and classes, which are indeed common uses for tutoring, but tutors can use their experience with academic, professional, and other projects to help guide yours.
Tutors can be especially helpful when getting started or if you’re at a crossroads, wondering if designing the project in a particular way will cause issues down the road.