SlideShare a Scribd company logo
1 of 32
Download to read offline
8. Software Engineering
Learnings from founding a Computer Vision Startup




                      Research vs Developing a Product
Learnings from founding a Computer Vision Startup


                                                       Challenge 1: Quality


                                                                       Stability
                                                                       Modularity
                                                                       Robustness
                                                                       Flexibility



                                                    Flickr: sbisson
Learnings from founding a Computer Vision Startup


                                                       Challenge 2: Time to market




                                                                         Effort Estimation
                                                                         Effort vs Reward
                                                                         Priorization

                                                    Flickr: Kristian M
                                                                         Often in direct conflict with quality
Learnings from founding a Computer Vision Startup


                                                       Challenge 3: Changing requirements




                                                                       A new competitor
                                                                       Customer feedback
                                                    Flickr: 416style   A new technology
Learnings from founding a Computer Vision Startup




Flickr: geoffeg
                                                     Challenge 4: User Experience
Learnings from founding a Computer Vision Startup




Flickr: royskeane
                                                      Challenge 5: Efficient Teamwork
Learnings from founding a Computer Vision Startup


                                                    Summary Challenges

                                                                           Time To
                                                                           Market
                                                              Quality

                                                                                Efficient
                                                            Changing           Teamwork
                                                           Requirements
                                                                           User
                                                                        Experience
Learnings from founding a Computer Vision Startup


                                                    Running the project

                                                                  Time To Market
                                                        Quality                        Needed: a process that is

                                                     Changing
                                                                            Efficient
                                                                           Teamwork
                                                                                       - Flexible (Changing Requirements)
                                                    Requirements
                                                                                       - Quickly leads to results (Time to Market)
                                                              User Experience
                                                                                       - Little overhead (Efficient teamwork)
                                                                                       - Shows problems early on
                                                                                         (Time to Market and Quality)
Learnings from founding a Computer Vision Startup


                                                    Traditional way of running software projects


                                                                                        What if requirements
                                                                                        change halfway
                                                                                        through project?


                                                                                        What if unexpected
                                                                                        issues arise?

                                                           waterfall model
                                                            (image source: Wikipedia)
Learnings from founding a Computer Vision Startup


                                                    A better way to run software projects
                                                                                               Do short iterations with all
                                                                                               phases: iterative process
                                                     Iteration 1


                                                                                               Examples:
                                                                                               - Scrum
                                                                   Iteration 2                 - RUP (Rational Unified Process)
                                                                                               - ...


                                                                                 Iteration 3
Scrum et al. (Google Tech Talk)
Learnings from founding a Computer Vision Startup

                                                                Ken Schwaber




                                                    http://www.youtube.com/watch?v=IyNPeTn8fpo
Learnings from founding a Computer Vision Startup


                                        Scrum
Learnings from founding a Computer Vision Startup


                                                    Backlogs

                                                     Requirements written as “User Stories”
                                                        Example: “iPhone app user can log-in with username and
                                                        password, in order to log history of requests”
                                                     Effort for each story is estimated (how, see later)
                                                     Prioritized list of stories in the Product Backlog. Re-prioritize
                                                     regularly.
                                                     For each sprint, just select top-n stories to Sprint Backlog
Learnings from founding a Computer Vision Startup


                                                    Sprints
                                                    Sprint = Iterations (2-4 weeks)
                                                    Meetings
                                                      Sprint Planning Meeting
                                                      -> Team decides how much it can do in
                                                      the Sprint (not the manager).
                                                      Set a goal.

                                                      Daily Scrum
                                                      15 minutes max (“timeboxed”).
                                                      Each team member:
                                                      What I am working on now? / what’s next? / problems?
                                                      Check progress on burndown chart. If needed drop tasks.

                                                      Sprint Review Meeting
Learnings from founding a Computer Vision Startup




                                                     NO INTERRUPTIONS DURING SPRINT
                                                                                           why??



                                                            “People need uninterrupted time to get things done”
                                                                    http://gettingreal.37signals.com/ch07_Alone_Time.php



                                                    With programmers, it's especially hard. Productivity depends on being
                                                     able to juggle a lot of little details in short term memory all at once
                                                                  http://www.joelonsoftware.com/articles/fog0000000068.html
