How To Make It as a
First-Time Entrepreneur

How to Make it as a First-Time Entrepreneur

Beginning-PHP-6-Apache-MySQL-6-Web-Development

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.

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.

Our tech startup wasn’t going to happen unless I actually learned how to code.

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:

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

  1. Think of a project that you really want built and learn enough to build that project.
  2. 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.

  • RSJ

    This is awesome. .

    I graduated in 2006 with a degree in marketing and went into the field of online marketing. Hated. Every. Fucking. Day. It was the worst career choice for me…sitting around doing spreadsheets and setting up performance funnels. Simply put, I wasn’t doing anything cool and wasn’t building anything that would change the world in any appreciable way.

    After a couple bad experiences in online marketing, the startup I was working at went under (ran out of funds) and I decided never to “do” marketing ever again. I sat in coffee shops coding a game idea I had for about 7-9 months. I worked my f*cking ass off. Nights, weekends, 12-13 hours a day. Every working hour I programmed AS3. When that inevitably flopped (games are awfully hard to make a living at when rent is coming due), I switched to Flex 3 contracting, then Android / iOS.

    Now I work on an app with tens of millions of monthly users as the Sr. Mobile Engineer after less than three years coding. I work with so many of the people you mention here who simply love engineering for the sake of engineering. I am not one of these people…I have learned to be much more diligent from them…I read all the books they read, underline, watch all the tech talks. But I will never be one of them because I learned to code so that I could build great products…not because I simply like coding (which I do).

    • http://viniciusvacanti.com Vinicius Vacanti

      great comment. thanks for sharing your experience!

  • http://www.lhartwich.com/ Lukas Hartwich

    Awesome post! I can relate with your story, I still work in finance and have built a website in my free time. I didn’t know what I was doing at first either, all I can say is thank goodness for: 1.) google 2.) stack overflow 3.) the generous blogging community that does a great job sharing knowledge. Inspiring stuff man, keep it up!

    • http://viniciusvacanti.com Vinicius Vacanti

      it consistently amazes me how helpful people online are via stack overflow and blogging

  • Mohd Irtefa

    This is perfect advice for a friend of mine.

    • http://viniciusvacanti.com Vinicius Vacanti

      Glad to help!

      • treybren

        Business model generation is a very helpful book for creating a simple business model.

  • http://timjaeger.com/ Timothy Jaeger

    I’m on the other side of the coin – I can design and code plenty but am looking to get into user acquisition, create new business models and deal with scaling and growing businesses. It’s harder to get a book and read it over the weekend in order to do that.

    If you embark upon self-employment in Field (X) then you will (or at least should – unless you outsource) need to know how to perform many of the tasks that come with hanging your shingle up for that particular field (assuming that field doesn’t require credentials such as Doctor, Lawyer, Dentist, etc. that bar self-employment). If you switched careers from Finance to, say, being a general Contractor or running a Day Care Center you would also have to learn-or-fail.

    • http://viniciusvacanti.com Vinicius Vacanti

      There are some great blog posts out there on user acquisition and business models but definitely no definitive books.

  • http://www.fantasysp.com Brant

    Vinicius, when was the last time you coded and (assuming you no longer code), do you miss it?

    • http://viniciusvacanti.com Vinicius Vacanti

      I coded this week. I definitely miss not coding more.

  • GuyThatAgrees

    Yes! This is the exact reason I was able to go from a History major to what I am now, a full time programmer at a known SV company. As things developed, I had no other option than to learn to code in order to make a project (that had a number of stake holders) happen. It was a grueling and terrifying first 3-4 months – it was not fun.

    • http://viniciusvacanti.com Vinicius Vacanti

      that’s awesome.

  • Jaber

    Awesome article once again! Totally resonates with me. I’m an ex “business-idea douche guy” and came to the realisation 2 months ago that I simply must learn to code. Signed up to codecademy.com (learning python and HTML/CSS) last month and suprisingly enjoying it. Cant wait to get my product out there. Btw whats your thoughts on codecademy Vin?

    • http://viniciusvacanti.com Vinicius Vacanti

      It seems like a great place to try to learn to code but definitely think you need to have a project you’re trying to get built to keep you motivated.

    • http://www.modernmsg.com/ Mike

      I’ve used it but learned way more by actually buying a html/css book and working through it. I’d also suggest learning by setting up your own blog (or just a basic site). Nothing complicated, just get your feet wet with an actual project.

      • http://viniciusvacanti.com Vinicius Vacanti

        +1 on setting up a basic site to see your learnings play out.

  • http://craigrcannon.com Craig Cannon

    Great post man.

    I’d add one more item to your last list: connect with more experienced developers and openly ask for help.

    It’s true, most non-technical people have a tough time recruiting a CTO but many of those potential CTOs don’t mind Gchatting every now and then when you’re stuck on a bug. Learning to code is tough–they know that and oftentimes want to help motivated beginners. All that said, don’t be annoying. Chat them when you’re actually stuck and not just aggravated, which is bound to happen every day, if not every hour in the learning process.

    • http://viniciusvacanti.com Vinicius Vacanti

      Great advice.

  • Raj

    Hi vin i so relate to ur story but the thing is i am jobless as i dont want to code and am looking for managerial positions or sales as i used to code in java sql and vb long back. What would you suggest me to do?

    • http://viniciusvacanti.com Vinicius Vacanti

      Not sure but it could be possible to start coding and then move up into managerial positions.

  • lazycoder

    As a beginner should I have a prototype in mind and learn d ‘related technologies on trial and error basis ????

    • http://viniciusvacanti.com Vinicius Vacanti

      Not sure what you mean by “trial and error” but having a project in mind is definitely a great motivator.

  • http://blog.maxlytvyn.com/ Max Lytvyn

    It’s like saying “you will not learn Karate until you are cornered by 4-5 thugs”. Well, it will be too late then, right? It’s a convenient/lazy view – helps justify not pushing yourself much – but it’s not the only way. Describing how to find intrinsic motivation to learn coding is beyond the scope of one comment, but I just wanted to point out to readers that they DO NOT have to wait till they are cornered without any other means to make a leap. There are ways to find motivation from within and do it – do anything. If nothing else works, you can just envision a situation where you will fail unless you learn, and then just work to prepare yourself for that situation. There are many other techniques as well. Just like you do not necessarily need to go to Spain to learn Spanish.

    • http://viniciusvacanti.com Vinicius Vacanti

      Agreed though at least coming up with a project that you want to build can make a big difference.

  • Wouter

    Hope my friend is able to learn to code so he can become the CTO of my company

    • http://viniciusvacanti.com Vinicius Vacanti

      It’s unlikely your friend will learn to code and become CTO but it’s much more likely that they will learn enough to build a prototype that gets you traction so that you can better recruit a CTO to help scale the product.

  • chelin101

    Great post. I went through something similar. I also left my finance job to pursue a startup idea, but didn’t know how to code. Having heard stories of how bad outsourced work usually is, I went with a local (NYC based) firm that was somewhat expensive. After a month, they had delivered nothing but 5 of mockups that were dressed up versions of the mockups that I sent them… plus the bill for the next month of work. I was totally livid. I think around that time was when I read about your story at Yipit, so I fired them and immediately set out to learn how to code it myself. My startup never got off the ground, but at least I ended up learning enough to get a job as a dev at a vc backed startup and and am now learning a ton of stuff. I am now in a much better position if I get the itch to start something up again.

    • http://viniciusvacanti.com Vinicius Vacanti

      Awesome story. So glad it worked out for you and thank you for sharing.

  • http://www.gordonbowman.com/ Gordon Bowman

    Great post Vinicius. Seems to echo the experiences of all my friends who learned to code later in life. The most successful start with a project first and don’t stop until they’ve learned enough to build it. The others who don’t have a project just burn out.

    • http://viniciusvacanti.com Vinicius Vacanti

      Thanks for sharing. That’s what I’ve seen as well.

  • theoptips

    Looking at the last two conclusions, I must disagree. I think things are really different now. In the past, there aren’t great teaching materials for beginners, and for modern web development with a huge line of technologies, libraries and APIs that we can integrate. The task got a whole lot more complex yet the “textbooks” have gotten better and better, especially in the format of online education.

    Many of my engineering friends said there is no way to learn programming except for reading the documentation, there is no way to learn code except doing your own project, at least there is no fast way to learn it.

    Recently I have also thrust myself in an incredible startup situation where I had to learn Rspec in two days and start writing it ASAP. That actually took the intellectual fun part out of me. It was very stressful, and I realized that I was picking up one thing and missing another, and not doing the fundamentals. I am learning techniques fast, but my engineering thinking didn’t get better. Instead, I started to build my own humble website in old ugly static HTML CSS and a bit of PHP. Yet it has been the best jQuery practice ground for me, I spend hours and hours refactoring, forming an opinion, transforming into an advanced coder, integrating backbone.js soon to complete, and soon to add testing.

    Doing your own project worked for many, but I don’t have a project. I didn’t naturally think like a programmer before, when I was a child, I didn’t take things apart, but I learn things fast and make impossible logical connections across disciplinary fields. What I realized is that, I just have a very odd learning style.

    But as more people learn to program we will encounter all kinds of learning styles. The old way will longer be the way to learn. You no longer have to just read documentations and manuals, now the documentations get better for you (e.g. Angular). Now you no longer just have to program your own, and do a TODOlist, there are many projects, and interactive consoles on the internet.

    There is one factor though: time and efficiency: both time and efficiency are really what your conclusions are getting at. We can all learn things, eventually, but how fast and will it be in time for project delivery.

    People can learn programming, they will need to start with their style and slowly ramp up, make it into a habit (maybe on Codecademy, maybe reading their favorite book). And the best part : once they start to think more like engineers, they will be more and more efficient at learning, reading books, skimming through, finding documentations, and designing a better route to enlightment.

    Sh*t that was long

  • Brian Scully

    I just found your blog today and after reading a few entries I’m already seeing many parallels to my own journey to build a product over the past 7 months. It’s very reassuring to read. Regarding teaching myself to code, I took a slightly different path by using online tools, but my main motivations were the same. For anyone curious, I think there are some great resources online and I’d be happy to share my experiences more in depth if anyone wants to contact me on Twitter. I’ve used Codecademy, Treehouse, Rails For Zombies, and (most successfully) One Month Rails. They all require minimal to no investment. I would also suggest taking a class in person at a place like General Assembly so you can ask questions in person (which I have also done).

    • http://viniciusvacanti.com Vinicius Vacanti

      Great suggestions for learning Rails. Thanks for sharing.

  • Tal Flanchraych

    I think there’s a 3rd type of person who powers through the frustration: those that realize it helps them stay competitive even in non-technical fields. Their jobs don’t require it nor do the engineers at their company, but they recognize the power they gain with the knowledge, even if they have no intellectual or entrepreneurial interest in ever coding an entire feature, let alone a product. They become addicted to the gain in productivity (and oftentimes, in position).

    That was my mindset when I started to code. My first real job out of school was as an account manager who was responsible for making sure our designers and developers delivered flashy websites in a timely manner, or else suffer the wrath of bitchy clients. Eventually, I got tired of having to ask our developers to constantly make trivial changes for clients and realized that I’d be saving everyone time if I just figured out how to make simple tweaks myself. So I figured it out, starting with basic HTML. Hey, this isn’t so bad! I realized that I was starting to outpace the other account managers. My ego felt good and wanted more. After a while I became more comfortable with slightly more complex tweaks, then with the database in order to fulfill client requests for stats. I became the most productive account manager on the team by far. My ego was pleased. The development team enjoyed working on my client projects because they could focus on building features rather than on mundane tasks. Within a year I was offered a VP position. In following jobs, I used my coding skills to influence people into making decisions that were convenient for me (bring on the flashy sparkle magic!). For example, as a product manager who wanted to convince some execs to support an SMS marketing initiative, I spent 15 minutes integrating Twilio with our site, then asked some SVP of Blahblahblah to click a button on a local development environment which triggered an event that sent a real text message to one of the exec’s iPhones. Don’t underestimate the Wow Factor these things have. I learned that code is a killer sales tool, even if you’re only selling to internal stakeholders. And you’re always selling yourself, not just an idea. Selling yourself is what will get you raises and promotions.

    Many years later, I’m more in the mainstream camp — I’m finally learning backend stuff more extensively as a means to building my own personal projects — but I don’t think I would’ve ever even taken the dive had I not already built a strong foundation when I was working office jobs. The intimidation I feel now is only a speck of what I felt back in the beginning, when just the thought of an HTML tag more complex than gave me nightmares.

    I know several other people in various fields (marketing, design, finance, product) who all started to code in order to be more productive at work — whether it be automating financial reports or spitting out variations of marketing pages — and quickly outpaced their peers in their departments.

    I think we’ll be seeing more and more of these people in the coming future if we figure out how make the Learn to Code movement more relevant to people’s existing daily lives and jobs. Many of them will be the social smokers of the programming world, never coding in a full-time capacity nor even identifying primarily as developers, but learning more and more as they look to increase their impact and productivity.

    Progressive companies like AppNexus are hiring client managers and teaching them Python, but most companies don’t espouse the hacker mindset in their non-technical employees yet. If you’re one of these employees, this presents you with a HUGE opportunity. It means you have a chance to stand out if you figure out 1) what gruntwork you can automate (are you an intern that has to copy and paste addresses from a website into a spreadsheet?), 2) what would look way cooler as a clickable prototype rather than a Powerpoint (are you a copywriter trying to convince a new client to redo their website copy?), 3) what APIs you can use to your advantage so you have one less thing to worry about in bed every night (are you an assistant that needs to email your boss an itinerary based on his Google Calendar every morning?). And if you work with developers and you can figure out anything that even slightly reduces their own workload, they’ll love you for it. Also, you’ll find out about all sorts of cool technology along the way that will help you do your job without you even having to write a line of code (are you a paralegal who has to manually transcribe printouts of old legal docs so they can be machine-searchable? Hopefully you’ll stumble onto OCR). If you don’t want or need to build a software product right at this moment but you’re looking for the motivation to learn to code, *these* are the kinds of reasons you should be thinking of.

    • http://viniciusvacanti.com Vinicius Vacanti

      Thank you for sharing and great points.

      We have people learning to code here at Yipit despite being in non-tech roles. I love the concept of a full-stack marketing manager.

      We have found that people working on projects that require code and directly make them more productive at their jobs has been very motivating (as opposed to just taking classes).

      Also, that Twilio example was great.

  • Tali Saar

    Hey Vinicius, great read. I’m kind of in a similar place right now and actually managed to write a few sensible lines in Java just a few days ago, but I’m also thinking – isn’t it just better to find a cofounder who does this fluently? Genuinely curious as to why you decided to code rather than find a cofounder, what are your thoughts on this? (I totally get how outsourcing can be an awful experience, but a cofounder is a different story)

    • http://viniciusvacanti.com Vinicius Vacanti

      If your idea requires technical work and you have a great technical co-founder ready to join, then I would recommend working with them.

      The reality for most people is that they don’t have a great technical co-founder nor do they know how to really identify a good one from a bad one.

  • John Latza

    What a very inspiring site you made here. I myself have been learning to code. Admittedly, I have been lazy about it. In time though, I have learned on my own one important thing: reading a book is all well and good, but that’s all it is. Having a project in mind and carrying it out with the help of the internet and books is the only way to go. Jump right in. It’s simple and it’s something I knew all my life, but hardly apply; HANDS ON. Anything that is easy, ie. reading a book, will get you nowhere. You need to take the hard route, do the hard thing. Only then did I find myself actually learning something! Thanks for this site, nice job.

    • http://viniciusvacanti.com Vinicius Vacanti

      Working on “hands on” was the difference for me. Thank you for sharing!

  • http://www.guizishanren.com/ Herbert Yang

    Very inspiring! Thank you for sharing!