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

Software Engineering for Startups (University of St Andrews, 2013)

Embed Size (px)

Citation preview

Page 1: Software Engineering for Startups (University of St Andrews, 2013)

Software Engineering for Startups  

Ali Khajeh-Hosseini

@AliKhajeh Nov 2013, University of St Andrews

®

®

Page 2: Software Engineering for Startups (University of St Andrews, 2013)

I’m here to talk about

RightScale Cloud Analytics… and how we develop it

Page 3: Software Engineering for Startups (University of St Andrews, 2013)

Jan 2009: Started PhD in St Andrews

Dec ‘11: Hassan quit his job and joined

May ‘10: PlanForCloud v.1 ready

May ‘12: Mountain View for YC interview

Feb ‘12: Launched PlanForCloud (v.2)

5min demo video filmed in my flat with poor lighting and a £10 poster

Page 4: Software Engineering for Startups (University of St Andrews, 2013)

Jul ‘12: Acquired by RightScale

Nov ‘13: Launched Cloud Analytics (v.3)

Page 5: Software Engineering for Startups (University of St Andrews, 2013)

What the heck is… a cloud?

Page 6: Software Engineering for Startups (University of St Andrews, 2013)

Server

Page 7: Software Engineering for Startups (University of St Andrews, 2013)

Rack

Page 8: Software Engineering for Startups (University of St Andrews, 2013)

Container

Page 9: Software Engineering for Startups (University of St Andrews, 2013)

Electricity, Water, Internet

2500 Servers

Page 10: Software Engineering for Startups (University of St Andrews, 2013)
Page 11: Software Engineering for Startups (University of St Andrews, 2013)
Page 12: Software Engineering for Startups (University of St Andrews, 2013)

Taken from one of Dave Cliff ’s talk on Cloud Computing

Page 13: Software Engineering for Startups (University of St Andrews, 2013)

a cloud

Page 14: Software Engineering for Startups (University of St Andrews, 2013)

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 (University of St Andrews, 2013)

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 (University of St Andrews, 2013)

Cloud Analytics helps users make decisions

Cloud Management helps users take actions

Page 17: Software Engineering for Startups (University of St Andrews, 2013)

Cloud spending is growing rapidly

Cloud pricing is complicated… we scrape over 12,000 prices.

Need to visualize, forecast and optimize cloud spend

The challenge

h#p://www.gartner.com/newsroom/id/2352816  

Page 18: Software Engineering for Startups (University of St Andrews, 2013)

Who buys our products?

Big-ass enterprises… like Sony, Samsung, EA Games,

Pearson Publishing, PBS, Zynga…

Page 19: Software Engineering for Startups (University of St Andrews, 2013)

1. Connect to a cloud

2. We regularly collect data

Page 20: Software Engineering for Startups (University of St Andrews, 2013)

3. Slice and dice the data

Page 21: Software Engineering for Startups (University of St Andrews, 2013)

4. See historic trends

Page 22: Software Engineering for Startups (University of St Andrews, 2013)

5. Forecast future costs based on patterns

Page 23: Software Engineering for Startups (University of St Andrews, 2013)

RightScale Engineering

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

Page 24: Software Engineering for Startups (University of St Andrews, 2013)

Engineering Roles Product Manager: what should we build?

Engineering Manager: how should we build it?

Architects: design it

Interface designer: improve the user experience

Operations: deploy and monitor it

Escalations: something just broke, who can fix it?

Support/Docs: help customers use it

Engineers: work with everyone to build and test it

Page 25: Software Engineering for Startups (University of St Andrews, 2013)

Dev Process: Scrum

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

2  weeks  

Page 26: Software Engineering for Startups (University of St Andrews, 2013)

Design

Just a wiki page + Comments/emails

It’s all informal

No Word documents No UML diagrams

Page 27: Software Engineering for Startups (University of St Andrews, 2013)

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 (University of St Andrews, 2013)

Estimation Play planning poker

Page 29: Software Engineering for Startups (University of St Andrews, 2013)

Sprint calculations

=================  Sprint  Summary  =================    Sprint  Begins:  10/2/2012  Sprint  Ends:  10/19/2012  Sprint  DuraMon:  14  days    Team:  John,  Joe,  Jeff,  Jack  Development:  VacaMon:  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 (University of St Andrews, 2013)

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 (University of St Andrews, 2013)

Sprint metrics

Page 32: Software Engineering for Startups (University of St Andrews, 2013)

We like to release every week

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

Page 33: Software Engineering for Startups (University of St Andrews, 2013)

Code reviews

Page 34: Software Engineering for Startups (University of St Andrews, 2013)

Good tests

Positive tests

Negative tests

Fast tests

Page 35: Software Engineering for Startups (University of St Andrews, 2013)

Good test coverage

Page 36: Software Engineering for Startups (University of St Andrews, 2013)

Continuous integration

Page 37: Software Engineering for Startups (University of St Andrews, 2013)

Name and shame

Page 38: Software Engineering for Startups (University of St Andrews, 2013)

Exception handling

1. On-call ops eng. 2. Eng. manager 3. CTO 4. CEO

Page 39: Software Engineering for Startups (University of St Andrews, 2013)

Issue tracking

Page 40: Software Engineering for Startups (University of St Andrews, 2013)

Automate, Automate, Automate

Page 41: Software Engineering for Startups (University of St Andrews, 2013)

Performance monitoring

Page 42: Software Engineering for Startups (University of St Andrews, 2013)

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

Let’s recap: You built it and shipped it.

Page 43: Software Engineering for Startups (University of St Andrews, 2013)

User metrics - Google analytics - Custom metrics from DB

Page 44: Software Engineering for Startups (University of St Andrews, 2013)

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

Page 45: Software Engineering for Startups (University of St Andrews, 2013)

User experience - Simplify user flow - Wireframes helps communicate ideas - Prototype and iterate

Page 46: Software Engineering for Startups (University of St Andrews, 2013)

Working in startups

Page 47: Software Engineering for Startups (University of St Andrews, 2013)

Startups����������� ������������������  are����������� ������������������  fun����������� ������������������  

Page 48: Software Engineering for Startups (University of St Andrews, 2013)

Startups����������� ������������������  are����������� ������������������  based����������� ������������������  in����������� ������������������  awesome����������� ������������������  places����������� ������������������  

Page 49: Software Engineering for Startups (University of St Andrews, 2013)

- Design a new reporting section of the product; designers own the frontend code and we don’t use any frameworks like Bootstrap.

- Update our AngularJS-based frontend to let users design their own custom dashboards.

- Optimize our DataStore API to respond to within 5 seconds (Ruby, NewSQL backend).

- Decipher AWS’ billing algorithms to make our cost estimation engine more accurate.

- Develop a testing framework to verify data that’s gathered from major public and private clouds worldwide including AWS, Google Compute Engine, Microsoft Azure, Rackspace, and OpenStack.

- Develop tools to start/stop our staging environment on AWS within a few minutes, find a replacement for Jenkins, and change our weekly releases to daily releases.

Startups����������� ������������������  provide����������� ������������������  challenges����������� ������������������  

Page 50: Software Engineering for Startups (University of St Andrews, 2013)

Startups����������� ������������������  love����������� ������������������  good����������� ������������������  food����������� ������������������  (lunch����������� ������������������  &����������� ������������������  learn)����������� ������������������  

Page 51: Software Engineering for Startups (University of St Andrews, 2013)

Do you have an Internship/job for me? PlanForCloud.com/jobs