SlideShare a Scribd company logo
Software Engineering in Startups

              @dusano
        TSstartup, 2012-10-23
mag. Dušan Omerčevid, UDI RI
       VP of Engineering @zemanta


@dusano
dusan.omercevic@zemanta.com
restreaming.wordpress.com
linkedin.com/in/dusanomercevic
github.com/dusano
skram.si
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)
Engineering in Startups
Build the right product
           vs.
build the product right?
Product Discovery
Google's Way




Source: 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
   Respect
Communication
 Commitment
    Focus
Yishan's 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 it
3. Promotion from within
4. Tools are top priority
5. Technical Leaders
PM 101
1.   Product Owner & Product Backlog
2.   Retrospectives
3.   Team & Scrum master
4.   Daily stand-up meeting & Demos

1. Iterations (Scrum & XP) or limited work-in-
   progress (Kanban)
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!
• Ideal: the new employee should be able to
  deploy on the first day!
• Prerequisite: Unittests & TDD
• Dark releases, Blue-green deployment, Canary
  releasing
Technology
VC warning!
    The core business of startups is
searching for a repeatable and scalable
 business model and not playing with
       (unreliable) technology!
Operation System




 There's only one!
Programming Languages
•   JavaScript
•   Java
•   PHP
•   Python
•   C/C++


http://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites
Measure Anything, Measure Everything




http://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
  applications, that are run upon deploy and
  then periodically
• Have error inducing functionality to test your
  error detection functionality
Storage & Data Processing
• PostgreSQL vs. MySQL
• MySQL vs. Cassandra
    – The Immutable state of MySQL
•   Hadoop/Hive
•   Splunk
•   Lucene/Solr
•   RabbitMQ
Storage Latencies
•   Memcached: <1 ms (mainly network latency)
•   Cassandra: ~1 ms
•   Oracle for simple queries: 1-5 ms
•   DynamoDB: ~5 ms
•   SimpleDB: >10 ms
Cloud Computing
AWS:                           Hetzner
EC2 Large instance (4 EC2      Quad-Core i7-2600, 16 GB
compute units/virtual cores,   RAM, 2 x 3 TB disk:
7.5 GB RAM memory, 850 GB      • 50 euro/month
storage)
• On-demand: 250
   euro/month
• Reserved: 600 euro + 35
   euro/month
• Spot: 15 euro/month
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
Growing Systems
Software Engineering in Startups
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)
Programming in Startups
•   Code is Liability
•   Supporting Throw Away Software
•   Don't be afraid of the if statement!
•   Develop mainly in master branch
•   Use feature toggles
Availability
• 99%     ~ 3 days
• 99.9% ~ 9 hours
• 99.99% ~ 1 hour
• 99.999% ~ 5 minutes
of downtime/year!

Optimize also for MTTR not just MTBF!
Unittests
• A Unittest should take at most 10ms to Run
• 1054 unittests covering Zemanta's code
• Create mock-ups! Don't do integration testing
  with unittests!
Principles of Software
               Documentation
1. 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!
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!

More Related Content

PPTX
Programming Motherfucker
PPTX
My talk at a workshop for the 2nd generation of TSstartup
PPTX
Keeping the JIRA team on track: Five techniques we use to boost both speed an...
PDF
Integrating Hardware (Waterfall) and Software (Agile) Development
PDF
Sprint Zero in Scrum
PDF
Microsoft + Agile (light)
PPTX
Scrum Basics
PDF
Introduction to Agile scrum
Programming Motherfucker
My talk at a workshop for the 2nd generation of TSstartup
Keeping the JIRA team on track: Five techniques we use to boost both speed an...
Integrating Hardware (Waterfall) and Software (Agile) Development
Sprint Zero in Scrum
Microsoft + Agile (light)
Scrum Basics
Introduction to Agile scrum

What's hot (20)

PPT
Itai Hochman - Continuous Deployment in Outbrain - AgileIL11
PDF
Work with Developers for Fun and Progress - AppSec California
PDF
Going the Next Step? Agile Values and Hardware Development by Urs Boehm
PDF
Building Cross-Functional Scrum-Teams in a Hardware Project
KEY
Learning Scrum through games
PDF
Agile Adoption Story in LGE (Aps2010)
PPTX
DevOps - Understanding Core Concepts (Old)
PPTX
What is Scrum?
PDF
Agile 101
PDF
Sprint Review and Planning Template
PPTX
Scrum model in game development
PDF
Embrace the change
PDF
How To Do Kick-Ass Software Development
PPTX
Adopting agile via continuous improvement with workshop
PPTX
Agile Mindset and Its Implications - My Understanding
PDF
How I learned to stop worrying and love to deploy
PDF
Modern Professional Scrum using Flow and Kanban - Agile and Beyond Detroit 2019
PPTX
Software Craftsmanship - It's an Imperative
PPTX
Code review
PDF
Scrum for Video Game Development
Itai Hochman - Continuous Deployment in Outbrain - AgileIL11
Work with Developers for Fun and Progress - AppSec California
Going the Next Step? Agile Values and Hardware Development by Urs Boehm
Building Cross-Functional Scrum-Teams in a Hardware Project
Learning Scrum through games
Agile Adoption Story in LGE (Aps2010)
DevOps - Understanding Core Concepts (Old)
What is Scrum?
Agile 101
Sprint Review and Planning Template
Scrum model in game development
Embrace the change
How To Do Kick-Ass Software Development
Adopting agile via continuous improvement with workshop
Agile Mindset and Its Implications - My Understanding
How I learned to stop worrying and love to deploy
Modern Professional Scrum using Flow and Kanban - Agile and Beyond Detroit 2019
Software Craftsmanship - It's an Imperative
Code review
Scrum for Video Game Development
Ad

