Professional Documents
Culture Documents
Founder Control
Tablets
What We Look for in Founders
The New Funding Landscape
Where to See Silicon Valley
High Resolution Fundraising
What Happened to Yahoo
The Future of Startup Funding
The Acceleration of Addictiveness
The Top Idea in Your Mind
How to Lose Time and Money
Organic Startup Ideas
Apple's Mistake
What Startups Are Really Like
Persuade xor Discover
Post-Medium Publishing
The List of N Things
The Anatomy of Determination
What Kate Saw in Silicon Valley
The Trouble with the Segway
Ramen Profitable
Maker's Schedule, Manager's Schedule
A Local Revolution?
Why Twitter is a Big Deal
The Founder Visa
Five Founders
Relentlessly Resourceful
How to Be an Angel Investor
Why TV Lost
Can You Buy a Silicon Valley? Maybe.
What I've Learned from Hacker News
Startups in 13 Sentences
Keep Your Identity Small
After Credentials
Could VC be a Casualty of the Recession?
The High-Res Society
The Other Half of "Artists Ship"
Why to Start a Startup in a Bad Economy
A Fundraising Survival Guide
The Pooled-Risk Company Management Company
Cities and Ambition
Disconnecting Distraction
Technical Interviews
Over the last year, weve done dozens of interviews that involve some kind of
technical element. Weve hired some great programmers, and we're looking for
more
Weve spent a some time thinking about how we run these technical interviews
(as have others), so I wanted to touch on the kind of things we look for, and what
the interview process at GoCardless looks like.
CV & Github
We ask everyone to provide a (brief) CV and links to their github account or
other examples of code theyve written. One page is usually sufficient - we want
know about;
Education
Previous jobs & specific responsibilities
Passion for development outside work. This is the area where people can
really shine. Tell us about a hack-weekend project, open-source project or
technical conference presentation that youve given.
We also talk through various theory questions, focussing on concepts behind web
programming (transfer protocols, request-response cycles, persisting data,
caching), database & systems design. We also touch on algorithms, but Im not
sure how useful this is, particularly for someone without a formal CS degree.
How do you run technical interviews? Comments welcome.
If youre looking for a developer position in London, apply now!
I hate meetings
It will be no surprise to those I work with to hear that Im not a big fan
of meetings. I wanted to lay out a few problems we had with meetings, and the
ways in which were trying to solve them.
Startups Operate in Conditions of Extreme Uncertainty
By definition, theres always uncertainty at a startup. You need to work out what
youre making and whether anyone actually wants it.
This uncertainty makes most people uncomfortable, which is natural. A tempting
solution is to schedule meetings to debate this uncertainty endlessly, as if it can
be made certain by the power of thought alone. This is particularly the case for
people with backgrounds like mine, who spent time at university and jobs in
which we were actively encouraged to theorise without seeking empirical
evidence. Instead, work out how you can validate your assumptions as quickly as
possible, and make that happen.
You can sometimes gain empirical evidence on which to make a decision whilst
expending a very small amount of time & energy.
The TripAdvisor 404 Test - Put a link to the new feature on your website,
but Before you build the darn thing see how many people click it. It
goes nowhere, it says broken link to the user [but] your log file says how
many people [check it out]It solves umpteen meetings worth of powerful
debate and logical arguments.
its sometimes tempting to devote more time than necessary thinking about (and
discussing!) these decisions.
In reality, the only important question for early-stage startups is almost
always "does anyone want what were making? Most of the other stuff doesnt
need to be decided yet. "What shall we put in our cashflow forecast?, Wheres
our new office going to be?, In 3 years, what do we want our brand position to
be? They are all important questions, but probably not yet.
If a decision doesnt have any practical impact on what your team is doing this
month, just postpone it (and the associated meetings). If you do eventually have
to make the decision, youll have more information at your disposal. If youre not
spending the majority of your time trying to solve the one most important
problem your business faces, it could be a sign that somethings wrong.
Meetings kill productivity
A lot of smart people have written extensively about this subject, and I dont
have much more to add. I reckon it takes me about an hour to really get up to full
speed when developing something challenging, and it takes a minimum of 2-3
hours to produce anything meaningful. So a meeting halfway through an
afternoon bazookas productivity for at least half a day.
Some thoughts
After a year of running our startup, weve come up with several ways of avoiding
unnecessary meetings and keeping necessary meetings as brief as possible
If you want to find out more about how we work, come and say hello
Automate Everything
Performing manual, repetitive tasks enrages me. I used to think this was
a corollary of being a programmer, but Ive come to suspect (or hope) that this
behaviour is inherent in being human.
But being able to hack together scripts simply makes it much easier to go from a
state of rage to a basic solution in a very small amount of time. As a side point,
this is one of the reasons that teaching the basics of programming in schools is so
important. Its hard to think of any job which wouldnt benefit from a few simple
scripts to perform more automation.
When were hiring, even for non-developer roles, we look for this kind of
mentality - its extremely useful, especially when building a software businesses,
if costs dont scale linearly with revenue. The more we can invest up-front in
automation, the less time our team has to spend on performing stupid, manual
tasks. As we add more employees, the benefits are compounded. And less rage
generally makes the workplace a much happier place.
I encountered a practical example earlier this week. It was time to submit
expense reports, and I could feel the rage starting to build up. For some reason,
our accountant decreed that we had to fill in a spreadsheet, line-by-line, for every
expense item. It looked a lot like this.
After briefly raging out, I decided to do something about this particular problem.
1 - quickly define the requirements;
Record details of every expense item including date, amount & description
Be able to query the list to produce reports (by month and/or person
submitting the receipt)
Keep copies of receipts for HMRC
2 - think about how receipts fit into our workflow at the moment, and the
major problems
per user for something I could probably write myself in a couple of hours seemed
silly.
Technical Details
If youre interested in the technical details, I used a ruby gem called
Mailman, hosted on Herokus new cedar stack, to poll our POP3 mail server
every minute. Attachments (pdfs, photos etc) are saved to AWS S3, and simple
details of each receipt are stored in a postgres database. A Campfire gem called
Tinder immediately alerts our company chat room that someones spent some of
our hard-earned cash (just for amusement, really), and a very simple Rails app
hosted on Heroku makes the data available in HTML or CSV, which can be
queried by date-range or employee.
Emails are required to have a line similar to Amount 12.50. Running OCR on
photos of receipts and detecting the right line to take the Bill total from seemed
like too much effort. We might switch to mechanical turk if people find this step
troublesome.
If theres any interest, Im happy to stick the code on github.
Conclusion
Dont put up with repetitive, manual tasks - automate them! Its the
jedi hacker way.
that sends new issues & commit messages into our private developer room. There
are a few more custom-built ones that Ill get onto later!
If youre using ruby, Id recommend checking out the Tinder gem, which
provides a convenient wrapper to the REST API.
I can also highly recommend hubot, a Campfire bot written in Node by the
Github team. Its very simple to write extensions to perform simple actions like
trigger server deployments.
Zendesk
$24/month per agent for standard version. While pretty expensive, Zendesk
offers a variety of free trials, particularly for startups. It helps companies run
email-based customer service desks, turning inbound emails into tickets that
can be responded to or re-assigned across available agents.
It was the first customer service product we decided to use properly, and now
forms the core of all of our written communication with customers - particularly
email & twitter. Its simple to add tags to tickets automatically or manually, so
we can count the number of requests for Repeat Billing vs European Rollout
at the end of every month. You can also get a bunch of metrics like response
times & satisfaction rates, but at the moment were just focussing on keeping our
heads above water!
We considered using the in-built Campfire integration to alert our Campfire room
of new tickets, but quickly realised this would be more annoying than useful as
we approached 30-40 new tickets per day.
Olark
$15/month for 1 operator. Discounts for startups. This provides live text chat on
our website - the little Chat Now box you see in the bottom-right of your
screen at gocardless.com. I was initially really skeptical of Olarks value, but
after using it for a month, Im a convert. You can see where a user has come
from and stay with them as they navigate through your site (including
notification of which page theyre currently viewing), which makes it super easy
to solve problems step-by-step.
With built-in Zendesk API integration, you can also save conversation transcripts
in Zendesk as solved tickets and add tags to them - which makes running
aggregated metrics really simple. Its as simple as typing !tag International in
the chat window. If you want to drill down even deeper, you can run metrics by
page - eg 70% of queries from people viewing page X were about Pricing,
whereas most people on page Y were looking for more information about
International Support.
We generally use Adium or a GChat plugin to access Olark.
Phone Support
The one weak link was our phone support - we previously used a Skype number
that forwarded to mobile phones. Unfortunately, we had a number of problems
with the solution - call quality was really low, sometimes calls didnt forward or
just randomly dropped, and collecting voicemail was a nightmare. Id looked at
the Zendesk voice features, but they were only available in the US & Canada.
Then, a couple of months ago, some guys from Twilio moved into an office
nearby. Id been wanting to try out their service for a while, so we decided to
hack together a simple customer service phone app. A few hours later, we had a
pretty decent phone system with voicemail.
Whats more, weve built-in a tool to check whos available in our private
Campfire room to take the call. If someone doesnt pick up, it will try one of our
other agents idling in Campfire. It also talks to our Zendesk ticketing system,
notifying us if someone leaves an mp3 voicemail, so that someone always
follows up. Sweet!
One small gripe is that voice-to-text transcription is terrible, to the point of being
unusable. Maybe its my English accent, but I couldnt get above a 50% accuracy
rate. So we turned it off and stuck with voice recordings.
A landline number costs almost nothing, but the call forwarding to our agents
(right now, me & my co-founders!) mobiles comes in at $0.14/min, which isnt
cheap.
Ive posted the technical implementation details here
Conclusion
The key for us is that consumers can contact us however they like - phone,
twitter, email or live chat - and we can respond quickly using tools that were
familiar with.
Metrics are also really important - we want to be able to track the number of
queries by channel and easily categorise them by subject matter. This allows us
to fine-tune our landing pages to address frequently asked questions more
directly and also prioritise new product development according to customer need.
But its vital that this we can do this tagging either automagically or at least inline with whatever were doing. The !tag International Expansion in Olark is a
good example of this. As soon as you need to open a separate list of Feature
Requests and add a +1 to a tally chart, people stop using it.
The two weak points in this regard are Campfire and the Twilio voice app. For
Campfire, we could do a text search on a months logs, or write a simple hubot
extension (!tag International). With Twilio, Ive still not come up with a good
solution. Suggestions welcome!
If you want to work at a startup that hacks Twilio & Campfire apps together
during the week, check out our jobs page!
Discuss this post at Hacker News
'twilio-ruby'
'tinder'
'net/http'
'uri'
The idea was to query our private Campfire room to see which agents are
available, then render the relevant TwiML to get Twilio to forward any inbound
customer calls to the phone number associated with that agent. If the agent
doesnt pick up the call with 15 seconds, it should try the next available agent,
until all agents are exhausted, at which point it should record a voicemail.
known_agents = {
"Tom Blomfield"
=> "+4477XXXXXXXX",
"Jim Beam"
=> "+4477XXXXXXXX",
"Fred Flintstone" => "+4477XXXXXXXX",
# etc
}
campfire = Tinder::Campfire.new 'gocardless', :token => CAMPFIRE_TOKEN
room = campfire.find_room_by_id CAMPFIRE_ROOM
get '/start' do
# Alert Campfire users that there's an incoming call
room.speak "Incoming call from #{request["From"]}"
response = Twilio::TwiML::Response.new do |r|
r.Play "Welcome to GoCardless"
r.Play "Please wait while we find someone to answer your call"
r.Redirect "/call?user=0"
end
# Render the TwiML
response.text
end
post '/call' do
user_id = @params["user"].to_i
# Query Campfire for available agents
available_agents = known_agents.select do |name, phone|
room.users.map(&:name).include? name
end
# Agent we're going to call
agent_name
= available_agents.keys[user_id]
agent_number = available_agents[agent_name]
response = Twilio::TwiML::Response.new do |r|
if agent_name
r.Say "We're connecting you to #{agent_name}"
# Alert Campfire users that we're calling someone
room.speak "Calling #{agent_name} on #{agent_number}"
# Tell Twilio to try to call the agent
r.Dial agent_number, :callerId => '+44XXXXXXXXX', :timeout => 10
# Fallback action if the agent doesn't answer
r.Redirect "/call?user=#{user_id+1}"
else
# No agents left, redirect to voicemail
r.Redirect "/voicemail"
end
end
# Render the TwiML
response.text
end
One gotcha to be aware of is that Sinatra will evaluate the entire script when the
server boots up; any variables you assign (eg, whos in our Campfire room) will
be set once, and used like constants. On the other hand, each controller method
(eg get /start) takes a block; this block is evaluated every time Sinatra serves a
page. Thats why we ask for room.users inside the post /call block - it will
make sure that the list of available agents is up to date.
In reality, we tweaked the above script a little; looping through 5 or 6 different
agents could get a little irritating for a customer, so we limited it to 1 re-try
before diverting to voicemail.
The voicemail script is pretty simple:
post '/voicemail' do
# Tell Campfire
room.speak "No-one answered call from #{request["From"]}!"
response = Twilio::TwiML::Response.new do |r|
r.Say "Unfortunately no one is around to take your call"
r.Say "Please leave a message and we'll get back to you"
r.Record :action => "/goodbye", :timeout => 10
r.Redirect "/goodbye" # if no message is left
end
response.text
end
post '/goodbye' do
# Tell campfire
room.speak "Voicemail from #{request["From"]}.
#{@params["RecordingUrl"]}.mp3"
response = Twilio::TwiML::Response.new do |r|
r.Say "Thanks for your message"
r.Say "We'll get back to you as soon as we can. Goodbye"
end
response.text
end
The zendesk method is just a simple http post to the ZenDesk API using
net/http, which creates a new Zendesk ticket. There is a Zendesk ruby gem, but
it wasnt well supported at the time of writing.
def zendesk(args)
from = args[:from]
recording = args[:recording]
url = URI.parse "http://help.gocardless.com/tickets.json"
req = Net::HTTP::Post.new(url.request_uri)
req.body = {
:ticket => {
:subject => "New Voicemail from #{from}",
:description => "New recording at #{recording}.mp3",
:ticket_type_id => 33, # Zendesk code for voicemail!
}
}.to_json
req.basic_auth ZENDESK_USERNAME, ZENDESK_PASSWORD
req["Content-Type"]= "application/json"
connection = Net::HTTP.new(url.host, url.port)
response = connection.start do |http|
timeout(5) { http.request(req) }
end
end
Thats it!
One thing to note - all the Campfire and Zendesk API calls are
performed synchronously, which increases response time and can leave the caller
Youll accumulate buckets of technical debt, but its generally ok. If you dont
find traction or product-market-fit, you declare bankruptcy on that technical
debt and just move on to the next iteration.
Once youve found traction, youll likely need to re-write your codebase, but
thats ok as well. At this point, youll have a much clearer idea of what the
product actually does, so writing specs should be much simpler.
As an addendum, I think this conundrum is one reason why outsourcing earlystage tech development is such a terrible idea - any decent web development
shop will generally insist on writing comprehensive test suites, and theyll react
badly if the job spec changes dramatically every 2 weeks. But thats sort of
necessary when youre writing code for an early-stage startup.
Discuss this post at Hacker News !
Unless people are incredibly lucky, theyre often not making something people
want.
Ideas for startups are worth something but mainly as starting points
An idea for a startup is only a beginning. A lot of would-be startup founders
think the key to the whole process is the initial idea, and from that point all you
have to do is execute. Venture capitalists know better. If you go to VC firms with
a brilliant idea that youll tell them about if they sign a nondisclosure agreement,
most will tell you to get lost. That shows how much a mere idea is worth. The
market price is less than the inconvenience of signing an NDA.- Paul Graham,
How to Start a Startup
Making something people want is not the product or conclusion of your idea
plus development time. Its not the end result - its the process. Making
something people want means prototyping, launching early (often by faking
large parts of your service) and talking to users.
Its the fastest, most cost-effective way of finding that smallest quantum of
utility - the kernel of an idea that solves a burning problem for a tiny subset of
people.
In other words, its a way of ensuring youre not wasting your time.
People
There are two kinds of people who most commonly have this problem.
The first is the Business Strategist. Hes the ideas guy who goes to meetups
to tell people about his gleaming vision for his startup. Hes a management
consultant, a banker, a lawyer. He doesnt want to get his hands dirty with actual
customers, and hes looking for developers to build his MVP.
The other is the Technical Purist. Hes often got a Computer Science Degree
(or several), hes a fantastic developer and hes worked at a big tech company or
in a well-respected development agency. He develops against the nightly builds
of the hottest new graph databases. Everything is test-driven and built to scale to
tens of millions of users. He loves building stuff so much that he doesnt want to
waste any of his time actually talking to people or selling his product.
At my company, GoCardless, we had a combination of both of these problems.
During the summer of 2011, we were 6 months into our startup. Wed built a
product the previous January and launched after just 3 weeks of development.
Our vision was to solve group payments - we were a platform for sports teams
& university societies to organise & collect money. We managed to convince
about 20 or 30 of our friends & family to collect money for their various causes from rowing clubs to stag parties. It worked ok - people we knew used the
product, and some used it repeatedly. It was enough to show a glimmer of
possibility, and it helped us get onto Y Combinator that summer.
By June, growth was stagnant. We spoke to our users every day, asked them
what additional features they wanted to see, and then we built them. From
scratch, we built a set of customisable forms for collecting information from
group members (wufuu, anyone?), advanced calendaring and reminder functions
(doodle.com) and the most complex set of functionality for managing large
sports clubs with multiple teams, roles and permissions that anyone could
possibly imagine. Our solution to crappy growth was to split out time roughly
50:50 between building more features and debating the vision of our company.
After an afternoon of meetings with pg & the other Y Combinator founders, we
resolved to take a different approach. Wed give ourselves 2 weeks to see if we
could make this thing work. We paused development entirely and spent all of our
time cold-calling new potential customers. And since our payments platform was
UK-only, this meant getting up at 3am East-Coast time.
One particularly memorable conversation involved 20 minutes speaking to a man
who ran a local village cricket club in the South-West of England. Id empathised
with the strains of running a sports club (Id run one at university), and the
terrible administrative burden it came with. Wed discussed the trials of
collecting subscription fees and the social anxiety caused by chasing up over-due
debts. So I moved to close him; Weve built a website to solve all of these
problems - give me your email address and you can try it out.
What, he asked, is an email address good for? Why would I have one of
those?
To communicate online, I spluttered, to use the internet!
The internet? I dont use the internet. Goodbye, sir he concluded.
Our problem, we discovered, was two-fold. One, that the mass-market didnt
appear ready for our product. It turned out that the most successful Irish sportsteam management tool (teamer.net) is still based almost entirely on SMS. The
second problem was more fundamental; we hadnt really discovered our
quantum of utility. We didnt have that tiny kernel of a product that solved a
really burning problem. Collecting money for sports teams is annoying, but its
only a small part of a few peoples lives.
On the other hand, it turned out that businesses faced the problem of collecting
money every day. And for particular people within those businesses - the
accounts receivable department - this was their entire job. The core of our
product - a Direct Debit API - was an ideal solution to this burning problem.
In nearly every failed startup, the real problem was that customers didnt want
the product The only way to make something customers want is to get a
prototype in front of them and refine it based on their reactions. - Paul
Graham, How to Start a Startup
To that quote I would add and if it turns out that no-one cares, do something
else
Most startups arent competing with other startups; theyre competing with no
one giving a shit.
A few years later
One of the founders of the construction startup (mentioned at the start of this
article) came across another group of founders who looked like they were on the
same path. This company had what seemed like a promising idea - an interesting
take on loyalty-schemes & subscriptions for real-world products and services. Its
non-technical founders were looking for a designer and a coder to build an iOS
app & website, which would be their MVP. Theyd planned out exactly how it
would work when theyd achieved massive adoption.
They had a long and frank discussion with the earlier founder. Heeding the words
of warning, this company reformulated its plans. What was the bare minimum
they needed to work out whether customers & businesses were interested? How
could they simulate the benefits of their service without blowing tens of
thousands of pounds on outsourced development?
The founders decided to sell shop-by-shop in their local area, signing businesses
up to their new platform, promising them new patrons & more repeat custom.
They then quickly ran a local advertising campaign offering people great deals at
their favourite cafes & bars. Instead of spending time & money building an app
and a website, they simply distributed laminated cards printed with with unique
IDs to their customers, and every morning took a paper lists to the local
businesses with details of the discounts each person was entitled to. Every night,
theyd collect the lists and manually enter the data back into an Excel
spreadsheet. By the end of the month, the majority of the businesses reported
remarkable increases in volume & cash-flow, in some cases up to 75%
improvement. They used this proof to secure investment & build a team of
developers and salespeople.
Conclusions
You should spend most of your time focussing on making something people
want. This is a process, not a goal.
If youre worried youre not making something people want, the solution is
almost always the same - focus on what youre shipping in the next month. Dont
obsess over long-term strategy, or stick dogmatically to a vision. Launch
sooner than makes you comfortable. Fake as much of the service or product as
you can to save time. Talk to your users to make sure youre solving a burning
problem. Once you have 20 or 30 regular users, do everything in your power to
absolutely delight them.
Ensure youre making something people want. If youre worried about this, ask
them.
Discuss this post on Hacker News
Advice
Starting a company is a challenging process - youre thrown into the deep-end
with nothing but your wits to help you. Often, though, advice will be
forthcoming. This post is about that advice, and how to spot the difference
between good and bad.
Some advice is expert - your lawyer talking about your Ts & Cs, or a sysadmin
giving advice on web-service redundancy. In these cases, youd do well to trust
the persons professional judgement and follow their advice.
Other advice is not.
Some people, as part of their jobs, are trained to give substantive, concrete, and
often completely baseless advice. In my previous life as a Management
Consultant, wed routinely give advice like sell these 400 under-performing
stores. There is a certain reassurance in the tangible, solid nature of the advice;
Do this and youll be fine. It absolves the recipients from spending more time
thinking about the problem - the experts had provided a solution. As long as the
advice wasnt demonstrably wrong, everyone was happy.
Unfortunately, early-stage companies arent like this. If you waste 3 or 4 months
misguidedly pursuing some market segment, or building a feature-set before
youve determined that youre really on to something, youll bankrupt your
company.
This is why advising early-stage startups is so fraught with difficulty - experts
from fields like law & accounting give substantive advice without really
understanding the nuance of the market or the product. In fact, almost no-one
else in the world is close enough to your customers to really understand their
problems. These are the problems that you, as a startup founder, should be trying
to identify & solve.
When my startup, GoCardless, was in Y Combinator, the advice we got was
different. Despite having some of the best collective experience in early-stage
startups on the planet, it was striking how rarely the partners would give this kind
of substantive advice. Instead, they dealt in mantras & heuristics. At the time,
this was incredibly frustrating - we wanted someone wise just to tell us what to
do. It apparently doesnt work like that.
Instead, they presented a set of rules which appear to maximise (but not
guarantee) a startups chances of survival:
Launch early & talk to your users (or, more completely Build the absolute smallest
thing that can be considered a complete application and ship it )
Make Something People Want"
"Dont Worry about Competitors
Focus 90% of your time on solving your one biggest problem
Dont Talk To Investors (until demo-day)
Be a cockroach (or Assume you wont get money, and if someone does offer you
any, assume youll never get any more.)
This list of questions should be shared with the company, and improved over
time. Id suggest its a key part of the companys IP.
variables at each stage. Its worth noting that, while useful, these tests are not as
good an indicator of on-the-job capability as the longer coding challenge. Many
fantastic engineers dont excel under this kind of high-pressure situation, and
actually its not the kind of scenario theyd encounter on-the-job very often.
At the other end of the spectrum, asking someone to complete a 3 or 4-day
project might be the ideal way to judge aptitude, but it just isnt realistic in our
experience.
Practical Tips
Finally, there are a number of simple practical tips that will make your life much
easier:
Wherever possible, try to bunch your interviews into blocks of time. At the most
extreme, I met 8 applicants for in-person interviews in a single day. Its
exhausting, but it avoids constant distraction and context-switching, and allows
you compare candidates more effectively.
Have one person in the company who is responsible for receiving & screening
CVs. Do this in blocks of time, once or twice a week. Otherwise, it can get
overwhelming
Be clear what youre looking for from CV- and phone-screens. You could
be wasting a lot of time. Write a checklist after youve seen a dozen or two CVs.
We should have rejected way more people at this stage.
Whatever the outcome, respond to candidates quickly and constructively. It
makes them feel valued, and its simple good manners.
Finally
Even using this process, youll make bad hires. It happens, and its not the end of
the world. Fire fast and move on. Overwhelmingly, the bad hires we made were
due to poor preparation, or, at times, wilfully skipping most of this process.
Hiring well is one of the most important things you can do for your company.
Dont neglect it!
Id love to hear your thoughts - please comment below, or follow the discussion
over at Hacker News
The often-omitted final step is to tell people about it! You could have the best
culture in the world, but you wont attract applicants if no-one knows about you.
Github is one of the best in the business when it comes to attracting great talent.
People like Zach Holman and Tom Preston-Warner blog profusely and tour the
world talking about software development. But, underlying every article and
presentation is this message; Github is an awesome place to work.
Since not every company can spend hundreds of thousands a year flying people
around the world for conferences, or fit their reception area out as a replica of the
Oval Office, I wanted to share a few actionable tips for the first-time
founder. These shorter-term fixes will provide value disproportionate to their
cost. There are also a few gotchas - common practices that do more harm than
good.
Provide top-quality equipment
Dollar-for-dollar, high-quality equipment was consistently the most sought-after
perk when weve surveyed developers, above a swanky office, fancy snacks, and
even salary. It makes sense to invest here.
Some simple maths backs this up - depending on experience, you might pay
anywhere from 30,000 to 70,000+ for a software developer in somewhere like
London. Upgrading from a standard MacBook air to top-of the range model plus
Thunderbolt display will cost you an additional 1,500. Youd need to achieve a
1.9% productivity gain (based on a 40k salary and a 2-year equipment lifetime)
to pay back the investment. If this equipment reduces the running time of your
test-suite by two minutes, youd save about 4 days a year[1] which, alone, is
worth about 1.8% productivity boost.
[1] 4 days = 2 minutes * 5 runs a day * 225 working days per year
It then costs, conservatively, 5,000 to attract and hire a single developer. If topquality equipment has any impact on hiring or retention, youve suddenly made a
profitable investment. You also get to take lots of cool photos of your working
environment and post them all over twitter and your hiring page - remember that
telling people is the most important part.
Weve found that having the engineering team take a couple of days off work to
hack on a fun side-project can be a great recruitment tool. Not only does it
increase morale and let you try out new technologies, it also provides you with
great content for blogging & conference talks.
The best example is our pool-ball tracker we built at GoCardless. We mounted a
webcam above our office pool table, and used OpenCV libraries to track the
position of the balls. The ball coordinates were fed into a rules engine which then
scored the game. It got a great reception on Hacker News and elsewhere, and
resulted in an extra 9,000 unique visitors to our site on a single day. And it was
awesome fun.
Other examples are our GoCardless-branded beer and Raspberry Pi projects.
Our only failure here was a Spotify-powered office music system - we just never
got around to blogging about it. As with everything on this list, its only effective
if you tell people about it.
Technical & Culture Blogging
This is the single greatest recruitment tool weve found. If youre using any kind
of technology at all, or have views on development best-practices and startup
culture, you should be able to write compelling content that will do well on
places like Hacker News and Reddit. Its also more more repeatable and has a
higher ROI than side-projects, because it doesnt require half-a-dozen people to
take multiple days off work.
For example, one particularly incendiary article on ditching Responsive Web
Design garnered 34,000 unique visitors on a single day. Weve had several
applicants explicitly mention this article during interviews, even 9 months down
the line.
You can blog about pretty much anything you work on - meetings, org structure,
a new javascript framework youre using. Explaining how youre different from
just another BigCo is an extremely useful recruitment tool.
Often, the key to getting traction on somewhere like Hacker News is choosing a
punchy title and taking a slightly more extreme position (See Hours are
Bullshit) that you might otherwise do. Interesting technical posts do well, too.
From a practical point of view, make sure you host the blog on your companys
domain (SEO benefits), mention your companys name and link to your hiring
page in an inoffensive way.
Finally
These are five pretty simple things you can do to increase the number of quality
applicants. The most important factor is simply to get your name out into
whichever community youre trying to recruit from. If you spend a couple of
weeks building a cool new tool, don't forget to spend the final hour or two
writing a blog post about it.
Id love to hear about other tips people have - you can follow the discussion over
at Hacker News
emotionally, we struggled to make the change. Once we swapped the key metric
to daily transaction fees, the problem went away.
Since it sometimes seems fashionable to run companies without revenue, you
need to pick the best proxy for long-term value of your company, be that profit,
revenue, installs, MAU or page-views. But this raises the next problem we
encountered. Even if you could track company value on a day-to-day basis (and
you can if youve gone public), its not an actionable metric. This is usually a
problem for B2B companies since the enterprise sales cycle can often be several
months - the work you do today wont impact revenue for some time.
Break out KPIs
One solution is to have each team within the company break down that key
number into its component drivers until you get to something actionable. A really
neat example is an outbound telesales team. Ultimately, you want your sales
team to be closing recurring deals, which will drive revenue in a predictable
fashion. But, as any sales director will tell you, if youre not closing the deals,
you need to focus on the activities youre performing. The stage before a closed
deal might be some form of proposal, outlining the key SLAs you will deliver in
return for committed fees. To deliver 5 closed deals this month, you might need
to make 10 proposals. To make those 10 proposals, you need to attend pitch
meetings with 20 companies. To get those pitch meetings, youll need to have
spoken to 200 companies. Since only 1-in-3 cold-calls results in a conversation
with a decision-maker, your telesales teams need to call 600 companies this
month. Suddenly, you have some pretty actionable KPIs for your sales team.
These are the numbers that you track in daily stand-ups, and measure conversion
between each stage. Since they are actionable metrics, the entire process becomes
an optimisation problem.
As far as possible, each part of your business should have 2 or 3 actionable
metrics that they examine on a daily or weekly basis. Theyre the numbers that
tell you whether youre improving or not. An example might be website up-time
for the devops team, or average customer wait-time for your customer support
team. Whatever numbers you choose need to be objective - if people can
massage up a bad month, it undermines everyones faith in the metric. These
metrics shouldnt be sticks to beat people with - its actually incredibly
motivating to work very hard and see that youre making progress. Theyre also
useful to highlight strategies or areas of the business that just arent working out,
rather than allocating personal blame.
Eric Ries spends a lot of time in the Lean Startup talking about actionable vs
vanity metrics - its well worth a read.
Pick one number thats your Pole star - the best proxy for long-term company
value. Re-examine it periodically to see if its producing perverse outcomes.
Have each team break down the key metric into its component drivers or KPIs that
individuals can influence. Measure team & individual performance & improvement
on this basis.
Make sure the numbers are objective.
Make them visible - put the key metric on a big dashboard, and give each team a
dashboard that lets them see how theyre doing. Send regular automated emails
around your teams with a breakdown of their numbers.
Growth
When eating an elephant, take one bite at a time.
- Creighton Abrams
I was chatting with an investor a year or two ago, shortly after our Series A, and
the subject of revenue goals came up.
At the time, our revenue was pretty low - less than 10% of monthly costs. We
estimated our business would only become viable when revenue reached a level
10 times greater than our current costs.
The implication was that we needed grow by 100 X before our business had any
significance at all, and I was struggling to come up with any credible plan for
getting there.
Her response was for us to simply put one foot in front of the other. Just focus on
growing every month, and the rest will take care of itself.
At 15% month-over-month growth, youd grow by 100 X in around 33 months.
At 20% month-over-month, it takes 25 months.
At 25% month-over-month, it takes 21 months.
The thin cohorts at the bottom of the graph are the loyal users who signed up at
the start, and who are still paying for your service 18 months later. The orange tip
in the top-right are the users who just signed up, and have only contributed to
revenue in month 18.
In the best low-churn businesses, the revenue provided by each cohort can
actually grow over time - each cohort gets fatter - if you can successfully upsell new services.
In a high-churn business, the cohorts decay alarmingly quickly, and once newuser acquisition starts to slow, the business implodes.
If you simply looked at the top-line of the graph (total monthly revenue), without
considering the cohorts, youd think the high-churn business was doing much
better until at least month 13-14. But one-and-a-half years in, its clear that the
low-churn business is on a path to success, while the high-churn business needs
to execute a substantial pivot to avoid failure.
Indicators of Churn
So what are the characteristics of high- and low-churn businesses, and what
techniques can you use to minimise churn?
High Switching Costs - if its slow, painful & costly to switch providers, you
will experience very low customer churn. This is clearly the case with retail
banks, email providers and recurring payment processors. I still bank with the
same provider I chose 15 years ago, despite their crappy service and barelyfunctional website.
New competitors have developed clever tactics to solve this problem developing onboarding tools to reduce switching costs, or focussing on new
customers before theyve committed to an incumbent provider. This is one
reason Stripe focusses so hard on serving other startups, and banks target
teenagers.
Sales Architecture - the way a product is priced & sold is often designed to
minimise churn. Gyms & dating sites are the best examples here. People come
out of the Christmas & New Year vacation period feeling unhealthy, lonely, and
determined to change. One large dating site books over 70% of its annual
revenue in the first quarter of the year.
The credit in credit card is not related to the plastic card, or even the card
network. Its simply debt financing thats offered by a financial institution at the
other end of a series of pipes. Visa & co provide those pipes, but charge a pretty
heft fee for doing so. Thanks to the existing 4-party system, merchants are paying
around 2-3% of every transaction as a tax levied by those incumbents, who add
little value in return. Apple now makes that a 5-party system, adding extra cost in
exchange for a slick user experience.
With Apple Pay, instead of a user inserting a card and entering a pin, theyd
present their iPhone and touch their thumb to a fingerprint reader. Their iPhone
passes up credit card details via the card processor (or, more precisely, it passes
up a token that allows the card networks to access card details from Apples
servers a little way down the line), and the process continues as normal. The
metaphor of Apple Pay as a simple wallet works well - it simply provides a
mechanism for storing your cards, and presenting them to merchants when you
want to pay. They arent actually processing any payments themselves., unlike
PayPal or Google Wallet.
Apple Pay entrenches a fundamentally broken card payment network, and layers
on even more cost. Apple has struck deals with Payment Networks and Issuing
banks, and as part of those deals, it is taking a cut of the fee. Its now another
mouth to feed.
What we should be aiming at is frictionless payment over a different series of
pipes - the public internet, and existing inter-bank electronic clearing systems. If
Banks opened up their platforms to allow multiple credit providers, wed have
competition to offer consumers credit financing on competitive terms. Whether
you need an overdraft, a fixed-term loan or individual-item financing, you should
get the best rate available in the market. The idea of having to switch payment
card to get access to the best rates is crazy.
By decoupling the issue of credit is from "payment network, we expose the
card networks for the rent-seeking oligopoly they are.
Discuss this post on Hacker News
Once a company is running, it can gain a momentum all of its own. This seems
especially true for big companies with a stable customer-base and market share.
Some large companies have such momentum that a large proportion of the
employees could simply not come to work and the thing would keep going all by
itself. Big companies seem to train managers to be interrupt-driven, rather than
proactive. So if youre hiring from big companies, watch out for this.
Consistently getting shit done takes a huge amount of energy and initiative, but
it seems energising for the right kind of person, rather than exhausting. It is a
particularly important skill in the early days, because the natural state of a startup
is inertia and, ultimately, failure. At first, your company has zero velocity, so you
need to apply an incredible amount of time and energy to overcome this inertia
and get the thing moving. Nothing happens unless you make it happen.
My favourite example is the story of Instacarts early launch with Trader Joes.
Instacart is a grocery delivery service and partners with some of the biggest
retailers in the world. But when they were starting out, they wanted all of the
inventory of Trader Joes listed on their site, along with the price and photo for
each item. A normal approach would have been to negotiate a business
development deal, which would have taken many months, killing momentum.
Instead, the founders figured out that they could probably purchase one of every
single item in the store, and working for 48 hours straight, photograph it all in a
studio that was empty over a weekend. In my book, that is getting shit done.
remaining 36 shares vest monthly over the remaining 3 years - 1 share per
month.
If I leave (or Im fired) after 3 years, I walk away with 36 shares. The remaining
12 shares are taken back by the company.
Vesting is a good thing for everyone. It ties peoples incentives to the long-term
success of the company. Ive heard founders even talking about 6 or 8 year
vesting sometimes.
If your co-founder says just trust me, see above.
4. Keep company money separate
When your company needs to pay bills and youve not raised outside investment
yet, be very clear whos paying and under what terms. Is the money going to be
repaid? When?
As soon as you can, establish a separate company bank account. All cofounders
ideally put the same amount of cash in, and bills get paid out from that account.
Simple.
If youre putting in money as a stop-gap before an investment round and expect
the money to be repaid, put this in writing. It should appear in your companys
balance sheet as a liability - Director Loan. Youll also need to let investors
know if you expect to use their investment to pay back loans.
5. When you go out to raise investment, dont over-optimise for valuation.
PG stood up one Tuesday evening at Y Combinator with a memorable lesson.
YC companies are competitive about everything. In each new batch, founders are
told not to compete over who can raise at the highest valuation. And every batch,
some founders ignore this advice. Airbnb, we were told, raised their seed round
of $600k on a valuation of something like $3.5m - certainly nothing like the
uncapped convertible notes we sometimes see at the moment. And the Airbnb
founders are just fine with how theyre doing.
You should spend a little time figuring out what price the market will offer.
Choose the investors you think you could work with for next 5-10 years. Dont
spend time shopping the deal around to increase your valuation. Also, dont pick
crappy investors just because they offer a higher valuation.
These rules are not negotiable!
You join the company to do a specific role, but you spend your first week or two
figuring out what you should actually be working on. At least they remembered
to buy you a laptop, a desk and a chair.
There are 3 or 4 engineers in the team, so you start to do code-review and set up
a continuous integration server. You lament all the technical debt that was
accrued by those idiots who arrived before you, slowing down the pace of feature
development.
A new product direction for the company is decided in a meeting of the three
founders; this is presented in an all-hands meeting of 12 employees. The
company sets out a quarterly product roadmap, and youre asked what you think
should be prioritised. You pick the projects that most interest you.
Youll certainly be able to earn more money at a big company, but the salaries
are enough to live comfortably on. You get 0.5% in stock options with a salary
thats 10-30% below market rate. But you reckon its worth the gamble - if the
company sells, youll be able to buy a really nice house in London. Still, it feels a
long way off.
The marketing function is one full-time person who does everything from PR,
paid advertising and social media. The founder no longer personally runs the
companys Twitter account. Your company regularly appears in the ones to
watch articles in tech press.
Youve got thousands of paying customers, and you occasionally see people in
public using your app, which feels fantastic. Your mum isnt really sure what
your company does, but shes happy enough because youre being paid a real
salary.
Series B
The company is now 2-3 years old and has just raised 10-20m. Its using that
money to grow the team, increasing headcount to 60 people.
The founders got tired of the dingy office, so they splashed out on somewhere
with lots of exposed brickwork and glass walls. Everyone is sitting on Herman
Miller chairs. You find these chairs online and see they cost 1000 each.
There are 3 or 4 people in finance and HR roles, and youre presented with a
company handbook when you join. You have a couple of days training, but you
mostly figure it out along the way.
Marketing now has three digital advertising people, and people specialising in
PR, content and community management. Youve got millions of paying
customers in several countries, and your company is regularly featured in the
business pages of the press.
Engineering has been split into two or three separate teams, and theyre trying
recruit graduating college students to fill the hiring pipeline for next year.
You join in a very well-defined role, after the team manager recruited you. You
meet founders during your interview, but they dont always remember your name
now you work here. The CEO sees a management coach every fortnight.
A new product direction is debated at a board meeting, and senior management is
informed by the CEO. Management let their teams know that changes are
imminent. Most people are focussed on repeatable processes and scaling up.
The company doesnt seem to release new features very often, but the app is used
by some of of your mums friends, which makes her very proud.
Your salary is in line with what other companies are paying, and you get 0.05%
stock options. Youve already figured out which house youd put a deposit on
when the company sells. A sale seems inevitable at some stage.
Series C
Youre joining a unicorn! After 5 years, the company has raised 100m at a 1bn
valuation. There are some strange terms in the deal structure that youve never
seen before, but the companys HR department tells you thats just legal stuff.
When you join, youre granted 50,000 of options, which you work out is one
two-hundredth of a percent, or 0.005% of the company. Friends in other startups
tell you to check what the investors liquidation preference is, but no-one at the
company can seem tell you. Theyre all too busy trying to guess when the IPO is
going to be announced. You figure that any kind of payout is a nice bonus. The
salary is pretty decent anyway.
You join in the companys newly opened Dublin office, part of a new drive by
the company to internationalise. Youve joined as one of 6 new Sales Associates
focussing on European enterprise sales. Theres 4 week intensive induction
training programme before youre allowed to talk to any customers.
The new office feels empty at first, but youre surprised how quickly it fills up
with new staff. You ask where the marketing department sit, but youre told
theyre in a different office.
You see the CEO on the cover of Forbes, but youve never actually met him.
Your mum is already using the app, although its starting to look a bit dated
compared to some of the newer startups that are in TechCrunch.
Business Insider reports that the company has fired the new VP of Product and is
pursuing a new production direction. She had only arrived from Twitter 6 months
earlier. An internal memo from HR a couple of days says that the companys
doing some minor internal restructuring.
You see consultants in the meeting rooms, but you dont know what theyre
doing.
A month later, you gather for a televised all-hands meeting, broadcast from the
companys HQ. The CEO delivers a short speech announcing that the companys
been acquired by Oracle, explaining how it will accelerate the companys ability
to deliver on its vision. He thanks everyone for being part of the companys
incredible journey. People in the audience are crying.
HR follows up explaining that as part of the acquisition, some departments will
be downsized. Youre told that your stock options are underwater. When you
Google this, you find out that theyre worthless. Youve got some friends in
engineering who are being given Oracle stock as a retention package, but that
doesnt apply to anyone in sales. You wonder why you ever joined a startup in
the first place.