3. The Bad Old Days
⢠May 2007
â Unreliable release dates
â Low quality
â Unmaintainable code
â Poor ops/dev/QA
relationship
â 0% test coverage
3
4. What Was Wrong?
⢠Requirement waterfall
⢠Assigned silo development
⢠No automated testing
⢠Developing on quicksand
⢠No progress tracking
⢠Dev & QA separation
⢠Release piling
4
6. Comprehensive Agility
Organizational Structure
Eliminate Waste Empower the Team Collaborative Layout
Access to Execs Intelligence over Experience Allow Fun
Increased Expectations Reduced management Educate Execs
Process Framework
Development Approach
5
7. Comprehensive Agility
Organizational Structure
Eliminate Waste Empower the Team Collaborative Layout
Access to Execs Intelligence over Experience Allow Fun
Increased Expectations Reduced management Educate Execs
Process Framework
Iterations Demos User Stories Daily Sync-ups
One-piece flow Embrace Change Retrospectives
Development Approach
5
8. Comprehensive Agility
Organizational Structure
Eliminate Waste Empower the Team Collaborative Layout
Access to Execs Intelligence over Experience Allow Fun
Increased Expectations Reduced management Educate Execs
Process Framework
Iterations Demos User Stories Daily Sync-ups
One-piece flow Embrace Change Retrospectives
Development Approach
Coding Standards Collective Ownership Continuous Integration
Collective Design Automated Testing Technical Backlog
Design Metaphors YAGNI Pair Programming
5
9. Comprehensive Agility
Organizational Structure
Eliminate Waste Empower the Team Collaborative Layout
Access to Execs Intelligence over Experience Allow Fun
Increased Expectations Reduced management Educate Execs
Process Framework
Iterations Demos User Stories Daily Sync-ups
One-piece flow Embrace Change Retrospectives
Development Approach
Coding Standards
Collective Design XP
Collective Ownership
Automated Testing
Continuous Integration
Technical Backlog
Design Metaphors YAGNI Pair Programming
5
10. Comprehensive Agility
Organizational Structure
Eliminate Waste Empower the Team Collaborative Layout
Access to Execs Intelligence over Experience Allow Fun
Increased Expectations Reduced management Educate Execs
Process Framework
Iterations
One-piece flow
Scrum
Demos User Stories
Embrace Change
Daily Sync-ups
Retrospectives
Development Approach
Coding Standards
Collective Design XP
Collective Ownership
Automated Testing
Continuous Integration
Technical Backlog
Design Metaphors YAGNI Pair Programming
5
11. Comprehensive Agility
Organizational Structure
Lean
Eliminate Waste Empower the Team Collaborative Layout
Access to Execs Intelligence over Experience Allow Fun
Increased Expectations Reduced management Educate Execs
Process Framework
Iterations
One-piece flow
Scrum
Demos User Stories
Embrace Change
Daily Sync-ups
Retrospectives
Development Approach
Coding Standards
Collective Design XP
Collective Ownership
Automated Testing
Continuous Integration
Technical Backlog
Design Metaphors YAGNI Pair Programming
5
13. Agile Misconceptions
âWeâre iterative so weâre agileâ
âThereâs no time for architecture designâ
âOur features are too big to fit into sprintsâ
âOur code canât be unit testedâ
âThe daily meeting is a waste of timeâ
âAgile is an excuse to micro-manageâ
6
14. Genius.com Agile Milestones
...
September
2009
Split into 2 teams
January
Hired brilliant build engineer
May
Hired supportive VP
April
New collaborative workspace
2008 March
Introduce Scrum board
February
Scrum Master training
December
Start of on-time release streak
October
2007 August
Co-located dev & QA
Nightly builds
June
First unit tests
April
First âiterationâ
7
15. Hiring
⢠Intelligence over Experience
⢠Cultural fit
⢠Enthusiasm
⢠Motivated
⢠Referrals
⢠From RIT or HMC
8
16. Collaboration
⢠Encourage non-work interaction
⢠Team breaks story into tasks
⢠Collective decisions
⢠Self-assigned work
⢠Co-located product management
⢠Remove barriers
⢠Hold team responsible
⢠Conducive workspace
9
21. Scrum Board
⢠5 columns
⢠Swim lanes for stories
⢠Stories are color coded
⢠Team commits to stories every 2
weeks
⢠Production and previous sprint
bugs
⢠Team decides order of stories
⢠Can only be on one open story
⢠Donât move on until entire story
is done
14
22. Definition of âDoneâ
⢠Task
â Unit tests written and run
â Code and tests checked in
â QA verify itâs bug free
â UI tests written and run
â Security code review
⢠Story
â Product management sign-off
â Potentially shippable
â No open non-validated tasks
â No technical debt
15
23. Prioritized Backlog
⢠Maintained by product management
⢠Aggregation of all features requested
(users, sales, marketing, operations, developers, QA, etc)
⢠Prioritized by product manager based on input
⢠Higher priority = increased definition and granularity
⢠Meet & greets w/ the team
⢠Phrased as user stories
âAs a marketer I want to be able to schedule an email to go out in the future so that I
donât have to be at my desk for the email to go out at a specific timeâ
⢠Acceptance criteria
â1 month maximum, 1 hour minimumâ
⢠Everyone needs to understand tradeoffs
16
25. Process Evolution
⢠May 2007
â Unreliable release dates
â Low quality
â Unmaintainable code
â Poor ops/dev/QA
relationship
â 0% test coverage
18
26. Process Evolution
⢠May 2007 ⢠December 2009
â Unreliable release dates â 13 consecutive on-time
â Low quality major releases
â Unmaintainable code â 90% reduction in
production bugs
â Poor ops/dev/QA
relationship â 72% unit test coverage
â 0% test coverage
18
36. Tools We Use
⢠3rd Party ⢠We Built
â PHPUnit â PHP DSL for Selenium
â Hudson â JS/CSS Packaging
â PhpUnderControl â PHPUnit wrapper
â Jira â DB Fixture Framework
â SVN â Automated deployment
â Eclipse
â TestRun
â Selenium RC
â Capistrano
28
Hinweis der Redaktion
As a marketing user I would like the sfdc standard field “lead source” to be a Genius standard field
As a non-sfdc marketing user I would like to be able to use the “lead source” field in workflow conditions so that I can segment my workflow actions based on “lead source”
As a non-sfdc marketing user I would like to use “lead source” field in workflow update field action so that I can change the field value in a workflow
As a non-sfdc marketing user I would like to use “lead source” field in smart groups so that I can segment my groups based on the value of that field
As a non-sfdc marketing user I would like to use “lead source” field in mail merge so that I can include the field value in emails that go to contacts and leads