Summary: Language – be it Objective C, Chinese, Ruby, or Klingon – isn’t something you learn through study, it’s something you learn through use. The best way to learn how to build your startup MVP is to start building your startup MVP.
How to Learn any Language
When I was 13 I figured out how to make a ball bounce around the screen of my Apple IIe. I wasn’t trying to “study programming”, I was trying to make the ball bounce. But I learned BASIC.
In High School I “studied” Spanish for 4 years and couldn’t say anything. In the US Coast Guard I spoke Spanish with the crew of my ship. I wasn’t trying to learn Spanish, I was trying to communicate. But I learned Spanish.
I tried to learn Java by taking classes, reading books. I never got there. A few years later my startup didn’t have a developer so I had to build the MVP using Ruby on Rails. I wasn’t trying to “learn Rails”, I was trying to build an MVP. But I learned Rails.
I’m now living in China, learning Chinese. I tried using flashcards and study materials for the first few months and couldn’t say anything. Then I started using Chinese to converse, write, read, and watch TV. I can now speak and understand basic Chinese.
The only way to learn a language is to use it.
Entrepreneurs: Don’t try to “Learn Programming”
More and more entrepreneurs practicing Lean Startup are trying to learn how to program so they can build their own MVP. Even if you have access to capital or you’re not the most technical member of your team this is a great idea 1 because you will be in the best position to make tradeoffs and can execute faster 2.
Unfortunately I meet a lot of entrepreneurs with the following plan:
Step 1 – Learn how to Program
Step 2 – Build my MVP
Most never get past Step 1. They take courses, read books, “studying programming” and never successfully building anything.
Most expats I meet in China start with an ambitious goal of “learn Chinese” and usually give up after a few months. I’ve set myself a serious of specific goals (e.g. be able to get a haircut) and have managed to keep going. The alternative is simply too overwhelming.
There is no Such Thing as “Knowing How to Program”
The problem with “Learning how to Program” is that you never know when to stop. There is an infinite amount to learn and it always changes. “Knowing” complex skills like Python and Chinese is relative – not black and white.
Do I “know how to program?” I guess it depends on what you mean by “know”. I can hack together a Rails MVP and do basic CSS and HTML. Can I program as well as Luc Castera, Rusty Klophaus, Mike Buckbee, Andrew Culver, Rob Di Marco, Matt Secoske, Guille Carlos, or Brook Riggio? No.
I get through basic day-to-day life speaking Chinese. People who don’t know Chinese think I’m fluent. Chinese people (correctly) think I’m illiterate.
Learning How to Build Your MVP
If your primary ambition is to be an entrepreneur and build a successful company my advice is to:
- Decide what you want to build.
- Learn the skills as you build it.
Put the Minimum in MVP
A goal of an MVP is to figure out whether we’re solving a real problem that can make money. It is a process of discovery, not execution. You don’t need a great product, you need a “good enough to start learning” product.
Becoming a great programmer takes most people 10 years or more. Becoming “good enough to get X working and start learning” is something most people can learn in months.
It will be insanely hard and frustrating at times. You’ll want to quit, just like I want to quit learning Chinese. But if you keep your eye on the goal – building your MVP – get help, and keep going, you’ll get there.
Hard, indeed, but the only way to learn a language is to start using it.
Red Round Block by S P Photography. CC 2.0.
- Please note that I’m talking about building an MVP – a “product” whose chief purpose is to validate whether or not you’ve identified an opportunity. Obviously it takes a team of great programmers (I am no longer one) to capitalize on that opportunity once you’ve identified it. ↩
- There is a lot more to say about this topic and no doubt many people will disagree with me on this point. I’ll save these arguments for a future post ↩
- I’m not picking on Amanda Peyton here, although this blog post does a great job of driving home my key point. I’ve made all the same mistakes myself. As she says, “Learning to Code is like Learning Chinese”. I agree. Both are skill you learn by using, not by learning. If I ever have the pleasure of meeting Amanda in person I’d be curious to see if her pursuit of Python ended differently. And if you’re reading this, Amanda, thanks for sharing so openly and honestly. Next meal, coffee, or beer is on me. ↩