Your SlideShare is downloading. ×
  • Like
Software Engineering in Startups
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Software Engineering in Startups


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

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On SlideShare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Software Engineering in Startups @dusano TSstartup, 2012-10-23
  • 2. mag. Dušan Omerčevid, UDI RI VP of Engineering
  • 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. Engineering in Startups
  • 5. Build the right product the product right?
  • 6. Product Discovery
  • 7. Googles WaySource:
  • 8. Source:
  • 9. Great Companies build Great Products
  • 10. Courage RespectCommunication Commitment Focus
  • 11. Yishans Way Yishan Wong, CEO of Reddit, Director of Engineering at Facebook, Senior Engineering Manager at PayPal( 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. 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. Tools
  • 14. Collaboration Tools• In person meetings & Whiteboard
  • 15. Collaboration Tools #2• Trello• Google Apps
  • 16. Collaboration Tools #3• IRC• Blog!
  • 17. Collaboration Tools #4• Code style guidelines• Git• Code reviews – see Code reviews at Khan for guidelines
  • 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. Technology
  • 20. VC warning! The core business of startups issearching for a repeatable and scalable business model and not playing with (unreliable) technology!
  • 21. Operation System Theres only one!
  • 22. Programming Languages• JavaScript• Java• PHP• Python• C/C++
  • 23. Measure Anything, Measure Everything
  • 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. Storage & Data Processing• PostgreSQL vs. MySQL• MySQL vs. Cassandra – The Immutable state of MySQL• Hadoop/Hive• Splunk• Lucene/Solr• RabbitMQ
  • 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. 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. 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. Growing Systems
  • 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. 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. 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. 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. 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. 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!