Learnings from founding a Computer Vision Startup


                                                    Estimations

                                                    Product Backlog: Stories are estimated roughly
                                                    Unit: Story points. A measure of “size” / ”complexity”
                                                    Ex 1: 0, ½, 1, 2, 3, 5, 8, 13, 20, 40, 100
                                                    Ex 2: 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
                                                    Team estimates using Planning Poker
                                                    Sprint Backlog: Each story gets assigned
                                                    detailed tasks (in hours) at Sprint Planning
                                                    Longterm planning: velocity = story points / sprint
                                                    “we need about 3 sprints to finish this module at our current velocity”
Learnings from founding a Computer Vision Startup


                                                    Why a process at all? Why Scrum?
                                                    You need some process, otherwise you get lost. At the
                                                    latest with more than 5 people more than 5 customers.

                                                    Scrum doesn’t get in the way. Simple. Lightweight.
                                                    “Advanced common sense” *

                                                    Perfect for startups
                                                     * David Allen, in order to describe “Getting Things Done”
Learnings from founding a Computer Vision Startup




http://agilemanifesto.org/
                                                        Scrum is part of Agile
Learnings from founding a Computer Vision Startup

                                                    More Agile Practices
                                                    (or: more common sense)
                                                                                       Testing / Test Driven Development
                                                                  Time To Market
                                                        Quality

                                                                                       Code refactoring
                                                                            Efficient
                                                     Changing              Teamwork
                                                    Requirements

                                                              User Experience
                                                                                       Continuous Integration


                                                                                       Pair Programming
Learnings from founding a Computer Vision Startup


                                                    If you don’t like Agile ...




                                                        http://www.joelonsoftware.com/articles/fog0000000043.html
