Why and How to do a
Software Startup
Carolina Innovations Seminar
January 7, 2015
Jeff Terrell, Ph.D.
@kyptin
Jeff Terrell
Founder and CTO,
Altometrics (2011)
Ph.D. Computer
Science, UNC (2009)
Overview
1. Why Software
(5 mins)
2. How to do a
software startup
(40 mins)
3. Questions
4. !
Why Software?
“Software is eating the world.”
–Marc Andreessen (2011)
“All of the technology required
to transform industries
through software finally
works and can be widely
delivered at global scale.”
Ubiquitous computers
Ubiquitous broadband
Cost of a basic Internet application
In 2000, $150k In 2015, $500 (if that)
Examples
41% of all new book
unit purchases
Largest video service by
number of subscribers (2011)
Music
28M paid
subscribers
39% of revenue ($5B)
from digital channels
“Disney—Disney!—had to buy
Pixar, a software company, to
remain relevant in animated
movies.”
“Photography…was
eaten by software
long ago.”
Self-driving cars
Military power (drones)
But why?
The market abhors
a vacuum
Software is fluid
“Software is eating the world.”
–Marc Andreessen (2011)
How to do a
software startup
Preamble:
It depends
Everything is vitally
important
…according to somebody
Meta-advice:
Be a good intestine
Overview
(in order of execution)
1. Types of software
businesses
2. Prerequisites
3. Legal aspects
4. Accounting
5. Programming
languages
6. Managing a
software project
7. Evaluating
technologies
8. Hiring tech people
9. Websites, hosting,
SEO
10. Infrastructure
11. Intellectual
Property
12. Security
13. Social media
1. Types of software
businesses
Consulting
(We'll build it for you.)
On-premise solution
(You host our servers.)
SDK or engine
(You code with it.)
Plugin
(If you're using <platform>,
you can use our add-on too.)
Standalone app
(You download and install it.)
App-store app
(e.g. apps on your phone)
Web app
(You login and use it online.)
2. Prerequisites
Mutual trust
Have a programmer!
(on the founding team)
Determine equity split
Set reasonable
expectations
(e.g. there will be a ramen phase)
3. Legal aspects
Vesting
(Or, protection for the
corporation)
Incorporation
Cookie-cutter route
Custom route: find a
(relevant) lawyer
4. Accounting
Use a payroll service
Justify business
expenses
Save receipts
Hire a CPA to do taxes
CPA service
(not generally available)
5. Programming
languages
Sometimes an early
consideration
(e.g. difficult to hire until
this is decided)
Go with what
you know
Else, use Clojure
Aside: why Clojure?
Immutable
data structures
Immutable
data structures
Immutable.
Data.
Structures.
“Mutable stateful
objects are the new
spaghetti code.”
–Rich Hickey,
inventor of Clojure
“[They are] hard to
understand, test,
and reason about.”
Immutability makes much
of the concurrency problem
go away.
Share freely between
threads.
Software
Transactional
Memory
Runs on the JVM
(Full access to Java
libraries)
6. Managing a
software project
Understand tradeoffs
Scope, cost, and speed: pick two.
All the features and cheap →
gonna take a while!
All the features and fast →
gonna cost a lot!
Cheap and fast →
only some features!
Prioritize features
From How to build great products
http://www.defmacro.org/2013/09/26/products.html
1. Game-changing features:
something new and useful
hard, but worth doing 1–3
2. Show-stopping features:
people won't buy it unless
it has these
do the bare minimum
3. Distractions
show no mercy
Communicate:
clearly,
precisely, and
in writing
Specify “what”
not “how”
Be open to
alternative solutions
(separate essential from
incidental features)
Make predictions,
then evaluate them
after completion
The tar pit:
complexity breeds complexity
Simplicity
Simplicity is hard
and takes time
Towards simplicity
1. Beware verbose language
and “boilerplate”
2. Beware ill-fitting
databases
Or, “Representation is the
essence of programming.”
–Frederick P. Brooks, Jr.
Towards simplicity
Towards simplicity
3. Don't be afraid
to start over
Towards simplicity
4. Do be afraid of
pushing devs too hard
Towards simplicity
5. Decent proxy for
simplicity: lines of code
When should I
outsource projects?
● It's outside your team's expertise,
● You can clearly describe what you
want and what success looks like,
● It uses non-proprietary languages
and technologies, and
● You have the money to pay for it.
7. Evaluating
technologies
Don't be afraid to dive in
(even for huge topics)
Sometimes the shortest
path is the long one
(Or, books and manuals are good)
Find an expert, and
ask them:
● What solutions exist?
● What would you recommend? Why?
● Why wouldn't somebody do that?
● What alternatives exist?
● Why is this the best choice?
● Push until you're satisfied
8. Hiring tech people
Be slow to hire
(firing is no fun)
Avoid arguers
from authority
Your employees should not
say, “Because I said so.”
Hire “smart and
gets things done”
From The Guerrilla Guide to Interviewing
by Joel Spolsky
http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html
(See also: http://qz.com/258066/this-is-why-you-dont-hire-good-developers/ )
Smart and gets things done
Smart isn't enough.
“Knowledge is for wisdom,
and wisdom is for living.”
Smart and gets things done
“Gets things done” isn't
enough.
Smart and gets things done
smart ≠ knowledgeable
smart = able to explain
things to non-technical
people
Understand developer
motivations:
autonomy
mastery
purpose
Test candidates
Have an IP rights
assignment
Have a vesting
schedule
9. Websites, hosting,
SEO
Find a content
management system
Find a good theme
Focus on content
A good website will be
one on a phone, too.
I like
StrikinglyWordpress
Example
Strikingly site
(time: 1 day)
(Sales pitch: check
out visclay.com!)
10. Infrastructure
Why infrastructure?
Because a static
website isn't enough.
Cloud computing
It's here to stay.
11. Intellectual
Property
Not every startup
should get a patent
Why not to get a patent
1. You aren't doing
anything that novel
Why not to get a patent
2. You don't want to
publicly disclose your idea
Why not to get a patent
3. They're expensive to get
($10–30k)
Why not to get a patent
4. They're expensive to
defend (at least $1–2M)
Why not to get a patent
4. They take a long time to
get (1–3 years)
Patent upsides
Why to get a patent
0. You want to get royalties
(good luck!)
Why to get a patent
1. You want to grow large
Why to get a patent
2. You want to get acquired
Why to get a patent
Large companies use
patents Cold-War-style:
Mutually Assured
Destruction
Why to get a patent
Large companies use
patents to enable
collaboration
Why to get a patent
3. You can afford
10–20 patents
Patent strategy
Patent strategy
1. Know the basic
requirements: statutes,
novelty, usefulness,
nonobviousness
Patent strategy
2. Know what counts as a
disclosure (starts a 1-year
clock ticking)
Patent strategy
3. Understand provisional
patents
Patent strategy
4. Consider how you can
discover and prove
violations
Patent strategy
5. Consider your patent
from an adversary's
perspective. If possible,
patent the chokepoint.
Patent strategy
6. If you're UNC-affiliated,
talk to the Office of
Technology Development
Early stage advice
Early stage advice
1. Be aware of what you
could patent
Early stage advice
2. Be aware of whether you
have to disclose your idea
Early stage advice
3. Focus on execution first
Early stage advice
4. Consider a provisional
patent
12. Security
Detectify:
Go hack yourself
Always use a firewall
Use key-based
authentication (and
keep your keys safe)
Keep systems
up to date
Keep passwords and
keys out of source
code
13. Social media
Product comes first
(although building a
following takes time)
Frequent updates
lend credibility
Beware the time-suck
Queue up posts for
later
Nothing beats good,
original content
Questions?
Thanks for coming!
Follow me on Twitter @kyptin
http://altometrics.com
http://visclay.com

Why and How to do a Software Startup