How To Make It as a
First-Time Entrepreneur

How to Make it as a First-Time Entrepreneur

Archive for the ‘ Uncategorized ’ Category

This is the fourth part of a series on becoming your own technical co-founder. In 2008, we couldn’t find a technical co-founder for Yipit. I’m writing about how I became our technical co-founder. Hopefully, I’ll encourage other entrepreneurs with a dream but no technical co-founder options to take their destiny into their own hands.

Disclaimer: If you know a great technical co-founder that wants to work with you, join them. This series is intended for everyone else.

Learning Python

I know the below will seem daunting. It’s a lot of stuff.

I remember reading the Learning Python book and putting it down after 20 pages and having a major freak-out.

What was I doing? I had been out of college for 5 years having learned a ton of finance and I was reading a book called “Learning Python” with a mouse on it?! Did I just hit a huge reset button on my life? Was I even going to successfully learn all of this? Did I even know everything I was supposed to learn?

I didn’t have the benefit of reading the post below. No one told me it was possible nor that I should do it.

But, we were going to have to give up unless I became our technical co-founder and I was definitely not giving up. So, I kept reading the Python book.

Six months later, much to my surprise (though I now know why), I was ready to build any prototype we needed. That made us very dangerous and credible as a startup team. I still do some development for our team and, more importantly, I have a much better sense of what is possible and how long things will take making me a much better founder.

Lastly, you’ll get a lot of skeptical looks from people when you tell them you are trying to teach yourself. Just remember that they’re not in the arena, you are.

It’s Not That Hard

The challenge of building your own prototype isn’t that any individual part is hard (assuming your core innovation isn’t on the technology side and it most likely isn’t). The challenge is that there are so many different components you have to learn about.

The point of this post is to give a high-level overview of each of those components and make recommendations on which one you should learn yourself and which one you should just hire someone to do for you.

Also, I still don’t fully understand all of the components but, guess what, it doesn’t matter. I wasn’t looking to fully understand everything. The goal was to understand them just well-enough to build our prototype and get traction. We now have an awesome tech team that understands them way better than I ever will.

The Major Components You Need To Know

The best way to give you some context around the components is to describe what happens when a user visits a website.

So, when a user comes to Yipit, they make a request from our website by visiting a url.  So, as an example, lets say that a user goes to her New York daily deals page: http://yipit.com/new-york (note that this exercise assumes the user has already created an account and is logged in)

That request by the user is sent through the internet to a machine that runs your website.  That machine is called a server which brings us to our first component: servers.

  • Servers are machines that have your code, your database and run your website by responding to requests from your users. You don’t buy these machines. You rent space on them.
    • Popular examples: 1and1, slicehost, Amazon Web Services
    • Learn or hire someone: You want to spend as little time on this as possible. It will have no impact on your ability to get traction and is just something you have to set up and fix when it goes down.
    • What we did: We hired someone on a hourly basis, who is now our CTO.  We used and still use Amazon Web Services. Just make sure the person you hire lets you know what to do when the server goes down (it will go down)

Now, the server is just a machine. On that machine, is software that actually handles the request from your user and that software is our second major component: web servers.

 

  • Web servers are the software sitting on your server that is responsible for receiving the request from the user and sending back a response, usually in HTML, that the user’s browser will display
    • Popular examples: Apache, nginx
    • Learn or hire someone: You also want to spend as little time on this as possible so hire someone to get it set up.
    • What we did: We used Apache at first, switched to nginx and are now back on Apache. I would recommend Apache since it’s more popular. Again, we got this setup on our behalf.  Just make sure you know how to restart the server.

Okay, so now that the server got the request that the user needs her New York daily deals, it needs to respond. But, the server doesn’t know her deals or how to display the deals in a format her web browser will understand. So, it gets a little help. It sends the request to where all the magic happens and our third and most important component: web application frameworks.

  • Web application frameworks are responsible for receiving the request and generating the html page that will get sent back to the user. They do all the work. This is where the logic of your site will sit.
    • Popular examples: Django (built in Python) and Rails (built in Ruby)
    • Learn or hire someone: This is what you have to learn and will be where you spend almost all of your time. If you learn how to develop with these frameworks, you’ll be able to build almost any prototype you want.
    • What we did: I decided to use Python but Ruby is also great. If you have a good friend that’s an expert in either one of these, I would just pick which one they know and ask them lots of questions as you learn. I first bought a book on Learning Python. It’s not critical you fully understands all the ins and outs of Python.  I certainly don’t.  You just need to know enough (for loops, data structures). I then learned Django primarily from the online django book.  Will talk much more about this in a separate post.
    • Tools: I use Textmate to do most of my programming. I use GitHub to manage my revisions. (Ask the person you hire to set github up for you).

