synerzip agile software development

33
www.synerzip.com Building Enterprise Class Software March 2014 A Guide to Early Stage Technology Companies

Upload: synerzip

Post on 13-Apr-2017

234 views

Category:

Software


6 download

TRANSCRIPT

Page 1: Synerzip Agile Software Development

www.synerzip.com

Building Enterprise Class Software

March 2014

A Guide to Early Stage Technology Companies

Page 2: Synerzip Agile Software Development

www.synerzip.comConfidential

Topics for Discussion1. Lifecycle of a software start-up2. Realities of software development3. Key decision points 4. Summary

Page 3: Synerzip Agile Software Development

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

Page 4: Synerzip Agile Software Development

www.synerzip.comConfidential

Topics for Discussion1. Lifecycle of a technology start-up2. Realities of software development3. Key decision points 4. Summary

Page 5: Synerzip Agile Software Development

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

Page 6: Synerzip Agile Software Development

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

Page 7: Synerzip Agile Software Development

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

Page 8: Synerzip Agile Software Development

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

Page 9: Synerzip Agile Software Development

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

Page 10: Synerzip Agile Software Development

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

Page 11: Synerzip Agile Software Development

www.synerzip.com

Agile Development Cycles

Confidential

Page 12: Synerzip Agile Software Development

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.”

Page 13: Synerzip Agile Software Development

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

Page 14: Synerzip Agile Software Development

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

Page 15: Synerzip Agile Software Development

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

Page 16: Synerzip Agile Software Development

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

Page 17: Synerzip Agile Software Development

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

Page 18: Synerzip Agile Software Development

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

Page 19: Synerzip Agile Software Development

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

Page 20: Synerzip Agile Software Development

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

Page 21: Synerzip Agile Software Development

www.synerzip.comConfidential

Topics for Discussion1. Lifecycle of a technology start-up2. Realities of software development3. Key decision points 4. Summary

Page 22: Synerzip Agile Software Development

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

Page 23: Synerzip Agile Software Development

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

Page 24: Synerzip Agile Software Development

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

Page 25: Synerzip Agile Software Development

www.synerzip.comConfidential

Topics for Discussion1. Lifecycle of a technology start-up2. Realities of software development3. Key decision points 4. Summary

Page 26: Synerzip Agile Software Development

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

Page 27: Synerzip Agile Software Development

www.synerzip.comConfidential

Appendix

Page 28: Synerzip Agile Software Development

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

Page 29: Synerzip Agile Software Development

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

Page 30: Synerzip Agile Software Development

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

Page 31: Synerzip Agile Software Development

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

Page 32: Synerzip Agile Software Development

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

Page 33: Synerzip Agile Software Development

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