Your SlideShare is downloading. ×
Development Survival Guide
georges@songbirdnest.com
version 1.2




                           © Songbird All Rights Reser...
Table Of Content
1   Introduction

2   Development Process

3   Tools

4   Release Step-by-step




                      ...
1   Introduction




                   © Songbird All Rights Reserved.   3
Introduction
Welcome

   Welcome to Songbird Engineering Team.
     This guide contains an overview of our development pro...
Introduction
Product Development Process Goals

    Satisfy our customers (end-users, developers, partners) through
    ea...
Introduction
What we mean by Agile

    Value individuals and interactions over processes and
    procedures.
    Working ...
2   Development Process




                          © Songbird All Rights Reserved.   7
Development Process
Core Practices

    Commitment to good engineering practices
      Build automation
      Continuous i...
Development Process
Release cycle & Artifacts

     Calendar based release cycles (8-12 weeks)
     System for estimation ...
Development Process
Artifacts relationships

                                                                          Wik...
Development Process
High Level Planning




                 • Working list of features   • Quarterly granularity
        ...
Development Process
Release Lifecycle

    Calendar driven releases
    Short cycle (4-6 weeks development, 2-3 weeks QA)
...
Development Process
    Release Trains




                                          DESIGN




RELEASE A   PLANNIN   DEVE...
Development Process
Release Planning

    Each release has a dedicated owner who accept/reject stories
    Release Plannin...
Development Process
  Development Phases




                               • Assign tasks
             • Define           ...
Development Process
     Release Plan - http://wiki.songbirdnest.com/Releases/Jackson_5



High level schedule
    for rel...
Development Process
  Wireframe - http://wiki.songbirdnest.com/@api/deki/files/35/=First_Run_Experience.pdf
              ...
Development Process
Story - http://bugzilla.songbirdnest.com/show_bug.cgi?id=10145


     Story captured in
          Bugz...
Development Process
Test Case - http://litmus.songbirdnest.com/show_test.cgi?id=653




 Test cases for story




        ...
3   Tools




            © Songbird All Rights Reserved.   20
Tools
Overview

Purpose                                                  Tool            URL

Repository for features, sto...
Tools
Unorthodox use of Bugzilla

    Priority - Owned by PM
      P1 - Actively being worked on this week for this releas...
