Back in 2006, I snuck out of my finance job and stood at a
Midtown Manhattan Barnes and Noble wearing a full suit staring
blankly at the “Computer Books” section.

Scanning through the shelf, I found “Learning HTML”, “Java in 24
hours”, “Javascript for Beginners” and other book titles of the
format “crazy acronym you haven’t heard of” + “super welcoming
phrase like ‘for beginners’, ‘in 24 hours’ or ‘step by step’”.

Unlike previous misguided adventures to the “Computer Books”
section, I had done some research and knew that I was supposed to
get the book about a “lamp”. I grabbed the closest one I could
find “Apache+MySQL+PHP” (the “amp” part of “lamp”) and flipped
through the first few pages. I excitedly rushed back to work. I
was leaving my finance job in a year to build a tech company and
I was going to learn to code.

I didn’t learn to code. I spent nights and weekends
trying to teach myself. I took my programming books with me on
vacation. But, despite going through all the exercises and
writing a “to-do” list app and a “blog” app, I never really
learned.

A year and half later (now summer of 2007), I did leave my
finance job to start a tech company. But, instead of building it
myself, we hired an outsourcer to build a prototype of our first
big idea. We could focus on user acquisition and business
development, the outsourcer would take care of the coding till we
could recruit a CTO.

Nine months later, everything had gone wrong. It was clear the
outsourcer wasn’t working out and, despite everything we tried,
we couldn’t convince someone to join us as our CTO.

So, in the beginning of 2008, I again found myself at the
“Computer Books” section of that same Midtown Manhattan Barnes
and Noble. I grabbed the “Learning Python” book and walked
straight home.

This time, I wasn’t excited; I was terrified.

If I didn’t learn to code, we were done. I would have to
crawl back into the world of finance. I’d have to tell all my
friends and family that I had given up, that I had completely
failed.

Three months later, not only did I finish the book, but I had
re-built the prototype that our outsourcers had spent 6 months
building. I was hosting it on a server I set up and we were
pushing new features and iterations in hours instead of weeks.
I had learned to code.

I wasn’t ready to become a Google engineer but I could build any
prototype we wanted. A few years later, we launched Yipit and
we’re now a 25-person, venture-backed startup on the verge of
profitability. It changed my life.

Why was this attempt to learn to code different from all the
others?

Why did I learn to code? It’s simple. I had no other
option.

Truly learning to code your own prototypes is incredibly hard and
frustrating. I had to learn endless things including HTML/CSS,
MySQL, Python/Django, Javascript, AJAX, nginx and more. I had to
spend hours googling error messages praying that someone on
StackOverflow had answered it and that I could understand their
answer.

I found that there are two types of people that power through the
frustration:

Those that are really intellectually interested in learning
to code. If you haven’t learned to code by now, it’s highly
unlikely you’re one of them.

Those that learn to code as means to an end. They don’t learn
to code because it’s fun or because it’s interesting. They learn
to code because they need to. They might enjoy it, almost
everyone does. But, it’s different for them. They are learning to
code because either their job requires it or because there’s
something they need built and no one will build it for them.

So, if you’re looking to learn to code, don’t just buy a book or
sign-up for a coding course.

If you really want to learn to code, you should do two things:

Think of a project that you really want built and learn
enough to build that project.

Put yourself in a position where you have no other option
other than to make sure that project gets built.

Vinicius Vacanti is co-founder and CEO of
Yipit. Next posts on how to acquire users for free and
how to raise a Series A. Don’t miss them by subscribing via email or via
twitter.