- Choosing a Topic
- Finding What's Possible
- Building an Idea
- Breaking it into Bite-Sized Victories
- Taking the First Step
One of the best ways to quickly learn a new topic is to build a project that leverages knowledge of that topic. Project-based learning enables you to learn about areas you're curious about via constructing projects that use them.
By applying project-based learning to your life, you'll not only learn tons of new things that college might not teach you, but you'll also bolster your resume with personal projects that demonstrate your skills in new areas.
The first thing you have to do is find a topic you'd like to learn more about. This topic can be anything you'd like! For example:
- A programming language you'd like to learn better
- A technology you'd like to understand
- An algorithm you'd like to implement
Don't worry if it seems like what you're interested in is vague -- that's totally natural. It's hard to know what you can do until you start to dig into it a little.
Let's say that we're new to computer science, and we want to pick up our first programming language. Python sounds like a good choice of topic for that (if this applies to you, definitely come to our workshop next week)!
Now that you've found a topic you'd like to dive into, you need to start thinking about what you'd like to do that can make use of that topic. If you have some cursory knowledge of your topic, you'll know what types of things you could make with it, so this step may not be totally necessary for you.
In the case you don't know much about your topic of interest, it will take just a little research to figure out whether we're looking into the right topic.
Here are some good examples of possibilities:
- Learning Python by writing a game
- Learning network sockets by writing a chat program
- Learning cryptography by writing a file-encrypting application
Here's a not-so-good example of a possiblity:
- Learning Java by writing an HTML page -- this doesn't work, since Java isn't directly related to HTML
Following from the previous example, we decide that we'd like to make a game in order to learn Python.
Now this is the first fun part: brainstorming. Now that you know vaguely what you'd like to do, let's have fun with that idea!
Think of all the features that you'd like to add in your optimal project. What would users be able to do? How would the application look? What does the interface look like? Try jotting down what you'd like using your application to work like.
In the end, you'll have an ornate, beautiful idea to work with. Keep notes of what this idea is, and come back to it if you ever start to feel like you're losing interest.
We decide that we'd like to write a side-scrolling adventure game. We nail down our setting, and we start to think about how the controls, levels, XP, and enemies might work together. By the end, we have a 100-node mindmap detailing all the features we'd like to have.
If you start to work directly on your idea at this point, you might feel yourself becoming overwhelmed within a couple of hours.
To reduce burnout, it's a good idea to break down your idea into its individual parts. Try to find the pieces of your idea that you can make individual mini-projects out of. If you can break your massive idea into parts that might take you a day's work each, then you're well on your way to finishing your project!
It's also a good idea to try to remove complexity from parts that matter less to you. If you're trying to build an chat application, but not interested in learning a user interface library to make it look pretty, then don't worry about your application looking pretty -- make the interface take input from the terminal if that's easier for you.
We know we can break our game down into several pieces:
- The main menu
- The free-roam stage where we move around the map
- The combat stage
- The player itself
- The XP system
- ...and so on.
Depending on how in-depth we'd like each part to be, we might be able to finish each part in a few days.
Also, we know that we don't really want to learn a graphics library, so we decide to use ASCII (text) art for our game's visuals.
Now that you've broken your idea into different standalone pieces, pick the one you'd like to do most and go at it! The Internet has everything you need, and nothing is stopping you.
Along the way, you'll run into many problems -- it's bound to happen. Here's a couple tips.
- Use resources like StackOverflow to learn more about errors, bugs, and glitches you don't understand, as well as how to do individual things in different programming languages.
- Try to find tutorials related to issues that you find yourself stumped about.
We're looking forward to seeing what you create :)
If you're interested in learning more about how to manage your projects and how to break them down more effectively, definitely look at the Fleshing Out the Details tutorial in this workshop.