Tools
Unorthodox use of Bugzilla

    Target Milestone
      Identify each particular release train (Code names drawn from...
Tools
Release Tracker - Internal Only




                                  © Songbird All Rights Reserved.   24
Tools
Release Tracker Dashboard - Internal Only




                                            © Songbird All Rights Rese...
4   Release Step-by-step




                           © Songbird All Rights Reserved.   26
Release Step-by-Step
Planning Phase

    During this phase, engineering is working on refining stories,
    creating tasks...
Release Step-by-Step
Implementation Phase

    Before Monday meeting
     Identify tasks/stories that you will complete th...
Release Step-by-step
QA Phase

    Feature complete milestone
     All planned work (Stories, Tasks) is completed.
     Re...
Feedback


  Questions? Comments?
   Ask the team. irc.mozilla.org #songbird


  Found ways to improve this guide?
   Send...
Upcoming SlideShare
Loading in...5
×

Songbird Development Survival Guide

6,337

Published on

This guide contains an overview of the development process and tools used daily by the engineering team at Songbird.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,337
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide





  • Schedule slips -> short release cycle
    The day of the delivery comes and the software won’t be ready for another 6 months
    Short release cycles, few months at most. Weekly iterations within a release cycle.

    Project canceled -> smallest release possible
    After numerous slips, the project is canceled without going into production
    Ask the customer to choose the smallest release that makes the most business sense

    System goes sour -> suite of tests
    After years in production, the cost of change is so high that the system must be replaced
    Create & maintain a comprehensive suite of tests, which are run after every change

    High defect rate -> unit tests
    The defect rate is so high that the system isn’t used
    Tests are created to exercise all functions in the system

    Requirements misunderstood -> customer is part of the team
    The software does not solve the business problem that was originally posed
    Customer is integral part of the team

    False feature rich -> highest priority tasks added
    Lots of interesting (fun to program) features, none of which makes the company money
    Insists that only the highest priority tasks are addressed

    Staff turnover -> accountability / human contacts
    After a year, all the good programmers on the project hate the software and leave
    Programmers accept responsibility for estimating and completing their work; encourages human contact



  • Working software is the principal measure of progress






















  • Transcript of "Songbird Development Survival Guide"

    1. 1. Development Survival Guide georges@songbirdnest.com version 1.2 © Songbird All Rights Reserved.
    2. 2. Table Of Content 1 Introduction 2 Development Process 3 Tools 4 Release Step-by-step © Songbird All Rights Reserved. 2
    3. 3. 1 Introduction © Songbird All Rights Reserved. 3
    4. 4. Introduction Welcome Welcome to Songbird Engineering Team. This guide contains an overview of our development process and tools used daily by the engineering team. Please familiarize yourself with our approach and terminology. It will help you understand how we specify, plan and track each release. More insights into Songbird’s road to Agile and how we got here http://blog.songbirdnest.com/tag/agile © Songbird All Rights Reserved. 4
    5. 5. Introduction Product Development Process Goals Satisfy our customers (end-users, developers, partners) through early and continuous delivery of valuable and innovative software Provide ability to react quickly to business changes Reduce product defects Ensure team and product sustainability Ease of product maintenance Maintain a constant pace indefinitely Be resilient to turn over Provide good visibility into progress and release date © Songbird All Rights Reserved. 5
    6. 6. Introduction What we mean by Agile Value individuals and interactions over processes and procedures. Working software over comprehensive documentation. Customer collaboration over contract negotiation. Responding to change over following a plan. Our methodology borrows from the good practices of Scrum and Extreme programming (XP). © Songbird All Rights Reserved. 6
    7. 7. 2 Development Process © Songbird All Rights Reserved. 7
    8. 8. Development Process Core Practices Commitment to good engineering practices Build automation Continuous integration Unit testing Peer review process prior to code commits Automated api documentation Weekly iteration meetings for planning & tracking Ongoing bug triage meetings Post-mortems Extensive use of collaboration tools for item tracking, test case management, documentation, release tracking. © Songbird All Rights Reserved. 8
    9. 9. Development Process Release cycle & Artifacts Calendar based release cycles (8-12 weeks) System for estimation and tracking using lightweight artifacts Feature - High level product feature. Unit of work for design team. Design docs - Wireframes and narrative. Story - Smallest increment of implementable end-user value. Unit of work for engineering team. Stories have to be accepted by PM before they are deemed completed. Task - Engineering implementation detail, chore, etc. Bug - Defect in existing functionality. Bugs have to be validated by QA before they are deemed completed. Point System - Everything has a cost of 1, 2, 3. Velocity - Average points completed per day by the team. Acceptance Test - Simple user centric steps to determine feature completion. Release Checklist - Comprehensive pre-flight checklist for each release. © Songbird All Rights Reserved. 9
    10. 10. Development Process Artifacts relationships Wiki Release Plan Artifacts and their interactions Wireframe create a system of check and balances. Acceptance? Stories are derived from Story Test Case wireframes. Stories depends R+? Build ok? on tasks. Tasks have test cases SVN Patch Task Test Case associated with them and code patch when work is completed. Source code Patch Task Test Case Patches get reviewed before Bugzilla Litmus being integrated. Buildbots Tree ok? validate integration into source tree. Nightly builds are Binary Nightly Build used to validate proper implementation. Buildbot Build repository © Songbird All Rights Reserved. 10
    11. 11. Development Process High Level Planning • Working list of features • Quarterly granularity • Rough prioritization • Reflect company • Everybody can priorities • Execute each release contribute • Determine cycle RELEASE A ROADMAP RELEASE B MEETING RELEASE C FEATURE RELEASE PLAN SUGGESTIONS IN ROADMAP ON WIKI BUGZILLA © Songbird All Rights Reserved. 11
    12. 12. Development Process Release Lifecycle Calendar driven releases Short cycle (4-6 weeks development, 2-3 weeks QA) User experience design is completed prior to planning phase (ideally) Iterative release cycle One-week iteration Nightly builds always work Product manager validates implementation as we go QA tests completed and validated stories Progress is measured at the end of iteration and plan adjusted accordingly © Songbird All Rights Reserved. 12
    13. 13. Development Process Release Trains DESIGN RELEASE A PLANNIN DEVELOPMENT QA PM RELEASE B PLANNIN DEVELOPMENT QA PM RELEASE C PLANNIN © Songbird All Rights Reserved. 13
    14. 14. Development Process Release Planning Each release has a dedicated owner who accept/reject stories Release Planning (Every 2 months) Write stories and tasks Estimate (“cost”) stories and tentatively allocate to release Roll up cost, pick velocity and layout tentative schedule Iteration Planning (Every Monday) Calculate velocity based on last week completed and accepted stories Team pick stories for this week Developers accept stories and break stories into tasks if needed Plan gets locked down © Songbird All Rights Reserved. 14
    15. 15. Development Process Development Phases • Assign tasks • Define • Code • Gather feedback features • Unit tests • Find bugs • Brainstorm • Choose • Incorporate • Fix defects changes priorities feedback • Unit tests • Measure PLANNIN RELEAS POST DESIGN DEVELOPMENT QA G E MORTEM RELEASE CODE BUG REPORT SONGBIRD PROCESS IMPROVEMENTS STORIES UNIT TESTS UNIT TESTS CHECK LISTS DESIGN DOCS ACCEPTANCE FUNCTIONAL ASSETS Responsibl PM, UED, ENG ENG ENG, QA RELEASE ENG QA e Approve VPP PM, QA QA, PM VPP VPE, VPP Consulted VPE, QA UED VPE, VPP QA, VPE, PM ALL Informed ALL VPP, VPE ALL WORLD ALL © Songbird All Rights Reserved. 15
    16. 16. Development Process Release Plan - http://wiki.songbirdnest.com/Releases/Jackson_5 High level schedule for release Feature description. Links to detailed definition and wireframes © Songbird All Rights Reserved. 16
    17. 17. Development Process Wireframe - http://wiki.songbirdnest.com/@api/deki/files/35/=First_Run_Experience.pdf Revisiting the Songbird First Run Experience Screen 1: Welcome Screen 2: Licensing Screen 3: Recommended Add-ons Screen 4: Importing Media Screen 5: Metrics What happ Welcome License Recommended Add-ons Importing Media Help Make Songbird Better (assuming License Agreement Recommended Add-ons Import Media Add-ons extend Songbird's functionality, This page will walk you through importing media les into Help Make Songbird Better allowing you to customize your media Songbird by attempting to detect your local media. Once player experience. Songbird launches you can add additional media in a Would you help us make Songbird better by sending us metrics Downlo on how you use the application? Title %k # variety of ways! They can integrate with other applications and Metrics are completely anonymous and no personal information services, support connecting to external devices, iTunes Library Importer is collected. Sample wireframe. √ Title change the appearance and more! Description It appears you have iTunes installed. Would you like to import your library into Songbird? Yes √ No Applicatio √ Title √ Yes No Surveys Description Can we contact you from time to time with simple, anonymous Welcome to Songbird √ Title surveys on how we’re doing? Description Yes √ No Songbird is a desktop media player mashed-up with the Web. √ Title This assistant handles the initial con guration of Songbird and Description provides a basic introduction to the application's functionality. √ Title I have read and accepted the terms of this license. Description Continue Go Back Continue Cancel Go Back Continue Cancel Go Back Continue Cancel Go Back Continue Goal: Branding opportunity, rst experience Goal: Getting users to agree to the License Goal: Providing users with Recommended Goal: Being smart about detecting local media. Goal: Providing users with a more transparent and not being a License agreement. before using the application. add-ons, ie the First Run experience. And, allowing users to de ne how they want to visible option regarding providing us with metrics. Language choice. import media into Songbird. Note: disable “continue“ option until “i have agreed” checkbox has been selected Screen 4: Importing Media (if iTunes detected and user selects No) Importing Media Import Media This page will walk you through importing media les into Songbird by attempting to detect your local media. Once Songbird launches you can add additional media in a variety of ways! iTunes Library Importer It appears you have iTunes installed. Would you like to import your library into Songbird? Yes √ No Media Scan Would you like Songbird to attempt to import media by scanning common directories on your computer? √ Yes No You can also specifcy for Songbird to import media from speci c directories: Choose Cancel Go Back Continue Screen 4: Importing Media (if no iTunes detected) Importing Media Import Media This page will walk you through importing media les into Songbird by attempting to detect your local media. Once Songbird launches you can add additional media in a variety of ways! Media Scan Would you like Songbird to attempt to import media by scanning common directories on your computer? √ Yes No You can also specifcy for Songbird to import media from speci c directories: Choose Cancel Go Back Continue © Songbird All Rights Reserved. 17
    18. 18. Development Process Story - http://bugzilla.songbirdnest.com/show_bug.cgi?id=10145 Story captured in Bugzilla © Songbird All Rights Reserved. 18
    19. 19. Development Process Test Case - http://litmus.songbirdnest.com/show_test.cgi?id=653 Test cases for story © Songbird All Rights Reserved. 19
    20. 20. 3 Tools © Songbird All Rights Reserved. 20
    21. 21. Tools Overview Purpose Tool URL Repository for features, stories, tasks and bugs Bugzilla http://bugzilla.songbirdnest.com Design docs, wireframes Wiki http://wiki.songbirdnest.com/Releases Release plan Wiki http://wiki.songbirdnest.com/Releases Test cases repository for regression, acceptance, etc. Litmus http://litmus.songbirdnest.com Release tracker Custom (Ruby) Internal only Source code repository Subversion http://svn.songbirdnest.com Source code commit timeline tracking/browsing Trac http://timeline.songbirdnest.com Source code search OpenGrok http://src.songbirdnest.com Continuous build integration Buildbot http://buildbot.songbirdnest.com Nightly builds Web http://developer.songbirdnest.com/builds Documentation Wiki http://developer.songbirdnest.com http://wiki.songbirdnest.com/POTI/ Release checklists Wiki Build_Release/Process/Bird_Release_Checklist Dev team Mailing list Internal only Release team Mailing list Internal only Chat IRC irc.mozilla.org #songbird © Songbird All Rights Reserved. 21
    22. 22. Tools Unorthodox use of Bugzilla Priority - Owned by PM P1 - Actively being worked on this week for this release. P2 - Required for this release P3 - Expected for this release P4 - Nice to have if time allows. Low implementation risk. Severity - Owned by QA Blocker - Blocks development and/or testing work Critical - Crash, loss of data, severe memory leak Major (Default) - Major loss of function Minor - Minor loss of functionality minor; problem with easy workaround is present; cosmetic problem like misspelled words/misaligned text © Songbird All Rights Reserved. 22
    23. 23. Tools Unorthodox use of Bugzilla Target Milestone Identify each particular release train (Code names drawn from a theme. Alphabetical sequence makes it easy to see order of releases) Type Bug - a specific defect in the code or UI Task - a specific activity to be accomplished (usually toward completion of a story or feature) Story - an engineering project (scoped to smallest increment of business value) Feature - a user experience design project (scoped to smallest practical design problem) Cost - Expressed in 1, 2, 3 points increments 1 point = Less than a day to complete. 2 points = 1-2 days. 3 points = Could take several days. Unknown or difficult. © Songbird All Rights Reserved. 23
    24. 24. Tools Release Tracker - Internal Only © Songbird All Rights Reserved. 24
    25. 25. Tools Release Tracker Dashboard - Internal Only © Songbird All Rights Reserved. 25
    26. 26. 4 Release Step-by-step © Songbird All Rights Reserved. 26
    27. 27. Release Step-by-Step Planning Phase During this phase, engineering is working on refining stories, creating tasks to reflect implementation details and costing those tasks. Some prototyping might be involved. Collaboration with QA to ensure that test cases are created. Deliverables Complete release plan Stories and Tasks filed in Bugzilla Everything has a cost Test cases for every feature © Songbird All Rights Reserved. 27
    28. 28. Release Step-by-Step Implementation Phase Before Monday meeting Identify tasks/stories that you will complete this iteration (week). Mark them as P1. Monday meeting Review of last week’s plan. Discuss carry over, velocity, etc. Review this week’s plan. Discuss assignments, load, etc. Lock the plan for current iteration. During the week Write code. Fix bugs. Post patches to Bugzilla. Request reviews. Once R+, check into SVN. Mark items fixed in Bugzilla. Thursday meeting Review of progress. Discuss blocking issues, changes to the plan. Sunday Midnight Deadline for any items to be closed to count towards that week plan. © Songbird All Rights Reserved. 28
    29. 29. Release Step-by-step QA Phase Feature complete milestone All planned work (Stories, Tasks) is completed. Release branch is created in SVN Release plan transition to punch list Everything required for the release moves to P1. Everything else can be ignored. Severity determines order. Critical first, then major, etc. Blocker identify blocking issue for next milestone (Beta 1, 2, Final). They are automatically cleared for branch landing. Usually at least 2 public Beta builds before Final Post-mortem Feedback is being gathered, discussed and changes made. © Songbird All Rights Reserved. 29
    30. 30. Feedback Questions? Comments? Ask the team. irc.mozilla.org #songbird Found ways to improve this guide? Send feedback to georges@songbirdnest.com License © Songbird All Rights Reserved. 30

    ×