51
Software Engineering for Startups Ali Khajeh-Hosseini @AliKhajeh, @PlanForCloud Nov 2012, University of St Andrews

Software Engineering For Startups

Embed Size (px)

Citation preview

Page 1: Software Engineering For Startups

Software Engineering for Startups  

Ali Khajeh-Hosseini

@AliKhajeh, @PlanForCloud Nov 2012, University of St Andrews

Page 2: Software Engineering For Startups

Why am I here?

Show you how we do… software engineering

Page 3: Software Engineering For Startups

Jan 2009: Started PhD in St Andrews

Feb 2011: Interned in California for 7 months

Dec 2011: Hassan quit his job and joined

May 2010: PlanForCloud v.1 ready

May 2012: Mountain View for YC interview

Feb 2012: Launched PlanForCloud v.2

Page 4: Software Engineering For Startups
Page 5: Software Engineering For Startups

What the heck is… a cloud?

Page 6: Software Engineering For Startups

Server

Page 7: Software Engineering For Startups

Rack

Page 8: Software Engineering For Startups

Container

Page 9: Software Engineering For Startups

Electricity, Water, Internet

2500 Servers

Page 10: Software Engineering For Startups
Page 11: Software Engineering For Startups
Page 12: Software Engineering For Startups

Taken from one Dave Cliff ’s talk on Cloud Computing

Page 13: Software Engineering For Startups

a cloud

Page 14: Software Engineering For Startups

12 Staff 30 Megawatts = Perth (Scotland)! 140 Containers 38,500 m2 = 4 ftbl pitches

360,000 Servers 500,000,000 Dollars

h#p://www.microso/.com/Presspass/emea/presscentre/pressreleases/February2012/23-­‐02DublinDataCentre.mspx  

Page 15: Software Engineering For Startups

Infra

stru

cture-

as-a

-Servi

ce

Platfo

rm-a

s-a-Se

rvice

Softw

are-a

s-a-Se

rvice

Cloud Computing  

Page 16: Software Engineering For Startups

PlanForCloud helps users make decisions

RightScale helps users do it

Page 17: Software Engineering For Startups

How much would it cost to deploy my systems on Cloud X?

Would it be cheaper if I use deployment option X or Y?

What happens to my costs if: -  my system grows? -  cloud provider changes prices?

Page 18: Software Engineering For Startups

Software Engs Accountants

Users

IT managers Consultants

Page 19: Software Engineering For Startups

around 9,000 prices in PlanForCloud

Page 20: Software Engineering For Startups
Page 21: Software Engineering For Startups

$1.7M/year

Page 22: Software Engineering For Startups

PlanForCloud Engineering

In God we trust; all others must bring data. W. Edwards Deming

Page 23: Software Engineering For Startups

Engineering Roles Product Manager: what should we build?

Director of Development: how should we build it?

Architects: design it

Interaction designer: improve the user experience

Operations: deploy and monitor it

Support: help customers use it

Escalations: something just broke, who can fix it? Engineers: work with everyone to build and test it

Page 24: Software Engineering For Startups

In a startup, each person plays many roles

Product manager Marketing manager Support User Experience

Hiring Architect Operations Escalations

Engineer QA Operations R&D

Page 25: Software Engineering For Startups

Dev Process: Scrum

1 day planning 3 week sprints Go/No-Go Release Retro

3  weeks  

Page 26: Software Engineering For Startups

Design

Just a wiki page + Comments/emails

It’s all informal

No Word documents No UML diagrams

Page 27: Software Engineering For Startups

Planning

Story: As a user I want to export report as PDF So that I can share it with others

•  Refactor simulation engine to… •  Switch from Google charts to Highcharts •  Generate PDF in background queue •  … •  Write tests •  Code review

Engineers breakdown stories into tasks Granularity: less than a day to complete

Page 28: Software Engineering For Startups

Estimation Play planning poker

Page 29: Software Engineering For Startups

Sprint calculations

=================  Sprint  Summary  =================    Sprint  Begins:  10/2/2012  Sprint  Ends:  10/19/2012  Sprint  DuraJon:  14  days    Team:  John,  Joe,  Jeff,  Jack  Development:  VacaJon:  0  days  Total  Capacity:  300  hours  -­‐-­‐  grooming/management:  30  -­‐-­‐  release  issues:  10  -­‐-­‐  priority  bugs:  30  -­‐-­‐  tech  debt:  30  -­‐-­‐  backlog:  -­‐-­‐-­‐-­‐  must  have:  150  -­‐-­‐-­‐-­‐  nice  to  have:  50  

Start sprinting…

Page 30: Software Engineering For Startups

Daily standup Answer:

1.  What did you do yesterday? 2.  What are going to do today? 3.  Is anything blocking you?

Every day 9:30am sharp

Page 31: Software Engineering For Startups

Sprint metrics

Page 32: Software Engineering For Startups

Release prematurely & often

But you need protection: Good tests Exception handling Automate as much as you can

Page 33: Software Engineering For Startups

Good tests

Positive tests

Negative tests

Fast tests

Page 34: Software Engineering For Startups

Good test coverage

Page 35: Software Engineering For Startups

Continuous integration

Page 36: Software Engineering For Startups

Name and shame

Page 37: Software Engineering For Startups

Exception handling

1. On-call ops engineer 2. VP of engineering 3. CTO 4. CEO

Page 38: Software Engineering For Startups

Issue tracking

Page 39: Software Engineering For Startups

Automate, Automate, Automate

heroku pgbackups:capture --app planforcloud git push planforcloud master heroku run rake db:migrate --app planforcloud

Releasing new code:  

Page 40: Software Engineering For Startups

Performance monitoring

Page 41: Software Engineering For Startups

How is it being used? How can you improve it?

Let’s recap: You built it and shipped it

Page 42: Software Engineering For Startups

User metrics - Google analytics - Custom metrics from DB

Page 43: Software Engineering For Startups

User testing - Record user sessions - Ask for lots of feedback

Page 44: Software Engineering For Startups

User experience - Investigate user flow - Wireframing tools help

Page 45: Software Engineering For Startups

Why you should join a startup

•  Great learning environment •  Informal and fun •  Young people with lots of energy •  Take work seriously, but not themselves •  Move quickly: Just F*ing Do It (JFDI)

Page 46: Software Engineering For Startups

RightScale����������� ������������������  Employee����������� ������������������  Meetup����������� ������������������  

Page 47: Software Engineering For Startups

Sunny����������� ������������������  Santa����������� ������������������  Barbara����������� ������������������  

Page 48: Software Engineering For Startups

Unplanned����������� ������������������  release����������� ������������������  (4AM)����������� ������������������  

Page 49: Software Engineering For Startups

We����������� ������������������  like����������� ������������������  to����������� ������������������  eat!����������� ������������������  

Page 50: Software Engineering For Startups

Edinburgh����������� ������������������  startup����������� ������������������  party����������� ������������������  

Page 51: Software Engineering For Startups

RightScale����������� ������������������  2012����������� ������������������  

We’re hiring! www.PlanForCloud.com