• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Software Engineering in Startups
 

Software Engineering in Startups

on

  • 1,523 views

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.

Statistics

Views

Total Views
1,523
Views on SlideShare
472
Embed Views
1,051

Actions

Likes
0
Downloads
7
Comments
0

8 Embeds 1,051

http://restreaming.wordpress.com 457
http://www.tsstartup.si 441
http://tsstartup.si 130
http://m.tsstartup.si 19
http://translate.googleusercontent.com 1
http://www.restreaming.me 1
http://www.tsstartup.si. 1
http://tss.dev.zabec.net 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Software Engineering in Startups Software Engineering in Startups Presentation Transcript

    • 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.comlinkedin.com/in/dusanomercevicgithub.com/dusanoskram.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
    • 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 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
    • PM 1011. Product Owner & Product Backlog2. Retrospectives3. Team & Scrum master4. Daily stand-up meeting & Demos1. 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 issearching for a repeatable and scalable business model and not playing with (unreliable) technology!
    • Operation System Theres 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 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 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 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
    • 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
    • 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• Dont 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 minutesof downtime/year!Optimize also for MTTR not just MTBF!
    • Unittests• A Unittest should take at most 10ms to Run• 1054 unittests covering Zemantas code• Create mock-ups! Dont do integration testing with unittests!
    • 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!
    • 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!