Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Preface
What will you find in this book?
Part I: Products
Part II: Technologies
Part III: Teams
Key ideas
Startups are about people
Great companies are the result of evolution
Speed wins
This book covers a lot of ground
Who should read this book?
Conventions used in this book
Safari® Books Online
How to contact us
Acknowledgments
Interviews
I. Products
1. Why Startups
The age of the tech startup
What is a tech startup?
Why you should work at a startup
More opportunity
More ownership
More fun
Why you shouldn’t work at a startup
It’s not glamorous
It’s a sacrifice
You probably won’t get rich
Joining versus founding a startup
Recap
2. Startup Ideas
Where ideas come from
Knowledge
Experts
Generalists
Generating ideas
Environment for creativity
Give yourself plenty of time
Keep an idea journal
Work on the problem
Get away from work
Add constraints
Look for pain points
Talk to others
Stealth mode
Idea versus execution
Validation
Speed Wins
Customer development
Validate the problem
Market sizing
Talking to real customers
Feasibility
Recap
3. Product Design
Design
Design is iterative
User-centered design
User stories
Personas
Emotional design
Simplicity
Usability testing
Visual Design
Copywriting
Design reuse
Layout
Typography
Contrast and repetition
Colors
A quick review of visual design
The MVP
Types of MVPs
Focus on the differentiators
Buy the MVP
Do things that don’t scale
Recap
4. Data and Distribution
Data
What metrics to track
Acquisition
Activation
Retention
Referral
Revenue
The magic number
Data-driven development
Incorporating data into the product development process
Data-driven development through controlled experiments
Data-driven development strengths and weaknesses
Distribution
Word of mouth
Build a better product
Provide great customer service
Build viral loops into your product
Marketing
Advertising
PR and media
Email
SEO
Social media
Inbound marketing
Sales
Branding
Recap
II. Technologies
5. Choosing a Tech Stack
Thinking about tech stacks
Evolving the tech stack
Build in-house, buy commercial, or use open source?
Build in-house
Buy a commercial product
Use open source
Technologies you should never build yourself
Build in-house, buy commercial, or use open source summary?
Choosing a programming language
Programming paradigms
Object-oriented programming
Functional programming
Static typing
Automatic memory management
Problem fit
Performance
Productivity
Final thoughts on choosing a programming language
Choosing a server-side framework
Problem fit
Data Layer
View layer
Built-in view helpers
Server-side versus client-side
Logic versus logic-less templates
Testing
Scalability
I/O bound
CPU/memory bound
Deployment
Security
Authentication
CSRF attacks
Code injection attacks
Advisories
Final thoughts on choosing a server-side framework
Choosing a database
Relational Databases
NoSQL databases
Key-value stores
Document stores
Column-oriented databases
Graph databases
Reading data
Writing data
Schemas
Scalability
Replication
Partitioning
Failure modes
Maturity
Final thoughts on choosing a database
Recap
6. Clean Code
Code is for people
Code layout
Naming
Answer all the big questions
Be precise
Be thorough
Reveal intent
Follow conventions
Naming is hard
Error handling
Don’t Repeat Yourself (DRY)
Single Responsibility Principle (SRP)
Functional programming
Immutable data
Higher-order functions
Pure functions
Loose coupling
Internal implementation dependencies
System dependencies
Library dependencies
Global variables
High cohesion
Comments
Refactoring
Recap
7. Scalability
Scaling a startup
Scaling coding practices
Automated Tests
A primer on automated testing
Types of automated tests
Test doubles
Test-driven development (TDD)
What should you test?
Automated testing best practices
Split up the code
Interfaces and modules
Versioned artifacts
Services
Code reviews
Design reviews
Pair programming
Pre-commit reviews
Static analysis
Code review best practices
Documentation
Written documentation
Code documentation
Community documentation
Readme-driven development (RDD)
Scaling performance
Measure
Optimize
Recap
8. Software Delivery
Done means delivered
Manual delivery: a horror story
Build
Version control
Write good commit messages
Commit early and often
Build tool
Continuous Integration
Trunk-based development
Branch by abstraction
Feature toggles
Deployment
Hosting
Configuration Management
Application configuration
Virtual machines
Containers
Orchestration tools
Deployment automation
Continuous Delivery
Rollback
Backward compatibility
Monitoring
Logging
Log names
Log levels
Log formatting
Log aggregation
Metrics
Availability level
Business level
Application level
Process level
Code level
Server level
Alerting
Recap
III. Teams
9. Startup Culture
Actions, not words
Core Ideology
Mission
Concise
Clear
Timeless
Inspiring
Core Values
Organizational design
Management-driven hierarchy
Distributed organization
Hiring and promotions
The Peter Principle
Management as a promotion
Motivation
Autonomy
Mastery
Purpose
The office
A place where you can work with others
A place where you can do focused work alone
A place where you can get away from work
A way to customize the office for your personal needs
Remote work
Benefits
Drawbacks
Best practices
Communication
Internal communication
External communication
Process
Use good judgment
Software methodologies
Recap
10. Getting a Job at a Startup
Finding a startup job
Use your network
Grow your network
Meetup groups and conferences
Hackathons and competitions
Talks, blog posts, open source
Build an online identity
Online job search
Nailing the interview
Coding on a whiteboard
Thinking out loud
Know thyself
Know the company
Short, repetitive CS 101 problems
How to evaluate and negotiate a job offer
Salary
Equity
What is stock?
How do employees get stock?
What is vesting?
What are stock options?
How do you sell your stock?
How is stock taxed?
Short-term versus long-term capital gains
Gotchas with exercising stock options
Do your research
How much are my stock options worth?
Salary versus equity
Benefits
Negotiating
Should I tell them my salary?
What if they promise a raise later on?
What can you negotiate for?
How to negotiate
Competing offers
Recap
11. Hiring for Your Startup
Startups are about people
Who to hire
Co-founders
Early hires
Later hires
10x developers
What to look for
Smart/gets things done
Culture fit
Good communication skills
I would be OK reporting to them
Finding great candidates
Referrals
Employer branding
Searching online
Recruiters
Premature optimization
Typos
Poor targeting
College degrees
Avoiding premature optimization
The interview
The interview process
Step 1: Connect
Step 2: Phone screens
Step 3: On-site interview
Interview questions
Ask the candidate to teach you something
Give the candidate a chance to learn something
Have the candidate demonstrate their technical skills
Making an offer
What should you offer?
The opportunity
Compensation
Benefits
Follow-up and negotiation
Recap
12. Learning
Principles of learning
Choose your skills wisely
Dedicate time to learning
Make learning part of your job
Learning techniques
Study
Build
Share
Why you should share
What you should and shouldn’t share
Lessons learned
Recap
A. Recommended Reading and References
Recommended reading
Reference list
Index
← Prev
Back
Next →
← Prev
Back
Next →