Learnings from founding a Computer Vision Startup


                                                    Consolidated must-haves	

                                                                                   Subversion: http://subversion.tigris.org/
                                                     Source control (no-brainer)
                                                                                   Git: http://git-scm.com/


                                                                                   Google Test (http://code.google.com/p/googletest/)
                                                     Automated Testing
                                                                                   Often part of good frameworks (e.g. Rails)

                                                                                   CDash http://www.cdash.org/
                                                     Continuous Integration
                                                                                   Cruise Control http://cruisecontrolrb.thoughtworks.com/
                                                     Automated daily builds
                                                                                   (Ruby only)

                                                                                   Just give your product to a few random people (in person)
                                                    Hallway Usability Testing
                                                                                   and observe them using it (before release)
Learnings from founding a Computer Vision Startup


                                                    On Deployment
                                                    - We have 20 million items indexed. Need multiple machines to keep index
                                                    - What if we have many requests, so we need to replicate the whole system

                                                    - Buying and maintaining so much hardware is expensive

                                                    Amazon Web Services (“Cloud Computing”) to the rescue
Learnings from founding a Computer Vision Startup


                                                    On Outsourcing Work
                                                    Do not outsource core competence

                                                    Overhead from time difference, communication,
                                                    project management over distance, travel

                                                    Graphic design, administration etc. are things to
                                                    outsource first (www.elance.com)
What is special about Vision?
         In Terms of Engineering
Learnings from founding a Computer Vision Startup


                                                    What’s special about Vision (Consumer)
                                                    Software is a lot harder to do than e.g. a web-community
                                                    in PHP (means you need more money also)

                                                    Lot’s of uncertainty and complexity

                                                    Still early stage of technology

                                                    Hard to find good specialists
How we did it
Learnings from founding a Computer Vision Startup


                                                    How we did it
                                                    - Two Scrum-Teams in parallel
                                                    - Use of Story points
                                                    - 3-week sprints
                                                    - 2-day break between sprints

                                                    Ec2, Trac + Agilo, C++,
                                                    Rails, Googletest,
                                                    SVN, CDash, Reviewboard

                                                    In-house: Vision, Rails, iPhone
                                                    Outsourced: Android, Symbian etc.
Learnings from founding a Computer Vision Startup


                                                    Challenges we still face
                                                    User stories for system
                                                    related topics

                                                    Uncertainty in Computer
                                                    Vision related stories/tasks

                                                    Testing can still be
                                                    improved
Learnings from founding a Computer Vision Startup


                                                    Polar Rose: How we did it
                                                    - Two teams (infrastructure and vision)
                                                    - Sys admin & dedicated Q/A tester
                                                    - 2-3 week sprints
                                                    - daily and weekly standup Skype meetings

                                                    Ec2, S3, C++, Python
                                                    Java, Jira, Confluence, WordPress
                                                    SVN, Bamboo

                                                    In-house: Vision, Infrastructure, Web, iPhone/iPad, Android
                                                    outsourced: Symbian, small projects/prototypes
Q&A
Learnings from founding a Computer Vision Startup


                                                    Resources II
                                                    Ken Schwaber Scrum          http://www.youtube.com/watch?v=IyNPeTn8fpo


                                                    Agile Manifesto             http://agilemanifesto.org/

                                                                                http://www.joelonsoftware.com/articles/
                                                    The Joel Test
                                                                                fog0000000043.html

                                                    Wikipedia: Scrum            http://en.wikipedia.org/wiki/Scrum_(development)


                                                    Wikipedia: Planning Poker   http://en.wikipedia.org/wiki/Planning_poker

More Related Content

What's hot

The Secret Sauce for Innovation (longform)
The Secret Sauce for Innovation (longform) The Secret Sauce for Innovation (longform)
The Secret Sauce for Innovation (longform) Laszlo Szalvay
 
Bv Eng & Agile Specs For Scrum U.Key
Bv Eng & Agile Specs For Scrum U.KeyBv Eng & Agile Specs For Scrum U.Key
Bv Eng & Agile Specs For Scrum U.KeyLeanAgileTraining
 
UX Basics Workshop at General Assembly London by Tricia Okin
UX Basics Workshop at General Assembly London by Tricia OkinUX Basics Workshop at General Assembly London by Tricia Okin
UX Basics Workshop at General Assembly London by Tricia OkinTricia Okin
 
Intro to BV Engineering Montreal
Intro to BV Engineering MontrealIntro to BV Engineering Montreal
Intro to BV Engineering MontrealLeanAgileTraining
 
Mobile Prototyping Essentials
Mobile Prototyping EssentialsMobile Prototyping Essentials
Mobile Prototyping EssentialsRachel Hinman
 
The Secret Sauce for Innovation (shortform)
The Secret Sauce for Innovation (shortform) The Secret Sauce for Innovation (shortform)
The Secret Sauce for Innovation (shortform) Laszlo Szalvay
 
Why Design Matters - P&G Keynote
Why Design Matters - P&G KeynoteWhy Design Matters - P&G Keynote
Why Design Matters - P&G KeynotePreston Smalley
 
The Lean within Scrum
The Lean within ScrumThe Lean within Scrum
The Lean within ScrumOctav Druta
 
Designing an MVP that works for users (2 and 1/2 hours) @Lean UX NYC 2013
Designing an MVP that works for users (2 and 1/2 hours) @Lean UX NYC 2013Designing an MVP that works for users (2 and 1/2 hours) @Lean UX NYC 2013
Designing an MVP that works for users (2 and 1/2 hours) @Lean UX NYC 2013Ariadna Font Llitjos
 
It Role State Exploration 7 Nov Illumine
It Role State Exploration 7 Nov  IllumineIt Role State Exploration 7 Nov  Illumine
It Role State Exploration 7 Nov Illumineibecome
 
Joe Little - What's Lean got to do with it - The Lean within Scrum
Joe Little - What's Lean got to do with it - The Lean within ScrumJoe Little - What's Lean got to do with it - The Lean within Scrum
Joe Little - What's Lean got to do with it - The Lean within ScrumSFA
 
First build the right thing
First build the right thingFirst build the right thing
First build the right thingAgileOnTheBeach
 
13 good ideas_4_webvideos
13 good ideas_4_webvideos13 good ideas_4_webvideos
13 good ideas_4_webvideosPaul Cameron
 
Overcoming Barriers to Adoption of Virtual Worlds in Government
Overcoming Barriers to Adoption of Virtual Worlds in GovernmentOvercoming Barriers to Adoption of Virtual Worlds in Government
Overcoming Barriers to Adoption of Virtual Worlds in Governmentjcichelli
 
Effective prototyping
Effective prototypingEffective prototyping
Effective prototypingEverett McKay
 

What's hot (19)

The Secret Sauce for Innovation (longform)
The Secret Sauce for Innovation (longform) The Secret Sauce for Innovation (longform)
The Secret Sauce for Innovation (longform)
 
B+W Letter Working Through Screens Book
B+W Letter Working Through Screens BookB+W Letter Working Through Screens Book
B+W Letter Working Through Screens Book
 
Color Letter Working Through Screens Book
Color Letter Working Through Screens BookColor Letter Working Through Screens Book
Color Letter Working Through Screens Book
 
Bv Eng & Agile Specs For Scrum U.Key
Bv Eng & Agile Specs For Scrum U.KeyBv Eng & Agile Specs For Scrum U.Key
Bv Eng & Agile Specs For Scrum U.Key
 
UX Basics Workshop at General Assembly London by Tricia Okin
UX Basics Workshop at General Assembly London by Tricia OkinUX Basics Workshop at General Assembly London by Tricia Okin
UX Basics Workshop at General Assembly London by Tricia Okin
 
Intro to BV Engineering Montreal
Intro to BV Engineering MontrealIntro to BV Engineering Montreal
Intro to BV Engineering Montreal
 
Mobile Prototyping Essentials
Mobile Prototyping EssentialsMobile Prototyping Essentials
Mobile Prototyping Essentials
 
The Secret Sauce for Innovation (shortform)
The Secret Sauce for Innovation (shortform) The Secret Sauce for Innovation (shortform)
The Secret Sauce for Innovation (shortform)
 
Why Design Matters - P&G Keynote
Why Design Matters - P&G KeynoteWhy Design Matters - P&G Keynote
Why Design Matters - P&G Keynote
 
The Lean within Scrum
The Lean within ScrumThe Lean within Scrum
The Lean within Scrum
 
BIM for Conceptual Estimating
BIM for Conceptual EstimatingBIM for Conceptual Estimating
BIM for Conceptual Estimating
 
Designing an MVP that works for users (2 and 1/2 hours) @Lean UX NYC 2013
Designing an MVP that works for users (2 and 1/2 hours) @Lean UX NYC 2013Designing an MVP that works for users (2 and 1/2 hours) @Lean UX NYC 2013
Designing an MVP that works for users (2 and 1/2 hours) @Lean UX NYC 2013
 
Vww 0309 Et
Vww 0309 EtVww 0309 Et
Vww 0309 Et
 
It Role State Exploration 7 Nov Illumine
It Role State Exploration 7 Nov  IllumineIt Role State Exploration 7 Nov  Illumine
It Role State Exploration 7 Nov Illumine
 
Joe Little - What's Lean got to do with it - The Lean within Scrum
Joe Little - What's Lean got to do with it - The Lean within ScrumJoe Little - What's Lean got to do with it - The Lean within Scrum
Joe Little - What's Lean got to do with it - The Lean within Scrum
 
First build the right thing
First build the right thingFirst build the right thing
First build the right thing
 
13 good ideas_4_webvideos
13 good ideas_4_webvideos13 good ideas_4_webvideos
13 good ideas_4_webvideos
 
Overcoming Barriers to Adoption of Virtual Worlds in Government
Overcoming Barriers to Adoption of Virtual Worlds in GovernmentOvercoming Barriers to Adoption of Virtual Worlds in Government
Overcoming Barriers to Adoption of Virtual Worlds in Government
 
Effective prototyping
Effective prototypingEffective prototyping
Effective prototyping
 

Similar to Learnings from founding a Computer Vision startup: Chapter 8 Software Engineering

Private Clouds for Developers: Make Your Infrastructure Agile
Private Clouds for Developers: Make Your Infrastructure AgilePrivate Clouds for Developers: Make Your Infrastructure Agile
Private Clouds for Developers: Make Your Infrastructure AgileAbiquo, Inc.
 
Estimation Agile Projects
Estimation Agile ProjectsEstimation Agile Projects
Estimation Agile ProjectsRam Srivastava
 
Avoiding the 11th Hour Sh*storm at SxSW
Avoiding the 11th Hour Sh*storm at SxSWAvoiding the 11th Hour Sh*storm at SxSW
Avoiding the 11th Hour Sh*storm at SxSWKaren McGrane
 
Beyond the Scrum - I
Beyond the Scrum - IBeyond the Scrum - I
Beyond the Scrum - IAdam Monago
 
Developing Successful Content Management Solutions
Developing Successful Content Management SolutionsDeveloping Successful Content Management Solutions
Developing Successful Content Management SolutionsKaren McGrane
 
Eliminate SaaS Sprawl with Cloud Integration
Eliminate SaaS Sprawl with Cloud IntegrationEliminate SaaS Sprawl with Cloud Integration
Eliminate SaaS Sprawl with Cloud IntegrationDarren Cunningham
 
SIM presentation Oct 9 2012
SIM presentation Oct 9 2012SIM presentation Oct 9 2012
SIM presentation Oct 9 2012sdlc_coach
 
How To Make It Real - Hayden Lindsey
How To Make It Real - Hayden LindseyHow To Make It Real - Hayden Lindsey
How To Make It Real - Hayden LindseyRoopa Nadkarni
 
How to make_it_real-hayden_lindsey
How to make_it_real-hayden_lindseyHow to make_it_real-hayden_lindsey
How to make_it_real-hayden_lindseyIBM
 
How to make_it_real-hayden_lindsey
How to make_it_real-hayden_lindseyHow to make_it_real-hayden_lindsey
How to make_it_real-hayden_lindseyIBM
 
Bhavish Kumar Getting Serious About Enterprise Architecture V1.0
Bhavish Kumar Getting Serious About Enterprise Architecture V1.0Bhavish Kumar Getting Serious About Enterprise Architecture V1.0
Bhavish Kumar Getting Serious About Enterprise Architecture V1.0Bhavish Kumar Madurai
 
Linkroad Corporate Snapshot
Linkroad Corporate SnapshotLinkroad Corporate Snapshot
Linkroad Corporate Snapshotmelvinyou
 
Systems Engineering - a smarter way
Systems Engineering - a smarter waySystems Engineering - a smarter way
Systems Engineering - a smarter wayMark Borowski
 
SAP BPM Jump Start to Value Package
SAP BPM Jump Start to Value PackageSAP BPM Jump Start to Value Package
SAP BPM Jump Start to Value PackageIncture Technologies
 
New Zealand Premiere! A first look at Rational Insight
New Zealand Premiere! A first look at Rational InsightNew Zealand Premiere! A first look at Rational Insight
New Zealand Premiere! A first look at Rational InsightVincent Kwon
 

Similar to Learnings from founding a Computer Vision startup: Chapter 8 Software Engineering (20)

Private Clouds for Developers: Make Your Infrastructure Agile
Private Clouds for Developers: Make Your Infrastructure AgilePrivate Clouds for Developers: Make Your Infrastructure Agile
Private Clouds for Developers: Make Your Infrastructure Agile
 
Why Zachman Certification
Why Zachman CertificationWhy Zachman Certification
Why Zachman Certification
 
Estimation Agile Projects
Estimation Agile ProjectsEstimation Agile Projects
Estimation Agile Projects
 
Avoiding the 11th Hour Sh*storm at SxSW
Avoiding the 11th Hour Sh*storm at SxSWAvoiding the 11th Hour Sh*storm at SxSW
Avoiding the 11th Hour Sh*storm at SxSW
 
Software Lifecycle
Software LifecycleSoftware Lifecycle
Software Lifecycle
 
Beyond the Scrum - I
Beyond the Scrum - IBeyond the Scrum - I
Beyond the Scrum - I
 
Developing Successful Content Management Solutions
Developing Successful Content Management SolutionsDeveloping Successful Content Management Solutions
Developing Successful Content Management Solutions
 
Eliminate SaaS Sprawl with Cloud Integration
Eliminate SaaS Sprawl with Cloud IntegrationEliminate SaaS Sprawl with Cloud Integration
Eliminate SaaS Sprawl with Cloud Integration
 
SIM presentation Oct 9 2012
SIM presentation Oct 9 2012SIM presentation Oct 9 2012
SIM presentation Oct 9 2012
 
How To Make It Real - Hayden Lindsey
How To Make It Real - Hayden LindseyHow To Make It Real - Hayden Lindsey
How To Make It Real - Hayden Lindsey
 
How to make_it_real-hayden_lindsey
How to make_it_real-hayden_lindseyHow to make_it_real-hayden_lindsey
How to make_it_real-hayden_lindsey
 
How to make_it_real-hayden_lindsey
How to make_it_real-hayden_lindseyHow to make_it_real-hayden_lindsey
How to make_it_real-hayden_lindsey
 
Bhavish Kumar Getting Serious About Enterprise Architecture V1.0
Bhavish Kumar Getting Serious About Enterprise Architecture V1.0Bhavish Kumar Getting Serious About Enterprise Architecture V1.0
Bhavish Kumar Getting Serious About Enterprise Architecture V1.0
 
GenericFrame Prototyping Tool
GenericFrame Prototyping ToolGenericFrame Prototyping Tool
GenericFrame Prototyping Tool
 
Linkroad Corporate Snapshot
Linkroad Corporate SnapshotLinkroad Corporate Snapshot
Linkroad Corporate Snapshot
 
Systems Engineering - a smarter way
Systems Engineering - a smarter waySystems Engineering - a smarter way
Systems Engineering - a smarter way
 
About scrum
About scrumAbout scrum
About scrum
 
SAP BPM Jump Start to Value Package
SAP BPM Jump Start to Value PackageSAP BPM Jump Start to Value Package
SAP BPM Jump Start to Value Package
 
New Zealand Premiere! A first look at Rational Insight
New Zealand Premiere! A first look at Rational InsightNew Zealand Premiere! A first look at Rational Insight
New Zealand Premiere! A first look at Rational Insight
 
Lean UX
Lean UXLean UX
Lean UX
 

Recently uploaded

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 

Recently uploaded (20)

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 

Learnings from founding a Computer Vision startup: Chapter 8 Software Engineering

  • 2. Learnings from founding a Computer Vision Startup Research vs Developing a Product
  • 3. Learnings from founding a Computer Vision Startup Challenge 1: Quality Stability Modularity Robustness Flexibility Flickr: sbisson
  • 4. Learnings from founding a Computer Vision Startup Challenge 2: Time to market Effort Estimation Effort vs Reward Priorization Flickr: Kristian M Often in direct conflict with quality
  • 5. Learnings from founding a Computer Vision Startup Challenge 3: Changing requirements A new competitor Customer feedback Flickr: 416style A new technology
  • 6. Learnings from founding a Computer Vision Startup Flickr: geoffeg Challenge 4: User Experience
  • 7. Learnings from founding a Computer Vision Startup Flickr: royskeane Challenge 5: Efficient Teamwork
  • 8. Learnings from founding a Computer Vision Startup Summary Challenges Time To Market Quality Efficient Changing Teamwork Requirements User Experience
  • 9. Learnings from founding a Computer Vision Startup Running the project Time To Market Quality Needed: a process that is Changing Efficient Teamwork - Flexible (Changing Requirements) Requirements - Quickly leads to results (Time to Market) User Experience - Little overhead (Efficient teamwork) - Shows problems early on (Time to Market and Quality)
  • 10. Learnings from founding a Computer Vision Startup Traditional way of running software projects What if requirements change halfway through project? What if unexpected issues arise? waterfall model (image source: Wikipedia)
  • 11. Learnings from founding a Computer Vision Startup A better way to run software projects Do short iterations with all phases: iterative process Iteration 1 Examples: - Scrum Iteration 2 - RUP (Rational Unified Process) - ... Iteration 3
  • 12. Scrum et al. (Google Tech Talk) Learnings from founding a Computer Vision Startup Ken Schwaber http://www.youtube.com/watch?v=IyNPeTn8fpo
  • 13. Learnings from founding a Computer Vision Startup Scrum
  • 14. Learnings from founding a Computer Vision Startup Backlogs Requirements written as “User Stories” Example: “iPhone app user can log-in with username and password, in order to log history of requests” Effort for each story is estimated (how, see later) Prioritized list of stories in the Product Backlog. Re-prioritize regularly. For each sprint, just select top-n stories to Sprint Backlog
  • 15. Learnings from founding a Computer Vision Startup Sprints Sprint = Iterations (2-4 weeks) Meetings Sprint Planning Meeting -> Team decides how much it can do in the Sprint (not the manager). Set a goal. Daily Scrum 15 minutes max (“timeboxed”). Each team member: What I am working on now? / what’s next? / problems? Check progress on burndown chart. If needed drop tasks. Sprint Review Meeting
  • 16. Learnings from founding a Computer Vision Startup NO INTERRUPTIONS DURING SPRINT why?? “People need uninterrupted time to get things done” http://gettingreal.37signals.com/ch07_Alone_Time.php With programmers, it's especially hard. Productivity depends on being able to juggle a lot of little details in short term memory all at once http://www.joelonsoftware.com/articles/fog0000000068.html
  • 17. Learnings from founding a Computer Vision Startup Estimations Product Backlog: Stories are estimated roughly Unit: Story points. A measure of “size” / ”complexity” Ex 1: 0, ½, 1, 2, 3, 5, 8, 13, 20, 40, 100 Ex 2: 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 Team estimates using Planning Poker Sprint Backlog: Each story gets assigned detailed tasks (in hours) at Sprint Planning Longterm planning: velocity = story points / sprint “we need about 3 sprints to finish this module at our current velocity”
  • 18. Learnings from founding a Computer Vision Startup Why a process at all? Why Scrum? You need some process, otherwise you get lost. At the latest with more than 5 people more than 5 customers. Scrum doesn’t get in the way. Simple. Lightweight. “Advanced common sense” * Perfect for startups * David Allen, in order to describe “Getting Things Done”
  • 19. Learnings from founding a Computer Vision Startup http://agilemanifesto.org/ Scrum is part of Agile
  • 20. Learnings from founding a Computer Vision Startup More Agile Practices (or: more common sense) Testing / Test Driven Development Time To Market Quality Code refactoring Efficient Changing Teamwork Requirements User Experience Continuous Integration Pair Programming
  • 21. Learnings from founding a Computer Vision Startup If you don’t like Agile ... http://www.joelonsoftware.com/articles/fog0000000043.html
  • 22. Learnings from founding a Computer Vision Startup Consolidated must-haves Subversion: http://subversion.tigris.org/ Source control (no-brainer) Git: http://git-scm.com/ Google Test (http://code.google.com/p/googletest/) Automated Testing Often part of good frameworks (e.g. Rails) CDash http://www.cdash.org/ Continuous Integration Cruise Control http://cruisecontrolrb.thoughtworks.com/ Automated daily builds (Ruby only) Just give your product to a few random people (in person) Hallway Usability Testing and observe them using it (before release)
  • 23. Learnings from founding a Computer Vision Startup On Deployment - We have 20 million items indexed. Need multiple machines to keep index - What if we have many requests, so we need to replicate the whole system - Buying and maintaining so much hardware is expensive Amazon Web Services (“Cloud Computing”) to the rescue
  • 24. Learnings from founding a Computer Vision Startup On Outsourcing Work Do not outsource core competence Overhead from time difference, communication, project management over distance, travel Graphic design, administration etc. are things to outsource first (www.elance.com)
  • 25. What is special about Vision? In Terms of Engineering
  • 26. Learnings from founding a Computer Vision Startup What’s special about Vision (Consumer) Software is a lot harder to do than e.g. a web-community in PHP (means you need more money also) Lot’s of uncertainty and complexity Still early stage of technology Hard to find good specialists
  • 28. Learnings from founding a Computer Vision Startup How we did it - Two Scrum-Teams in parallel - Use of Story points - 3-week sprints - 2-day break between sprints Ec2, Trac + Agilo, C++, Rails, Googletest, SVN, CDash, Reviewboard In-house: Vision, Rails, iPhone Outsourced: Android, Symbian etc.
  • 29. Learnings from founding a Computer Vision Startup Challenges we still face User stories for system related topics Uncertainty in Computer Vision related stories/tasks Testing can still be improved
  • 30. Learnings from founding a Computer Vision Startup Polar Rose: How we did it - Two teams (infrastructure and vision) - Sys admin & dedicated Q/A tester - 2-3 week sprints - daily and weekly standup Skype meetings Ec2, S3, C++, Python Java, Jira, Confluence, WordPress SVN, Bamboo In-house: Vision, Infrastructure, Web, iPhone/iPad, Android outsourced: Symbian, small projects/prototypes
  • 31. Q&A
  • 32. Learnings from founding a Computer Vision Startup Resources II Ken Schwaber Scrum http://www.youtube.com/watch?v=IyNPeTn8fpo Agile Manifesto http://agilemanifesto.org/ http://www.joelonsoftware.com/articles/ The Joel Test fog0000000043.html Wikipedia: Scrum http://en.wikipedia.org/wiki/Scrum_(development) Wikipedia: Planning Poker http://en.wikipedia.org/wiki/Planning_poker