Last week, I mentored a hackathon for beginners and intermediates at The Cooper Union and found myself repeating the same two pieces of advice over and over again. Since programmers shouldn’t ever repeat themselves, I decided to write it down and share with the world.
While I was there, I met a guy who had O'Reillys Python for Big Data open on the desk next to him. He was practicing writing mathematical functions. I had a chat with him and he seemed passionate about learning Python, but really unenthusiastic about the process. It was clear that learning Python was a career goal of his, not a personal goal, and he was going about learning it in a textbook way.
Watching him reminded me of an oft-ignored piece of advice: learn by doing what you love. Obsession is key when it comes to mastering programming (or anything). While it’s perfectly fine to choose this career path as just that—a career—it also takes a level of dedication and excitement that can’t be generated without a natural spark.
Python for Big Data may be your goal, but that's not how you have to learn Python. There are plenty of ways to develop practical skills. Artists typically learn about art from a young age, crafting personal art projects, drawing what they love drawing, and then later refine those skills to be used towards a career. Writers learn to write by blogging or composing lyrics because they love it—and later figure out they can apply those skills to another profession, like grant writing. Learning quantitative finance is a smart career move, but unless quant really turns you on, why not develop your foundational skills by throwing yourself into something you love?
When in the learning stages, you should only work on projects that are so exciting and interesting to you that you voluntarily stay up until 4am coding. That's the best way to clock the 1,000 hours of experience you'll need before you can become a valued professional while also maintaining your enthusiasm and sanity. Why should you spend those 1,000 hours grinding though quantitative finance or big data (unless that's your thing!)? Learn to be a programmer first; use projects you love to get there. Once you're comfortable, you can specialize in big data. And I promise, your excitement for your projects will make those 1,000 hours far more educational than if you’re simply walking yourself through the steps.
Another thing to keep in mind—though we’d all like to think of each and every thing we do as deeply meaningful, your passion projects don’t need to be world changing, life-altering attempts. Have fun with it. Embrace the Dinkiness. And through that, you actually will be making quite a difference.
Take on small projects, things that exercise certain skills one at a time, on topics that excite you. Jumping directly into big data is a quantum leap from where you need to be when you’re just starting out. Instead, fill your plate with “dinky” projects: Build a dinky text based RPG. Build a dinky image processing app. Build a dinky dating site.
Dinky is great for a few reasons. First, it takes the pressure off the project; like I said earlier, coding should be fun. Let yourself explore an idea just for you. Sure, it’d be great if the weekend app you’ve created is professionally designed or technically robust, but really, there’s no need for polish. You won't care if anyone uses it. This is just practice for you. Dinky projects are the blog posts and paintings that no one will likely read or see, but that the creator gains value from in personal satisfaction and knowledge. Maybe this dinky little project helped teach you how to work with 3D animation, or efficiently tell a story, or use WebRTC or something else new and exciting.
Plus, there is the off-chance that your dinky project hits it big. Every once in awhile that blog post turns into a novel. That painting gets purchased by a top hotel. Consumers aren't very predictable. If you work on one hundred dinky projects in a year, there's a good possibility that one or two of them will see moderate success, and that's a great morale boost and experience for someone who’s simply trying to build their skills. I've had a few dinky projects accidentally go viral, and each one of those experiences taught me something new. But more importantly, they kept me excited—and routinely up until 4am, working because I couldn’t tear myself away.
You can’t get that experience by following a textbook plan. If the kid who was practicing Python only applied it to big data, chances are he’d either lose steam or flame out completely, and may never feel that personal satisfaction that keeps driving us forward. He also wouldn’t push his limits; exploring the ideas you love with nothing to lose opens the door to new ideas that may never have arrived if simply plunking away on assigned projects. Finally, there’s something powerful about harnessing your creativity and spark to fuel your skill set. But in order to do that best, you have to love what you’re doing and do it for you. If other people think it’s cool, that’s just icing on the cake.