Similar to Software Engineering in Startups (20)

PDF
Software Engineering For Startups
PDF
Lessons learned from building Demand Side Platform
ODP
Path Dependent Development (PyCon AU)
PDF
Software Engineering for Startups (University of St Andrews, 2013)
ODP
Path dependent-development (PyCon India)
PDF
How Heroku uses Heroku to build Heroku
PDF
Building Internet-scale Applications
PDF
From dev to ops and beyond - getting it done
PPTX
Developing apps faster
PPTX
OSSCube - Zend Webinar
PDF
Startup Engineering for Non-Technical Founders
PDF
The Lost Tales of Platform Design (February 2017)
KEY
One Developer Dev Shop
PPTX
Zend server presentation for osi days
PPTX
Cloud Economics for Java at Java2Days
PPTX
JavaOne 2016 "Java, Microservices, Cloud and Containers"
PPTX
Moving Fast At Scale
PPTX
The 6k startup - How to Launch a Startup on a Budget
PPT
What every developer can learn from startups
PPTX
Agile product development
Software Engineering For Startups
Lessons learned from building Demand Side Platform
Path Dependent Development (PyCon AU)
Software Engineering for Startups (University of St Andrews, 2013)
Path dependent-development (PyCon India)
How Heroku uses Heroku to build Heroku
Building Internet-scale Applications
From dev to ops and beyond - getting it done
Developing apps faster
OSSCube - Zend Webinar
Startup Engineering for Non-Technical Founders
The Lost Tales of Platform Design (February 2017)
One Developer Dev Shop
Zend server presentation for osi days
Cloud Economics for Java at Java2Days
JavaOne 2016 "Java, Microservices, Cloud and Containers"
Moving Fast At Scale
The 6k startup - How to Launch a Startup on a Budget
What every developer can learn from startups
Agile product development
Ad

Recently uploaded (20)

PDF
Encapsulation theory and applications.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
Big Data Technologies - Introduction.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Electronic commerce courselecture one. Pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
KodekX | Application Modernization Development
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Empathic Computing: Creating Shared Understanding
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Encapsulation theory and applications.pdf
Chapter 3 Spatial Domain Image Processing.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
20250228 LYD VKU AI Blended-Learning.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Review of recent advances in non-invasive hemoglobin estimation
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Big Data Technologies - Introduction.pptx
NewMind AI Weekly Chronicles - August'25 Week I
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Approach and Philosophy of On baking technology
Electronic commerce courselecture one. Pdf
Network Security Unit 5.pdf for BCA BBA.
KodekX | Application Modernization Development
Reach Out and Touch Someone: Haptics and Empathic Computing
Empathic Computing: Creating Shared Understanding
Mobile App Security Testing_ A Comprehensive Guide.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton

Software Engineering in Startups

  • 1. Software Engineering in Startups @dusano TSstartup, 2012-10-23
  • 2. mag. Dušan Omerčevid, UDI RI VP of Engineering @zemanta @dusano dusan.omercevic@zemanta.com restreaming.wordpress.com linkedin.com/in/dusanomercevic github.com/dusano skram.si
  • 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)
  • 5. Build the right product vs. build the product right?
  • 9. Great Companies build Great Products
  • 10. Courage Respect Communication Commitment Focus
  • 11. Yishan's 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 it 3. Promotion from within 4. Tools are top priority 5. Technical Leaders
  • 12. PM 101 1. Product Owner & Product Backlog 2. Retrospectives 3. Team & Scrum master 4. Daily stand-up meeting & Demos 1. 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
  • 20. VC warning! The core business of startups is searching for a repeatable and scalable business model and not playing with (unreliable) technology!
  • 22. Programming Languages • JavaScript • Java • PHP • Python • C/C++ http://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites
  • 23. Measure Anything, Measure Everything http://codeascraft.etsy.com/2011/02/15/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 Computing AWS: Hetzner EC2 Large instance (4 EC2 Quad-Core i7-2600, 16 GB compute units/virtual cores, RAM, 2 x 3 TB disk: 7.5 GB RAM memory, 850 GB • 50 euro/month storage) • 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
  • 31. 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)
  • 32. Programming in Startups • Code is Liability • Supporting Throw Away Software • Don't be afraid of the if statement! • Develop mainly in master branch • Use feature toggles
  • 33. Availability • 99% ~ 3 days • 99.9% ~ 9 hours • 99.99% ~ 1 hour • 99.999% ~ 5 minutes of downtime/year! Optimize also for MTTR not just MTBF!
  • 34. Unittests • A Unittest should take at most 10ms to Run • 1054 unittests covering Zemanta's code • Create mock-ups! Don't do integration testing with unittests!
  • 35. Principles of Software Documentation 1. 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!
  • 36. 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!