While the web app framework will do all the work, it needs a little help because it doesn’t actually have the data.  For our example, it doesn’t have all the new york daily deals. That data sits in our fourth major component: databases

 

  • Databases store all of the data for your project. Think of them as really large excel spreadsheets with rows and rows of data
    • Popular examples: MySQL
    • Learn or hire someone: You should hire someone to explain this to you and set it up. You should learn enough to run some basic queries off the database and alter the structure. The web app framework obfuscates most of the interaction with the database.
    • What we did: I read this book on learning MySQL. I wouldn’t read past page 300 and don’t worry if you don’t know this stuff to well
    • Tools: I use Sequel Pro to view the database.

While the web app framework will handle the creation of your html pages that get sent back to the server, you still have to write the templates in HTML and CSS which is our fifth major component.

  • HTML is the format that web browsers expect for web pages. CSS is an additional file that comes along with the HTML that helps to style the html.
    • Learn or hire someone: You should learn this. It’s actually the easiest thing to learn. If you have a co-founder that isn’t technical, they should definitely learn this. It’s not programming and it will be a big help to have someone else on the team doing this.
    • What we did: My co-founder Jim learned HTML and CSS.  He read and recommends this HTML book and this CSS book.  In three weeks, he was ready to go.
    • Tools: Firebug running in Firefox is your best friend; it’s awesome. I also recommend PSD2HTML to get your photoshop files turned into HTML. You can then work off of what they did. DO NOT BUY DREAMWEAVER.  It’s a nightmare-maker.

The last major component is Javascript. It’s a programming language that runs on your user’s browsers. You know when you click on certain websites and the page doesn’t reload but a little box pops up or it unhides content? That’s using Javascript.

  • Javascript is a client-side programming language that allows you to manipulate content on your site without requiring the user to reload the entire page. It’s not a necessity but it can significantly improve user interface and user experience of your site. There’s a library written in Javascript that you should use called jQuery
    • Learn or hire someone: You shouldn’t really learn Javascript but rather you should learn jQuery which is a library written in Javascript that makes it much easier to do all the user interface things you want to do on the page. Also, I wouldn’t worry about mastering jQuery, just learn enough to accomplish the user interface improvements you are looking for.
    • What we did: We just read through the jQuery website and did some of the tutorials. It’s pretty easy to get going.
    • Tools: I never found a javascript debugger that I really liked. Firebug’s console mode lets you see if there’s something wrong.

Development and Production Environment

When you launch your site, you will have a development and production environment.

  • Development Environment. This is just a fancy way of saying where you work on your prototype that normal users don’t have access to.  Or even simpler, your laptop. You’ll essentially have a working version of your website with a database, your code, etc running on your laptop. I strongly recommend you find someone who knows their stuff (pay them per hour if needed) to set this up for you. Sit right next to them while they do this and ask lots of questions. It should take them around 5 hours and it would take you a frustratingly long time to do it yourself. If you can, I also recommend switching to a Mac. It’s way easier to deal with than a PC.
  • Production Environment. This is where a live version of your site sits where users can access it. You do work on your development environment and then you push it to the production environment where users can see that latest feature you added. Again, you should have the person you hire set this up and the mechanism in which it gets updated from your development environment.

Other Acronyms and Terms You’ve Heard

When I was starting out, I was always intimidated by the endless list of acronyms that were thrown around. The good news is that if you understand the major components above, you can now fit these acronyms in their buckets.

A few of the more popular ones:

  • PHP, Java, Perl: Just programming languages like Python and Ruby
  • XML: Just a format to put data in like HTML. It’s just another way servers send data to users. It’s typically used for API’s.
  • API: This is just a way for your website to interact with another website. As an example, if you have a website with business listings and you want to show Yelp’s reviews on your website, you use Yelp’s API. That is, your website sends Yelp a request for the reviews of a business with phone number 555-1234 and Yelp returns an XML file with the reviews. Your site parses that XML file and puts the reviews on your HTML page.
  • JSON: Javascript object notation. This is just another format to put data in that’s actually much easier to use than XML. Most API’s give you the option of getting back JSON formatted data in addition to XML data.
  • AJAX: Asynchronous Javascript and XML. This is a way for your website to interact with your server without having to reload a full page. On Facebook, when you like someone’s status update, do you notice that the page doesn’t reload. That’s because it’s using AJAX. When you click on the “like button”, the javascript sends a request to the server to let it know that the status message has been liked without having to reload the page.

