Software Engineering For Startups

979 views

Published on

A guest lecture given at the University of St Andrews on how PlanForCloud does software engineering.

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
979
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
14
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Software Engineering For Startups

  1. 1. Software Engineering for Startups   Ali Khajeh-Hosseini @AliKhajeh, @PlanForCloud Nov 2012, University of St Andrews
  2. 2. Why am I here?Show you how we do… software engineering
  3. 3. Jan 2009: Started PhD in St Andrews May 2010: PlanForCloud v.1 ready Feb 2011: Interned in California for 7 months Dec 2011: Hassan quit his job and joined Feb 2012: Launched PlanForCloud v.2 May 2012: Mountain View for YC interview
  4. 4. What the heck is… a cloud?
  5. 5. Server
  6. 6. Rack
  7. 7. Container
  8. 8. 2500 ServersElectricity, Water, Internet
  9. 9. Taken from one Dave Cliff ’s talk on Cloud Computing
  10. 10. a cloud
  11. 11. 12 Staff 30 Megawatts = Perth (Scotland)! 140 Containers 38,500 m2 = 4 ftbl pitches 360,000 Servers 500,000,000 Dollarsh#p://www.microso/.com/Presspass/emea/presscentre/pressreleases/February2012/23-­‐02DublinDataCentre.mspx  
  12. 12. Cloud Computing   Infrastructure-as-a-Service Platform-as-a-Service Software-as-a-Service
  13. 13. PlanForCloud helps users make decisions RightScale helps users do it
  14. 14. 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?
  15. 15. IT managers Software Engs Consultants AccountantsUsers
  16. 16. around 9,000 prices in PlanForCloud
  17. 17. $1.7M/year
  18. 18. PlanForCloud EngineeringIn God we trust;all others must bring data.W. Edwards Deming
  19. 19. Engineering RolesProduct Manager: what should we build?Director of Development: how should we build it?Architects: design itInteraction designer: improve the user experienceOperations: deploy and monitor itSupport: help customers use itEscalations: something just broke, who can fix it? Engineers: work with everyone to build and test it
  20. 20. In a startup, each person plays many roles Hiring Product manager Engineer Architect Marketing manager QA Operations Support Operations Escalations User Experience R&D
  21. 21. Dev Process: Scrum1 day planning3 week sprints 3  weeks  Go/No-GoReleaseRetro
  22. 22. Design It’s all informalJust a wiki page + Comments/emails No Word documents No UML diagrams
  23. 23. PlanningEngineers breakdown stories into tasksGranularity: less than a day to complete 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
  24. 24. EstimationPlay planning poker
  25. 25. 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  Start sprinting… -­‐-­‐  priority  bugs:  30   -­‐-­‐  tech  debt:  30   -­‐-­‐  backlog:   -­‐-­‐-­‐-­‐  must  have:  150   -­‐-­‐-­‐-­‐  nice  to  have:  50  
  26. 26. Daily standupAnswer: 1.  What did you do yesterday? 2.  What are going to do today? 3.  Is anything blocking you? Every day 9:30am sharp
  27. 27. Sprint metrics
  28. 28. Release prematurely & oftenBut you need protection:Good testsException handlingAutomate as much as you can
  29. 29. Good tests Positive tests Negative tests Fast tests
  30. 30. Good test coverage
  31. 31. Continuous integration
  32. 32. Name and shame
  33. 33. Exception handling 1. On-call ops engineer 2. VP of engineering 3. CTO 4. CEO
  34. 34. Issue tracking
  35. 35. Automate, Automate, Automate Releasing new code:   heroku pgbackups:capture --app planforcloud git push planforcloud master heroku run rake db:migrate --app planforcloud
  36. 36. Performance monitoring
  37. 37. Let’s recap:You built it and shipped it How is it being used?How can you improve it?
  38. 38. User metrics- Google analytics- Custom metrics from DB
  39. 39. User testing- Record user sessions- Ask for lots of feedback
  40. 40. User experience- Investigate user flow- Wireframing tools help
  41. 41. 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)
  42. 42. RightScale
  43. 43.  Employee
  44. 44.  Meetup
  45. 45.  
  46. 46. Sunny
  47. 47.  Santa
  48. 48.  Barbara
  49. 49.  
  50. 50. Unplanned
  51. 51.  release
  52. 52.  (4AM)
  53. 53.  
  54. 54. We
  55. 55.  like
  56. 56.  to
  57. 57.  eat!
  58. 58.  
  59. 59. Edinburgh
  60. 60.  startup
  61. 61.  party
  62. 62.  
  63. 63. RightScale
  64. 64.  2012
  65. 65.  We’re hiring! www.PlanForCloud.com

×