synerzip agile software development
TRANSCRIPT
www.synerzip.com
Building Enterprise Class Software
March 2014
A Guide to Early Stage Technology Companies
www.synerzip.comConfidential
Topics for Discussion1. Lifecycle of a software start-up2. Realities of software development3. Key decision points 4. Summary
www.synerzip.com
Lifecycle of a Software Startup
Idea Incubation
> 1 yr.
Bootstrap, Seed A-Round B-Round
Angel Round ~$4M ~$4M
~$200K ~$0.5M
Company Maturity (HC, Rev, etc.)
Time in Years
Confidential
www.synerzip.comConfidential
Topics for Discussion1. Lifecycle of a technology start-up2. Realities of software development3. Key decision points 4. Summary
www.synerzip.com
Building Software is Complex
Evolving/Changing Business Requirements• Multiple, inconsistent inputs• Change is usually good though
Inherent R&D Nature of Software Development• Software performance issues• Changing/New technologies
Technology Environment with Many Moving Parts• Dependence on external technology components –HW/SW• Constantly changing environment
Distributed Teams Needing to Collaborate• Team communications• Need for complementary skills
• Unlike other engineering disciplines (e.g. manuf, bldg const), building software is harder and more complex
• If not managed properly, a lot can go wrong!
• Needs to be properly managed – with appropriate level of process discipline
• Agile approach works very well in most cases
Confidential
www.synerzip.com
What is Agile?Agile approach accounts for unique nature of software development. It is a…•software project management approach that encourages delivering in short cycles, with frequent inspection, feedback, and adaptation•leadership philosophy that encourages team-work, self organization, and accountability at team level•disciplined engineering approach to software development that results in rapid delivery of high quality software•business approach that focuses on delivery real business value (=customer needs) above all.
Various flavors are practiced – SCRUM, XP, Kanban etc.
Confidential
www.synerzip.com
Agile Manifesto - 2001“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
– Individuals and interactions over processes and tools– Working software over comprehensive documentation– Customer collaboration over contract negotiation– Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.”
Kent Beck Mike Beedle Arie van BennekumAlistair Cockburn Ward Cunningham Martin FowlerJames Grenning Jim Highsmith Andrew HuntRon Jeffries Jon Kern Brian MarickRobert C. Martin Steve Mellor Ken SchwaberJeff Sutherland Dave Thomas
Confidential
www.synerzip.com
Waterfall Approach
Confidential
• 6+ month• Too linear, with no learning/feedback cycle• Expects all requirements upfront• No value based prioritization of features• Often results in over engineering• Often testing/quality compromised
www.synerzip.com
Agile Approach
Confidential
• First working software in 4 weeks or less• Emphasis on learning/feedback • Embraces changing/evolving requirements• Consistent focus on high-value features• “Just-enough” engineering, with emphasis
on frequent refactoring• Focus on repeated testing/quality
www.synerzip.com
SW Triad – Conventional vs. AgileConventional Iron triad of Scope x Cost x Schedule should be replaced by Value x Quality x Constraints
SCOPE
COST SCHEDULE
VALUE
QUALITY CONSTRAINTS• Cost• Schedule
Confidential
www.synerzip.com
Agile Development Cycles
Confidential
www.synerzip.com
Impact of Agile – 3x Success!
Confidential
• Agile projects are successful three times more often than non-agile projects• “The agile process is the universal remedy for software development project
failure. Software applications developed through the agile process have three times the success rate of the traditional waterfall method and a much lower percentage of time and cost overruns.”
www.synerzip.com
But, Agile is Not a Panacea• Following Agile approach greatly helps but is not a panacea• “Lip Service Agile” can be worse – more chaos, no net business value!• All involved (business, dev, etc) need to understand the nature of
software development and have realistic expectations• Ensure proper team composition
– Same person can play multiple roles– But, all roles need to be covered– Be realistic about skill fit of the person playing a role
Confidential
www.synerzip.com
Agile Myths
Confidential
• Agile = No documentation• Agile = No planning• Agile = No commitment on scope of work to be delivered• Agile = No need for upfront requirements gathering• Agile = No software discipline/rigor• Agile = No budget• Agile = A rigorous process defined in a set of 3-ring binders
www.synerzip.com
When You Can Do Without Agile• When you know (for sure) all the
requirements upfront– and, for some reason (e.g. regulatory
constraints), they can’t change/evolve• No technology risk at all• But, still there is benefit of building software
in short cycles
Confidential
www.synerzip.com
Team Structure For SuccessVISIONARY
• Idea owner, drives long-term product roadmap
• Passionate, evangelizes the idea
• But, can’t “write” detailed reqs
• May not understand software dev process and get easily frustrated
DEV MGR
DEVELOPER
DEVELOPER
• Seasoned development manager – owns delivery plan – resource, time, scope, risk
• Pushes back on Prod Mgr to manage scope
• Great people manager
SW ARCHITECT
ARCHITECT
ARCHITECT
• Seasoned software technologist –makes effective design trade-offs, lays technical foundation
• Works with dev team on design
• Owns short-term and long-term technology roadmap
• Understands the vision, and writes requirements
• Understands domain, specific customers/users, competitors, etc
• Detail oriented, analytical
• Defines scope of each iteration/release, owns QA
PRODUCT MGR
QA
PRODUCT OWNER Can be Offshore/ Remote
Needs to be close to customers
Confidential
www.synerzip.com
Strive For Stable Teams• As far as possible, keep your software team
stable• Don’t stop and start teams
– High churn has huge negative impact– It is better to have a smaller team, but stable– Real IP is in the heads of team members, no
amount of documentation can replace it• Agile is all about team
– Software development is a team sport– Accountability at team level
Confidential
www.synerzip.com
Avoid Feature Bloat• Pay a lot of attention to
“what features to build”• More is not always
good, often less is better
• Be disciplined about…– Which features to build– Makes features usable– Routinely “refactor”
features – usage data driven
Confidential
www.synerzip.com
Bug Free Software?• There is no such thing as “bug free”
software?• Plan for proper test/QA process and
capacity– In very early stages, market feedback is more
important than software quality– In later stages, software quality is far more
important than pace of new features• Plan (invest) for automated QA
Confidential
www.synerzip.com
Software is Never “Done”• If you have users, software will keep evolving• Bugs will keep showing up• Current customers will keep asking for new features• New customers will demand new features• Performance will need to be enhanced • Technology will keep evolving, requiring you to
keep up • You should actively refactor code, improve usability
on a regular basis• So, plan for an on-going, stable engineering team
Confidential
www.synerzip.comConfidential
Topics for Discussion1. Lifecycle of a technology start-up2. Realities of software development3. Key decision points 4. Summary
www.synerzip.com
Key Decisions
Confidential
Is software the core
value prop?
Is software a
significant value? NO
Start
Build initial software version
Acquire initial customers
Need to expand team?
YES
Have CTO as co-
founder?
Build small local team
YES
YES
NO
Continue customer acquisition
Can find & attract talent
locally?
YES
Have sufficient capital?
YES
Expand locally
YES
Consider offshore/
outsourcing
NO
NO
Consider outsourcing
NO
Find one
NO
www.synerzip.com
Why Outsource/offshore?1. Capital constrained2. Need to accelerate product roadmap
a. Faster team ramp-upb. Use time-zone to your advantage, 24x7
3. Don’t have needed skills (Agile process or specific technologies) in-house
4. Required talent difficult to hire locally5. Peaks & valleys in your need, e.g. QA
Confidential
www.synerzip.com
When Outsourcing…• Look for a “partner”, rather than a “vendor”
– Trust based, collaborative partnership– Specific skills, good software development process– Longer term relationship– Stable teams
• Be very careful of paying dev partner with equity– Raise capital from professional investors, e.g. VCs– For software development, engage with a professional
software dev company• Maintain ownership of your IP
Confidential
www.synerzip.comConfidential
Topics for Discussion1. Lifecycle of a technology start-up2. Realities of software development3. Key decision points 4. Summary
www.synerzip.com
Summary1. Building enterprise software is complex
undertaking, plan appropriately2. In almost all cases, follow Agile3. When outsourcing, still maintain leadership
in-house– Product vision and roadmap– Software architecture/engineering leadership
4. Software is actually never “Done” – plan for ongoing burn-rate in your financials
Confidential
www.synerzip.comConfidential
Appendix
www.synerzip.com
Important Considerations1. Serving a customer vs. target market2. A common product (code base) vs. many customized
versions in the field3. Technical Debt – keep it visible, exercise discretion in
incurring it4. Pay attention to team-mix
a. Balanced team, covering all roles explicitlyb. Small, dedicated team is much better than a large team of
contractors/part-timers
5. DevOps – invest in dev/test infrastructure for continuous delivery, test & build automation, etc.
6. Strive to build less code, delivery more value
Confidential
www.synerzip.com
Basic Hygiene For SW Dev1. Requirements need to be written.2. Each requirement should be accompanied by an
acceptance test case. In fact, acceptance test case is more important than English prose format of requirements.
3. Use ONE issue tracking system. Everybody looks at the same system. No spreadsheets.
4. Source code control system – needs to be ONE.
Confidential
www.synerzip.com
Tools and Processes• Requirement Analysis
– User Story Detailing– Effort Estimation and Commitment– Requirement/Functionality validation: POCs
• Development– Processes: Code Reviews, Frequent Check-ins; Code Branching and
Merge synchronized with sprint demos• Source Code Control and Build Tools Used: CVS, SVN, GIT• Other Tools used: Jprofiler, JMeter
– Continuous Build Automation: Daily Builds and periodic automated deployment
• Tools Used: Ant, Maven, Cruise Control, Hudson, LuntBuild
– Coding efficiency: Predictability based on sprint commitments using team velocity established over first 2-3 sprints
Confidential
www.synerzip.com
Tools and Processes• Development (contd.)
– Unit Testing: sprint deliverables are Unit Tested• Tools: Junit
• Testing– Process: Work in-step with developers and create test cases
– Regression Testing: incremental development of the suite, executing towards end of each sprint
– Bug tracking tools: Bugzilla, JIRA – Test Case Management Tools: TestLink, Test Director
– Test Automation: we recommend adding a small team of automation engineers to automate the regression test suite.
Confidential
www.synerzip.com
Tools and Processes• Deployment
– UAT: maintain UAT environment; Define and develop UAT test suite by identifying specific end to end tests
– UAT deployment: planned and periodic
– Bug Scrubs: Regular bug review and re-prioritization
• Progress Tracking: – Tracking: Daily Updates to Issue tracker, Weekly Status Reports
– Issue tracking tools: JIRA(with grasshopper plug-in), Rally
• Communication: – Conference calls: at the frequency required (daily…weekly)
– Wiki: Maintaining a document repository
Confidential
www.synerzip.comConfidential
Contact Us – Austin, Dallas, San Jose
• Hemant Elhence (Dallas, TX)
– [email protected]– Office: 469.322.0349– Mobile: 214.762.4873
• Subu Sankara (San Jose, CA)
– [email protected]– Mobile: 510.579.9673
• www.synerzip.com• Development center in Pune, India