Here's the best practice project for learning a computer language.
It'll keep you motivated to learn, and you'll wind up with something you want.
If you were the kind of kid who enjoyed taking watches apart so you could put them back together, an off-the-shelf practice project might work for you. You may just be re-doing what others have done, but you’ll get to see inside it.
If that motivates you, google practice projects for [the language you’re learning], and you’re all set.
That approach doesn’t work for me when I’m learning a computer language, because I don’t want to build the hundredth copy of a program. I want to make something brand new.
So I do what the startup guru Paul Graham advises aspiring founders to do: build something I want to use.
As a home cook, I was an early adopter of the digital food scale, but most recipe writers weren’t onboard with weight measurements. Their language was, and often still is, cups and tablespoons.
So I coded a conversion program that rewrote recipes, with ingredients converted to weight measurement. This gave me a start with coding, and, as a bonus, I got a free app that I found useful.
The second time was the charm.
Far more useful was the program I wrote to help me learn JavaScript—a program written in JavaScript, the language I was learning. It was a thousand interactive exercises designed to increase my retention of the language’s vocabulary and syntax.
When it occurred to me that my automated exercises might be useful to other people, I paired the app with a JavaScript book. The book sold well, and I went on to create a series of books supplemented by programmed exercises. What started out as a practice project earned a million dollars in royalties.
I’m about to start learning Node.js, and I’ve already chosen a project. In fact, I’m learning Node.js only because I want the app I’m going to build.
They say necessity is the mother of invention, but you won’t find many software programs that serve existential needs. What gives birth to apps is dissatisfaction.
The great thing about dissatisfaction as a source of inspiration is that most of us have plenty of it.
Steve Jobs said:
“If you are working on something exciting that you really care about, you don't have to be pushed. The vision pulls you.”
So let me ask you: What are you dissatisfied with? Could you code something up for a need you care about?
There’s your practice project.