You probably have way more questions.  Feel free to ask away in the comments below and I’ll respond to them.  You can also ask through my formspring.me account.

Lastly, remember that your goal isn’t to master these things but to learn just enough to get a prototype up and running that you can iterate on. Once you get traction, you’ll be able to bring on awesome developers that will have a mastery of this subject matter.

Looking for more specific advice?

I’ve given many people advice on learning to build their own prototypes. Every month, I make available a few slots to give people advice over the phone or in person (in New York). You can book a slot using this form. The rate is $39 for 30 minutes though if you don’t think you got enough value from the call, I’ll happily refund you the amount.

This is the fourth post in a a series on becoming your own technical co-founder. In my next post, I’ll describe my experience of learning python and django in more detail.

  1. Guide to Finding a Technical Co-Founder
  2. Why You Can Become Your Own Technical Co-Founder
  3. Should You Find a Co-Founder, Hire a Programmer or DIY?
  4. Big Picture Overview of All the Components of a Web Service (This post)
  5. How I Taught Myself Python and Django (coming)


Chad and Steve Left Paypal to Start YouTube

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.

Now that Yipit raised a round of funding, we have the amazing opportunity to grow our team of engineers here in New York City.

But, in all honesty, we’re not looking for just great engineers in the way Wall Street, Google or Microsoft does. We want our developers to one day become the next great founders. Starting a successful company is one of the most rewarding experiences on both a personal and outward level. We want you to experience that.

If you just want to be a developer for the rest of your life and makes lots of money, I think that’s awesome but that’s not what we’re looking for right now. We can’t match the salary that Wall Street or big tech companies will offer you. What we can offer you that those companies won’t is an experience that will prepare you to one day start the next big thing.

You may wonder why not just start a company now. The problem is that being a talented hacker isn’t enough to start a successful company. You need a bunch of other skills. That doesn’t mean you can’t try, we did. But, learning these other skills first, will put you in a much better position to be successful.

Other Skills Needed

We spent three years going from hacking together weekend projects to starting a venture-backed company. Aside from the engineering skills, here’s a quick snapshot of the long list of others skills we had to learn along the way:

  • Product management: customer development process, minimum viable products, lean startups
  • Fundraising: pitching your startup, understanding company risks, developing relationships with investors
  • User interface / user experience: user testing, absorbing user feedback, understanding expected paradigms, simple conversion funnels
  • Analytics: what metrics to measure, how to iterate based on those metrics, how to report those metrics, startup metrics for pirates
  • Graphic design: spacing; consistency; contrast; color
  • User acquisition strategies: SEO, SEM, affiliate programs, API, created syndicated content, viral loops
  • Recruiting: attracting talented people to your team; learning how to use job boards, craigslist, personal network
  • Writing: concise website copy, getting company blog syndicated
  • Market analysis: market sizing, competitive analysis
  • Business modeling: lifetime user value, customer acquisition cost
  • PR: pitching tech bloggers; guest blogging; getting featured by big media companies
  • Networking: becoming a member of the community; creating “buzz” around your startup; developing relationships with journalists
  • Outsourcing: know what to do yourself and what to outsource; mechanical turk, elance, virtual admins

It took us three long years to learn all of this. How did we do it? We literally wrote all the skills down, identified the experts in each area and methodically read everything they had written. We also learned by releasing a couple of weekend projects: 140it and UnHub

If I could have gone back to 2007, I would have done it very differently. Three years of struggle is a long time. Instead, I would have worked at a start-up that would have encouraged me to learn these other skills.

That’s why we’re taking this approach at Yipit. As you help us build the technology that will make Yipit great, we want to make sure we help prepare you to become a great founder.

Looking for Two Developers

Right now, we’re looking for two developers to join our team. Send me an email at vin at yipit dot com. You can see more of the specifics on the position and our technologies at our jobs page.

We look forward to meeting you.

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.

This is the third part of a series on becoming your own technical co-founder. In 2008, we couldn’t find a technical co-founder for Yipit. I’m writing about how I became our technical co-founder. Hopefully, I’ll encourage other entrepreneurs with a dream but no technical co-founder options to take their destiny into their own hands.

Disclaimer: If you know a great technical co-founder that wants to work with you, join them. This series is intended for everyone else.

You have the next big idea but don’t have a strong technical background and you don’t have a great technical co-founder lined up. Sadly, that represents over 95% of potential entrepreneurs out there and it’s a very frustrating experience.

