Build Your First Coding Project and Avoid Tutorial Hell
Hell may or may not exist
While "real" hell may or may not exist (no need to get into religious beliefs here), tutorial hell is very real.
My definition of tutorial hell goes something like this:
Tutorial hell is where you write code that others are explaining to you how to write, but you don't understand how to write it yourself when given a blank slate.
At some point, it's time to take the training wheels off and build something on your own.
When is it time to build your own project?
At Boot.dev, students write their first non-tutorial project after completing the following modules:
- Learn Python (course)
- Learn OOP (course)
- Build a Python CLI (project)
- Learn Algorithms (course)
- Learn Data Structures (course)
- Build a Maze Solver (project)
- Personal Project 1 (when they build their first fully custom project)
Now, keep in mind that Boot.dev students are hands-on-keyboard 100% of the time. I'm not saying you should watch 40 hours of video before building anything, but I am saying you should have a solid understanding of coding fundamentals before building your own idea. You should learn those fundamentals by writing code, but it's best if the projects and challenges you're working on are guided so that you can focus more on learning the concepts and less on figuring out what to build.
What's the goal of your first project?
Your goal here is not to build something that makes money, or even to build something that will make its way onto your resume.
The goal of this first project is simply to get you used to the process of building something from scratch. You just need to get some practice breaking down a project into smaller pieces. You need to experience that first breath of fresh air as you emerge from the depths of tutorial hell for the first time.
What are some good requirements for your first project?
- Try to spend 20-40 hours on this project.
- Use a programming language you're already familiar with.
- Commit your code to Git often, and push it up to Github.
- Create a README.md file for your project. It should explain to readers:
- What the project is, and what it does
- How to clone and run it
- It's okay for (I'd even encourage) you to use third-party libraries! That said, make sure that some of the code that you write is doing something interesting. You don't want a razor-thin wrapper around a third-party library to be the only thing you've written.
But what should I build?
The whole point of a personal project is that it's personal. The idea needs to be yours. Even if the project you build is simple for now, at least it's yours.
Build something that you find interesting.
This probably isn't a project that will make its way onto your portfolio or resume, but it's still good to get into the habit of building things that are interesting and useful. Interesting and useful projects have many benefits:
- They're more fun to work on
- They have more interesting and difficult problems to solve
- You (or someone else) might actually use them
- They're more likely to grab the attention of other people
- Attention from other people can lead to career opportunities
Use a programming language that you're already at least somewhat familiar with. Assuming you haven't been writing a ton of code outside of Boot.dev, your project should probably be a Python program that runs on the command line. That's fine!
I want to provide a few ideas to get your creative juices flowing, but please don't choose a project from this list without at least putting your own spin on it
- A text-based adventure game in the terminal
- A CLI tool to detect the strength of a password, or to validate it
- Tic-Tac-Toe in a tkinter GUI
- A tool that creates ASCII art from an image
- A command line tool to view Reddit feeds in the terminal
- A command line tool that parses a CSV file of pokemon data and lets you search for pokemon by name, type, etc.
But, but, but... I don't know how to build "X"!
Your job as a developer is to constantly build stuff that you've never built before. Don't shy away from an idea because you're not sure where to start. Google it. Ask ChatGPT. Ask the Discord community. You might need to put in an hour of research before starting to decide if your idea is feasible within a 40-hour time frame, but that's fine!
Assuming that you'll be doing something you've never done before! You have some fundamentals under your belt. Now it's time to piece it all together and research as you go.
You'll need help
You're going to get stuck. If you don't get stuck, you probably chose an idea that's way too easy.
The trick is developing a skillset for getting unstuck. This is a skill that will serve you well (and is absolutely necessary) in your career as a developer.
Get used to Googling
Start with Google. Do some research on your idea. See what others have done when building similar projects. See if there are any libraries you can install to make your life easier.
Talking through your issues with ChatGPT (rubber duck debugging) can be a great way to get unstuck.
Don't have ChatGPT write your code for you! You won't learn that way, and you'll be dreadfully slow if you get stuck in that habit. Instead, use ChatGPT to help you think through your problems, and ask it to try to find bugs in your code or explain code snippets you don't understand.
Keep in mind that ChatGPT can be confidently wrong, so don't take its word as law. Use it to get back on track, but verify the information it feeds you with other sources.
Ask questions in the Boot.dev Discord server, especially if you're a current student (but you're welcome either way)! As with all question-asking, provide as much context as you can so that when your fellow students and mentors help they can efficiently provide you with the information you need.
Publish and share
Get your project out into the world! Again, the purpose of your first-ever personal coding project probably shouldn't be to build something amazing for your resume. That said, I still think you should put enough love into it that you're not ashamed to make it public on your GitHub profile and share it with other devs you know. Get some feedback, ask for code reviews, and you can always iterate on it later and improve it as your skills improve.