The Best Way to Learn How to Build Your MVP

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.

Programming is the same.3

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:

  1. Decide what you want to build.
  2. Learn the skills as you build it.
Pick your goal first, then pick the skills.

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.

  1. 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.
  2. 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
  3. 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.  


  1. Joel Gascoigne December 2, 2012 at 3:27 pm #

    This is great advice Kevin, I couldn’t agree more.

    When you make that choice that you want your idea to be a startup, and not just a hobby that you will use by yourself, that’s when you’ve gotta go out there and validate it. Then it becomes so much more than code – in fact the code is one the least important things! That’s why I think this advice is so great, it puts the focus on how to validate the idea and make real progress.

    It applies perfectly for non-technical founders who are learning to code in order to create a startup. Interestingly, I think it applies just as well for technical founders who decide “since I’m doing something new, I’ll also do it in a new language in order to learn node.js/ruby/python”. Maybe that can work, I’ve even heard of a few cases where it did, but I think there is so much to be done that if you happen to already be technical, you may well be much better off sticking with what you know. I was tempted to use Ruby for Buffer, but I stick with PHP which I’d been coding in for 10 years. I’m glad I did.

  2. Peter Hanschke December 4, 2012 at 10:21 am #

    Good post. I agree that trying to become a programming guru is a total waste of time – languages and platforms are so complex and all-encompassing that it’s virtually impossible to learn everything, let alone be proficient in every aspect. I’ve recently started working on my iOS app. I have a programming background but have to learn Objective-C. For the past 3 months I’ve experimented in various areas that are relevant to my product vision. However, I don’t agree that the MVP is to test the waters. MVP is the minimum set of capabilities to go to market with. Testing the waters is reserved for the prototype.MVP is that first step on the road to commercialization. The prototype is used to get feedback on specifics like ui and ux as well as concept.

  3. Eden December 8, 2012 at 5:10 pm #

    What’s the intended encoding for this post? I’ve tried Unicode, a variety of Western encodings, and some Chinese and Japanese encodings and I’m still getting non-readable characters spread throughout the page. It’s quite distracting. Any ideas?



  4. Tia December 22, 2012 at 5:42 am #

    What is a MVP?

    • kevindewalt December 22, 2012 at 2:26 pm #

      Sorry, I should have defined that term. Minimum Viable Product.

  5. Alfred Lua October 24, 2014 at 10:58 am #

    “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.”

    This is so true. I tried learning Python on and off for about a year now, without knowing what I want to build. And of course, I still don’t have anything built, nor have I “learnt” how to program in Python.

    Thanks for the advice!

I read EVERY comment and want to hear from you