Not all is lost. You don’t need to build an amazing scalable company right away. You just need to get a prototype off the ground that gets traction. Once you get traction, you can attract a great technical team. So, how do you build that prototype?

Three Options For Building Your Prototype

You have three options all of which are hard, frustrating and risky:

  • Keep trying to find a technical co-founder. We tried this at Yipit and couldn’t find anyone.
    • Pros: If you have a great technical co-founder, your startup now has a real future.
    • Cons: You won’t do any work on your project till you find someone. Worse, you’re probably not going to find someone and, if you do, they’re going to be less than ideal.
    • Advice: I wrote a gude to finding a technical co-founder.
  • Hire a programmer. We also tried this at Yipit and it didn’t work.
    • Pros: You’ll have someone working on your project right away.
    • Cons: It will cost you money. You’re not going to manage them correctly. If that initial prototype doesn’t get traction right away (and it probably won’t), it’s going to be a real struggle to quickly iterate and you’ll end up spending even more money.
    • Advice: See this great article on how to hire a programmer.
  • Teach yourself to build it. After failing to the above two, we decided we would teach ourselves. Six months later, we could build almost any prototype we wanted. We got traction with Yipit and now have an awesome technical team working on it.
    • Pros. You’ll have full control over your destiny. You can iterate your project quickly and you’ll have way better interactions with your future technical team. You’ll have this skill for your future ideas.
    • Cons. Your project is going to have to wait till you teach yourself. It will take a serious time investment from you.
    • Advice. I’m writing a series on becoming your own technical co-founder based on my experience. See my first post on why it’s easier than you probably think.

Which Option Should You Choose?

Okay, so which option should choose? There’s a lot of ways to think about it, but I think it really comes down to where you think your startup is going to create real value.

Tech startups create real value in one of three ways: (note: for example companies, I’m referring to their initial prototypes):

  • Technology Innovation. Your service has to be secure, it has to scale immediately, you need PhD’s to help you develop algorithms and you’re probably applying for a few patents.
    • Examples: Initial prototypes of Google, Twilio, SimpleGeo, Aviary, Hunch
    • Advice: Keep trying to find a technical co-founder. In fact, unless you have serious domain expertise, you should reconsider why you are trying to build a start-up that has a very serious technology component.
  • User Interface / User Experience. This represents most startups we see today. The tech aspect is mainly writing and reading from a database and you might build on top of an API. You won’t need to scale right away and it doesn’t need to be super secure.
    • Examples: Initial prototypes of Facebook, Foursquare, Twitter, Yelp, Yipit
    • Advice: Teach Yourself. Your main challenge won’t be the technology but will be getting the interface right. Getting the interface and experience right will require you to iterate the product several times and you’ll want to be in full control over how quickly you can do that.
  • Sales / Marketing. The tech stuff is *really* easy and replicable by many. The key to your startup’s success is your sales, editorial or marketing operations most of which will be mainly happening offline. In fact, you’re initial product isn’t a real tech company, it’s a tech-enabled company.
    • Examples: Initial prototypes of Gilt, Groupon, Thrillist, Gawker
    • Advice: Hire a Programmer. The prototype’s functionality isn’t going to determine your success. It’s your ability to create great content, build a great sales team or execute on marketing channels. Just get something out there and recruit a great technical team later.

As a personal experience, if we had been building a Groupon competitor, we would have hired a programmer. But, since Yipit, an aggregator of all these services, involves more user interface / user experience challenges, it made more sense for us to teach ourselves so that we could iterate on the concept till we got it right.

So, for all the 95% of us who don’t have a great technical co-founder lined up, I hope to encourage you that you can get started on your dream today. Assuming you are not trying to innovate on the technology, either hire a programmer or start teaching yourself.

This is part of a series on becoming your own technical co-founder. In the next post in this series, I will delve into becoming your own temporary technical co-founder based on my own experience staring with a big picture overview of all the components of a web service.

  1. Guide to Finding a Technical Co-Founder
  2. Why You Can Become Your Own Technical Co-Founder
  3. Should You Find a Co-Founder, Hire a Programmer or DIY?
  4. Big Picture Overview of All the Components of a Web Service
  5. More to Come…

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.

On Thursday, Owen Davis of SeedStart invited Amol Sarva, from Peek, and me to answer some questions on early stage entrepreneurship.  The session was  wonderfully moderated by Jalak Jobanputra.

Amol represented a more experienced entrepreneur that had raised $20 million while I represented the first time entrepreneur having raised a seed round.  The video is below.

The topics included fundraising, team building, the art of pivoting and high level tips on entrepreneurship.