You're not a programmer quite yet. I like to think of this book as giving you your "programming black belt." You know enough to start another book on programming and handle it just fine. This book should have given you the mental tools and attitude you need to go through most Python books and actually learn something. It might even make it easy.
I recommend you check out some of these projects and try to build something with them:
- Learn Ruby The Hard Way You will learn even more about programming as you learn more programming languages, so try learning Ruby too.
- The Django Tutorial and try to build a web application with the Django Web Framework.
- SciPy if you're into science, math, and engineering and also Dexy for when you want to write awesome papers that incorporate SciPy or any code really.
- PyGame and see if you can make a game with graphics and sound.
- Pandas for doing data manipulation and analysis.
- Natural Language Tool Kit for analyzing written text and writing things like spam filters and chat bots.
- Requests to learn the client side of HTTP and the web.
- SimpleCV to play with making your computer see things in the real world.
- ScraPy and try scraping some web sites to get information off them.
- Panda3D for doing 3D graphic and games.
- Kivy for doing user interfaces on desktops and mobile platforms.
- SciKit-Learn for machine learning applications.
- Ren'Py for doing interactive fiction games, similar to what you've built in this book but with pictures.
- Learn C The Hard Way after you're familiar with Python and try learning C and algorithms with my other book. Take it slow; C is different but a very good thing to learn.
Pick one of the above resources, and go through any tutorials and documentation they have. As you go through documentation with code in it, type in all of the code and make it work. That's how I do it. That's how every programmer does it. Reading programming documentation is not enough to learn it; you have to do it. After you get through the tutorial and any other documentation they have, make something. Anything will do, even something someone else has already written. Just make something.
Just understand anything you write will probably suck. That's alright though I suck at every programming language I first start using. Nobody writes pure perfect gold when they're a beginner, and anyone who tells you they did is a huge liar.
How to Learn Any Programming Language
I'm going to teach you how to learn most of the programming languages you may want to learn in the future. The organization of this book is based on how I and many other programmers learn new languages. The process that I usually follow is:
- Get a book or some introductory text about the language.
- Go through the book and type in all of the code making all of it run.
- Read the book as you work on the code, taking notes.
- Use the language to implement a small set of programs you are familiar with in another language.
- Read other people's code in the language, and try to copy their patterns.
In this book, I forced you to go through this process very slowly and in small chunks. Other books aren't organized the same way and this means you have to extrapolate how I've made you do this to how their content is organized. Best way to do this is to read the book lightly and make a list of all the major code sections. Turn this list into a set of exercises based on the chapters and then simply do them in order one at a time.
The above process also works for new technologies, assuming they have books you can read. For anything without books, you do the above process but use online documentation or source code as your initial introduction.
The final thing to remember about learning a new language is: Don't be a stupid tourist. A stupid tourist is someone who goes to another country and then complains that the food isn't like the food at home. "Why can't I get a good burger in this stupid country!?" When you're learning a new language, assume that what it does isn't stupid, it's just different, and embrace it so you can learn it.
After you learn a language though, don't be a slave to that language's way of doing things. Sometimes the people who use a language actually do some very idiotic things for no other reason than "that's how we've always done it." If you like your style better and you know how everyone else does it, then feel free to break their rules if it improves things.
I really enjoy learning new programming languages. I think of myself as a "programmer anthropologist" and think of them as little insights about the group of programmers who use them. I'm learning a language they all use to talk to each other through computers and I find this fascinating. Then again I'm kind of a weird guy so just learn programming languages because you want to.
Enjoy! This is really fun stuff.