Many people, when faced with doing something new that they know nothing about, won’t ever get started. The project seems too daunting and they don’t have any context for even where to begin. In fact, in the very beginning, Justin.tv was exactly this type of problem.
When we first conceived of Justin.tv, it was simple to explain: we’d have a live streaming video feed of our exploits in San Francisco broadcast from a camera in real time to many viewers simultaneously watching on the web. It wasn’t as simple to figure out how to make this a reality, in fact, Emmett and I (it was just us at first) didn’t know the first thing about online video protocols, servers or infrastructure, cameras, or mobile network connections. At that point, we were simply two web developers with a year of experience building an AJAX calendar app. To us, the whole project appeared to be one big black box:
However, we could break this down:
Figure out how to build a mobile camera that streamed video to one server
Figure out how to ingest a video and stream to multiple viewers from our server
Talk to an expert in hardware devices
Research available mobile data transmission technologies
Talk to a startup we’d recently met who was doing live streaming (to figure out what tech they were using)
Investigate using a Content Delivery Network for streaming
I’ve found that when faced with a set of seemingly insurmountable challenges, the first step towards making it easier is to break things down into as large a set of small individual tasks as possible. In this case, our list of to-dos was broken down further many times. #1 lead us to Kyle, who became a cofounder and built the first streaming device (a computer that encoded video data from an analog camera). We learned that EVDO Rev A was coming to San Francisco, enabling us to send data at reasonable speeds over the cell networks (#2). Following up with #3 lead us to learn about streaming server options, and eventually choose #4 (paying someone else to stream our video for us). Six months after we first began working on the Justin.tv project full time, starting from a place with zero knowledge, we had a mobile streaming hardware device that sent video to multiple viewers, and launched our show.
This process is simple to apply to any set of challenges, from the fantastic to the mundane. Make yourself a list of what must be done and go through that list. For example, if you need to graduate from university and get a job so you can take care of your family, that probably entails a large set of smaller, more manageable things: getting decent grades in each of a set of credits, creating a resume, applying to jobs, practicing interviewing, etc. In turn, each of these things can be reduced to a set of smaller tasks that will seem more accomplishable: getting a decent grade in a class turns into a set of tasks including studying, writing term papers, and preparing for an exam. Often times, the first step in accomplishing your goals might be as simple as buying the assigned books for a class.
I recall a disagreement I had with a friend many years ago. My claim was that anything I set my mind to was achievable; he thought this idea was ridiculous. The point came up because he thought the idea of private spaceflight orchestrated by individuals would never work. Looks like I was right. You can achieve anything you set your mind to; doing so is just process of reduction.
Setting up good default behavior is very important. In fact, most people never change the default settings for the things they use. For software designers, this means investing time thinking about what you want to happen if nothing changes. For example, this is why Google pays to be the default search in mobile OSes and browsers, and why Google invested so heavily in a mobile OS (Android) where they would automatically be the default search: most users will never change their browser to default to another search engine.
At Exec, we spend time thinking about default behavior. Here’s one simple example; this is the first step of our cleaning booking process.
This is what it looks like the first time:
This is what it looks like after you’ve used us once:
The difference is pretty obvious: the second time you use the service, we default to the home you’ve already cleaned. Most people don’t have multiple places they want cleaned, and so we save an extra 10 seconds for the vast majority of our users.
At a meta level, I’ve spent some time thinking about what things make good defaults for a company.
One of the things that almost every company in Silicon Valley seems to buy into is providing lunch (and often dinner). Having meals show up every day around noon means that team members are much more likely to have the default lunch at the office with their coworkers. In turn, this behavior has benefits like serendipitous discovery and collaboration, increased group cohesion, and cost and time savings for the employees and company.
Recently, along with a few coworkers, I’ve replaced my sitting desk with a treadmill desk to try to stay healthier.
I discovered pretty quickly that walking 8 miles a day (at 1 mph) while working wasn’t something I was going to do. However, the thing I appreciate the most about having a treadmill desk is that even if I don’t turn it on once during a day it still functions by default as a standing desk, which is already way better for you than sitting!
What other possible default behaviors can you change in your work environment?
We’ve just launched our new cleaning service for the rest of the Bay Area. It’s been several months of work to make our software robust enough that it can survive the real world.
Some of the things I’ve learned about building a technology business that touches the offline world with Exec:
Software that manages people’s livelihoods needs to be very robust. I thought people were mad when a 100k concurrent stream at Justin.tv would go down; downtime here is far worse.
You can’t just release new changes every day. People working on the platform need time to learn new systems. In consumer tech, everyone looks up to Facebook and aspires to “move fast and break things.” With Exec, we have to think about how everyone is going to be taught about every change.
When software goes down, the real world continues. Which is a total shit storm. We’ve dealt with AWS outages by assigning jobs by phone and tracking time spent with pencil and paper, and then updating all our records by hand after the fact.
These lessons in mind, it is still imperative to move as quickly as possible. As with any startup, you are still racing to determine if your business ideas is even at all viable, and every moment you aren’t gathering data is a moment wasted. The trick is to figure out the quickest ways to address the problems above.
I had a fun time filming this interview (except for the part where our site went down momentarily, that wasn’t fun at all). This is probably the first quality edited recording of the entire story of my career as an entrepreneur.
Hope you like it. They cut out most of my flippant comments.
When you first start creating products it is easy to succumb to divine inspiration fallacy. For many first time entrepreneurs, it is easy to think that you uniquely have had a one-of-a-kind product idea. You wake up one night with a crystal clear vision for a product and exactly how your future customers will use it. You think that the product spec comes from the mouth of God directly to your mind, and from there directly to the web. Write it out, build it, ship it, done.
When you think you already have the perfect solution to a problem, your mindset changes from “how do we discover what our customers want?” to “how do we get as much day one leverage as possible for our product?”. After all, it was quick for you to build it, so now it’s a race to capture as much of the market as possible before a competitor comes along and creates the same thing. Unfortunately, this leads many entrepreneurs to invest heavily in large launch campaigns, paid media and other excesses before they have discovered if their product actually fulfills a customer need. See Airtime and Color for recent examples.
While externally other companies appear to operate this way, few products created like this survive in the wild. You and I are not Steve Jobs and this is not Apple, and even Apple does iterative prototyping for during product development. A priori you do not know what people want, nor will you be particularly good at guessing when you are just starting out.
The first version of Exec was a text input on the web that would send an SMS, and we built it in week. After releasing it, we built things only things that solved a customer problem that multiple customers had. Customers wondering where their Execs were? Added the live map feature. Customers didn’t want to be bothered with phone calls? Added messaging in the app.
Do the bare minimum to prove your hypothesis. That doesn’t mean do shoddy work; that means knowing what the bare minimum is. If you are testing whether great design will inspire more customers to engage more with the product, well then, you need to actually put in the work to create some great designs. If you are testing whether customers will use a new billing interface, perhaps the first version doesn’t need the best design.
Some experiments will work, and some will not. You will likely need to do many experiments to solve even a small problem.
Invest in growth once you have external evidence that something is working. Before that time, keep as small of an overhead footprint as possible.
Remember, everything you are building today will be killed or iterated. The former is more likely than the latter. Great products are created by many incremental improvements.
It turns out you don’t have to be employed as a programmer to use programming at your job. When I was a college student, I spent a few summers working at a law office as a file clerk. Basically, the job was as boring as it sounds: get requests for files from the file room, physically sort through boxes, pull out said files, deliver them. Occasionally rearrange the entire file room to accommodate more boxes.
Because there was a full time file clerk as well as myself, there wasn’t really enough for two people, so I also spent part of my time as the assistant IT guy. That was also as boring as it sounds, and much less technical: reinstall copies of Windows 98 for the lawyers, hand them new keyboards, etc.
At one point a particularly terrible task came at hand. In order to make exhibits for a certain case the firm had to lay out and print literally thousands of photos. For God knows what reason, the software they had been using to do this was Microsoft Excel. They would actually make a spreadsheet and individually import each photo and then drag it to the right place so that there would be six photos per page when printed. This task fell to the woman who ran IT, which was promptly kicked down to me.
Imagine importing and dragging one-by-one thousands of photos into an Excel file. Even worse, the task got increasingly slower over time as the individual XLS file consumed more and more of the system memory. I used the first 10 minutes of the task to calculate the rate at which I was making progress, and realized that this would take me some 3-4 days to complete. 3-4 days of doing the same, monotonous 45 second task.
Well, fuck that. After 20 minutes I wanted to end my own existence. So, instead of actually continuing, I opened up the Excel macro editor, and started trying to figure out how to automate some part of the process. After about an hour, I had something that read parts of the file system looking for the appropriate files. Hooray, progress!
I excitedly told my boss that I thought I could automate this painful and tedious process (which had to be done several times a year). I can’t remember her specific words, but she basically told me to stop working on that and just do it the way they had been: she didn’t believe it was going to work and thought it was a waste of time.
Well, double fuck that. A couple more hours of applied effort and I had a macro that looped through all the images in a directory tree and laid them out in Excel. I spent the next four days surfing the web and handing out files.
This is why I encourage everyone to learn some basic programming.
A pretty cool detail: Bing special cases self searches (i.e. me searching for “Justin Kan”) and lets me customize how I appear. Self searching is a hugely common behavior on Google. Cool idea to piggy back on searchers' ego stroking.
Socialcam, our spin off company from Justin.tv, just hit #1 on the App Store Free charts. For those who don’t know, Socialcam is the easiest way to customize and share your videos from your iPhone.
18 months ago Michael, my Justin.tv cofounder, saw that there would be a need in the market as smart phones began to replace all your other electronics, including your hand held video camera. After skunkworks-ing Socialcam internally at JTV, we spun it off as a new company with founders Michael, Guillaume and Ammon.
Michael had a strong conviction around building products by designing experiments, looking at the data and iterating. He also had a vision around unlocking the video camera that exists in everyone’s pocket today. It’s awesome to see that passion and dedication to process pay off today. I couldn’t be more proud of the team.
Having recently read through the hundreds of applications for YC’s Work At A Startup event, I have a few tips for programmers who are applying to work at a startup. Here they are:
Keep it short. At the early stage, your resume is probably being read by someone who doesn’t read resumes as their full time job. Help them save time by limiting what you write down.
Keep it concise. Contrary to getting hired a big company, startups aren’t looking for the alphabet soup of every programming language and framework. We know you can’t possibly have mastery in all of them; no one can. Instead, you should focus on the things you do excellently, and demonstrate why you do them excellently.
Keep it relevant. If you worked in retail, leave that off, unless you are applying to some sort of retail software startup. Honestly, I just don’t care, it looks like filler.
Overall, startups are looking for employees who are exceptional in the one key thing that they will be doing, whether it is scaling the backend system or doing the visual design. In your resume you need to 1) demonstrate that you are exceptional at the thing you do, and 2) not be disqualified by seeming crazy or imbalanced. A simple rule: if something on your resume isn’t achieving one of the aforementioned two things, leave it off.
I know all these rules don’t apply to hiring at big companies. You should tailor your resume to the positions you are applying for. Also, even more important than a resume is a putting into your email specific reasons why you want to work at the startup and are a good fit for that specific startup. Nothing is better received by a founder than reading about someone being passionate for his or her project.
Lots of people are saying we are in a bubble. The IPO market caps for Groupon and Zynga are too high. The purchase price for Instagram is too high. Early stage valuations are too high, no thanks to that darn Y Combinator.
We are definitely in the growth phase of a cycle. I personally believe that we still have a ways to go before a retraction, but that is not the point of this post. I am writing this post for all the aspiring tech entrepreneurs and programmers out there who hear bubble and wonder whether jumping off is the right decision, and all the college kids wondering if a CS or engineering degree will pay off. To those readers: we might be in a bubble, but for you it doesn’t matter.
The reality of the world is that software, specifically Internet enabled software, is becoming a part of every business. Marc Andreessen said “software is eating the world,” and by that he meant that as time goes on, every industry is becoming a software industry. Old incumbents in retail, service industries, medicine and every other industry are being or will be disrupted by software companies created by younger (at least in mindset) entrepreneurs that have a better grasp of the implications of a world where every human being has an Internet-connected computer in their pocket. Here are some examples:
News / Publishing: The news industry is being fucked, and everyone knows it. The advertising dollars that supported the news industry is moving online, replaced by Craigslist and others on the classifieds side and blog networks on the display side. News sites with a better grasp of how the Internet works, like HuffPo or Mashable, are worth hundreds of millions.
Transportation: Uber takes advantage of city-enforced monopolies in the taxi industry and a simple product that uses the tech in your mobile phone to improve and automate dispatch to grow extremely rapidly. Taxi companies are unable to respond with technology, and instead try to fight with regulation. You might think since black cars are too expensive for normal people that this doesn’t disrupt all transportation, but Uber has been experimenting with lower cost rides, and if they don’t do it there are plenty of people who want to apply the same model.
The truth is that the technology sector as a whole over any length of time is a positive-sum game even if the economy doesn’t grow at all, because it is taking business away from other industries (i.e. those other industries will experience negative gains adjusted for population growth; that is, they are shrinking in relation to everything else). A retraction of investment interest in this will slow but not stop the disruption.
As a programmer or technologist, this is good for you. The world is being bifurcated into two classes: high skill knowledge workers and creators (programmers, designers or those who otherwise contribute to a technology organization, finance, a few lucky enough to work in the creative class) and everyone else. The good news for programmers is that while CS enrollment has increased, it hasn’t increased nearly enough to support the demand for engineers and software product people.
For everyone else, this is bad for you. Most people aren’t self aware enough to realize what is happening that is making their jobs disappear: a strong trend in software automation to make business processes more efficient. Instead of stocking DVDs at a bunch of retail outlets, why not just store them in central locations and ship them on demand? Costs go down; head count goes down. Better still, forget the DVDs and just stream the movies over the Internet.
Where once you would have an army of data-gatherers map every street to make a city map, instead now we just have a few people drive around a car that gets even more data than the data-gatherers could, and we have the software to turn this into beautiful and usable maps. Pretty soon, the cars will drive themselves.
These low and middle skill jobs are going away and aren’t coming back. I have no comment on the morality of this trend. As a society, because of the trend towards winner take-all economics, we will see a continually increasing disparity of wealth. We will have to decide if that is a society we want to live in or whether we figure out new ways of redistributing that wealth.
Anyone who tells you that you shouldn’t be in tech, or that the current market situation will create an oversupply of people in tech, is doing you a massive disservice. You should be in tech if you can stomach it at all. Furthermore, “technology” has tentacles that are beginning to reach into every industry (fashion, journalism, medicine, manufacturing, etc), and thus there is almost certainly something for you to be interested in regardless of what you do. Yes, in the event of an investment down cycle it will be harder to find a job (or get funding for your company), but it is just as likely that you won’t even have a job in another industry, because that job will be being done or made irrelevant by someone else’s software.
People will draw parallels to the finance industry bubble and burst and what happened to all the finance jobs in 2008. Tech in 2012 is not the same as finance in 2008, and here’s why:
Finance firms in theory create market liquidity for assets (making things more efficient) and provide financing for businesses (allowing new businesses to get started). By the mid-2000’s, we had an oversupply of talented people in finance, and the marginal gain from adding more talented people to the industry wasn’t growing the total value created by the finance industry. This is not the case in technology today: we are nowhere near that saturation point yet.
In the past couple decades we’ve had the phenomenon of the big box retailer that comes to a town and can use its’ massive economies of scale, distribution and brand to offer an irresistible combination of prices and service to drive all the other stores out of business. The technology industry is like that, but for all business in all vertical industries – companies with traditional distribution and marketing can’t compete. Internet software benefits from massive economies of scale and network effects previously unknown to the world. Games with virality built in can touch significant percentages of the world’s population in a matter of weeks. 20 years ago, if you wanted to distribute a game to millions of people, you’d have to package and ship the boxed software to thousands of outlets. Today, you just push a binary build to the Apple or Google website.
You want to be in the tech game, because in time it will be the only game in town.
If you’ve read to the end, then you might want to check out my new startup, Exec. At Exec, we are redefining and disrupting the traditional concept of a job through technology. I think the most interested and unsaturated vertical in tech is online-to-offline technologies that affect the real world, and we are right in the heart of it.