0
Software Engineering in Startups              @dusano        TSstartup, 2012-10-23
mag. Dušan Omerčevid, UDI RI       VP of Engineering @zemanta@dusanodusan.omercevic@zemanta.comrestreaming.wordpress.comli...
Outline•   15:10 – 16:00   Engineering in Startups•   16:10 – 17:00   Tools•   17:10 – 18:00   Technology•   18:10 – 19:00...
Engineering in Startups
Build the right product           vs.build the product right?
Product Discovery
Googles WaySource: http://www.quietaction.com/blog/inspired-d3-talk-tom-chi.html
Source: http://bradfrostweb.com/blog/web/for-a-future-friendly-web/
Great Companies build   Great Products
Courage   RespectCommunication Commitment    Focus
Yishans Way     Yishan Wong, CEO of Reddit, Director of Engineering at        Facebook, Senior Engineering Manager at PayP...
PM 1011.   Product Owner & Product Backlog2.   Retrospectives3.   Team & Scrum master4.   Daily stand-up meeting & Demos1....
Tools
Collaboration Tools• In person meetings & Whiteboard
Collaboration Tools #2• Trello• Google Apps
Collaboration Tools #3• IRC• Blog!
Collaboration Tools #4• Code style guidelines• Git• Code reviews  – see Code reviews at Khan for guidelines
Continuous Deployment• Make Deployment a non-event• If something is painfull, do it more often until  the pain goes away!•...
Technology
VC warning!    The core business of startups issearching for a repeatable and scalable business model and not playing with...
Operation System Theres only one!
Programming Languages•   JavaScript•   Java•   PHP•   Python•   C/C++http://en.wikipedia.org/wiki/Programming_languages_us...
Measure Anything, Measure Everythinghttp://codeascraft.etsy.com/2011/02/15/measure-anything-measure-everything/
Measuring as Testing• Unittests are only run upon deploy, not  periodically• You should have HealthChecks for all your  ap...
Storage & Data Processing• PostgreSQL vs. MySQL• MySQL vs. Cassandra    – The Immutable state of MySQL•   Hadoop/Hive•   S...
Storage Latencies•   Memcached: <1 ms (mainly network latency)•   Cassandra: ~1 ms•   Oracle for simple queries: 1-5 ms•  ...
Cloud ComputingAWS:                           HetznerEC2 Large instance (4 EC2      Quad-Core i7-2600, 16 GBcompute units/...
Amazon Web Services•   Cloudfront ($0.12 / GB / month)•   Elastic MapReduce•   DynamoDB•   S3 ($0.12 / GB / month)•   Glac...
Growing Systems
Estimates in Software               Development•   1 minute -> 2 hours (120x)•   1 hour -> 2 days (48x)•   1 day -> 2 week...
Programming in Startups•   Code is Liability•   Supporting Throw Away Software•   Dont be afraid of the if statement!•   D...
Availability• 99%     ~ 3 days• 99.9% ~ 9 hours• 99.99% ~ 1 hour• 99.999% ~ 5 minutesof downtime/year!Optimize also for MT...
Unittests• A Unittest should take at most 10ms to Run• 1054 unittests covering Zemantas code• Create mock-ups! Dont do int...
Principles of Software               Documentation1. Source code and running services are the ultimate   documentation!2. ...
Take Home Message• The core business of startups is searching for a  repeatable and scalable business model, not  technolo...
Software Engineering in Startups
Upcoming SlideShare
Loading in...5
×

Software Engineering in Startups

1,549

Published on

Slides from a workshop on Software Engineering in Startups that Dušan Omerčević gave for the first generation of TSstartups in October 2012.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,549
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
15
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Software Engineering in Startups"

  1. 1. Software Engineering in Startups @dusano TSstartup, 2012-10-23
  2. 2. mag. Dušan Omerčevid, UDI RI VP of Engineering @zemanta@dusanodusan.omercevic@zemanta.comrestreaming.wordpress.comlinkedin.com/in/dusanomercevicgithub.com/dusanoskram.si
  3. 3. Outline• 15:10 – 16:00 Engineering in Startups• 16:10 – 17:00 Tools• 17:10 – 18:00 Technology• 18:10 – 19:00 Growing Systems• 19:00 - Beer(hunt)
  4. 4. Engineering in Startups
  5. 5. Build the right product vs.build the product right?
  6. 6. Product Discovery
  7. 7. Googles WaySource: http://www.quietaction.com/blog/inspired-d3-talk-tom-chi.html
  8. 8. Source: http://bradfrostweb.com/blog/web/for-a-future-friendly-web/
  9. 9. Great Companies build Great Products
  10. 10. Courage RespectCommunication Commitment Focus
  11. 11. Yishans Way Yishan Wong, CEO of Reddit, Director of Engineering at Facebook, Senior Engineering Manager at PayPal(http://algeri-wong.com/yishan/engineering-management.html)1. Make hiring your number one priority, always!2. Let process be implemented by those who practice it3. Promotion from within4. Tools are top priority5. Technical Leaders
  12. 12. PM 1011. Product Owner & Product Backlog2. Retrospectives3. Team & Scrum master4. Daily stand-up meeting & Demos1. Iterations (Scrum & XP) or limited work-in- progress (Kanban)
  13. 13. Tools
  14. 14. Collaboration Tools• In person meetings & Whiteboard
  15. 15. Collaboration Tools #2• Trello• Google Apps
  16. 16. Collaboration Tools #3• IRC• Blog!
  17. 17. Collaboration Tools #4• Code style guidelines• Git• Code reviews – see Code reviews at Khan for guidelines
  18. 18. Continuous Deployment• Make Deployment a non-event• If something is painfull, do it more often until the pain goes away!• Ideal: the new employee should be able to deploy on the first day!• Prerequisite: Unittests & TDD• Dark releases, Blue-green deployment, Canary releasing
  19. 19. Technology
  20. 20. VC warning! The core business of startups issearching for a repeatable and scalable business model and not playing with (unreliable) technology!
  21. 21. Operation System Theres only one!
  22. 22. Programming Languages• JavaScript• Java• PHP• Python• C/C++http://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites
  23. 23. Measure Anything, Measure Everythinghttp://codeascraft.etsy.com/2011/02/15/measure-anything-measure-everything/
  24. 24. Measuring as Testing• Unittests are only run upon deploy, not periodically• You should have HealthChecks for all your applications, that are run upon deploy and then periodically• Have error inducing functionality to test your error detection functionality
  25. 25. Storage & Data Processing• PostgreSQL vs. MySQL• MySQL vs. Cassandra – The Immutable state of MySQL• Hadoop/Hive• Splunk• Lucene/Solr• RabbitMQ
  26. 26. Storage Latencies• Memcached: <1 ms (mainly network latency)• Cassandra: ~1 ms• Oracle for simple queries: 1-5 ms• DynamoDB: ~5 ms• SimpleDB: >10 ms
  27. 27. Cloud ComputingAWS: HetznerEC2 Large instance (4 EC2 Quad-Core i7-2600, 16 GBcompute units/virtual cores, RAM, 2 x 3 TB disk:7.5 GB RAM memory, 850 GB • 50 euro/monthstorage)• On-demand: 250 euro/month• Reserved: 600 euro + 35 euro/month• Spot: 15 euro/month
  28. 28. Amazon Web Services• Cloudfront ($0.12 / GB / month)• Elastic MapReduce• DynamoDB• S3 ($0.12 / GB / month)• Glacier ($0.01 / GB / month)• Mechanical Turk• Alexa Web Information Service
  29. 29. Growing Systems
  30. 30. Estimates in Software Development• 1 minute -> 2 hours (120x)• 1 hour -> 2 days (48x)• 1 day -> 2 weeks (14x)• 1 week -> 2 months (8x)• 1 month -> 2 years (24x)• 1 year -> forever (infinity)
  31. 31. Programming in Startups• Code is Liability• Supporting Throw Away Software• Dont be afraid of the if statement!• Develop mainly in master branch• Use feature toggles
  32. 32. Availability• 99% ~ 3 days• 99.9% ~ 9 hours• 99.99% ~ 1 hour• 99.999% ~ 5 minutesof downtime/year!Optimize also for MTTR not just MTBF!
  33. 33. Unittests• A Unittest should take at most 10ms to Run• 1054 unittests covering Zemantas code• Create mock-ups! Dont do integration testing with unittests!
  34. 34. Principles of Software Documentation1. Source code and running services are the ultimate documentation!2. No documentation is much much better than misleading/outdated documentation!3. Out of sight, out of mind! Documentation should be close to the source code and the running services!4. Document only what’s absolutely necessary (data structures, development environment setup, release and deployment procedures)5. Documentation should be part of company culture and engineering pride!
  35. 35. Take Home Message• The core business of startups is searching for a repeatable and scalable business model, not technology!• Measure Anything, Measure Everything• Do Code Reviews!• Be stupid!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×