1. What Do You Do When
Agile Is Too Slow?
{doug.thomas@pokitdok.com} @douglascthomas
2. Doug Thomas
Software engineer for less than 20 years
Work Environments:
Start ups
Large corporations and financial institutions
Government contractors
Certified:
PSP
CMMi
IEEE
Scrum Master
Crazy
3. A start up is like jumping out of
a airplane without a
parachute, not knowing what
the parachute is, but figuring it
out and building it on the way
down, and then landing safely.
4. Software Engineering Process In a
Start Up Environment
You have to know the rules before you can break
them
Finding the minimal viable process
6. Waterfall
Pros
One of the first attempts to bring engineering principles into
software development
Big Design Up Front
Cons
People have no idea what they want
Implementation limitations affect design
7. Spiral Model
Pros
Iterative prototyping
Brings in Risk Management
Cost estimation becomes easier
Cons
Suited for large projects
Iterations lasts from 6 months to 2 years
8. Rational Unified Process (RUP)
Pros
Iterative
Combines best practices with a structured method
Cons
Overly structured method
Process heavy
9. Personal Software Process (PSP)
Pros
Focuses on removing estimation biases and reducing defects by
applying statistics to your software development method
Continuous improvement at a personal level
Cons
Tedious timekeeping
Poor tool support
Geared to mid-range developers (5-10 years experience)
10. Capability Maturity Model (CMMi)
Pros
Provides detailed standards and best practices for all Process
Areas in the software development lifecycle
Very rigorous
Works well in a government contracting environment
Cons
Process heavy? It depends
Institutionalization
11. Agile Manifesto
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
12. Scrum
Pros
Quick iteration cycles let you fail early
Daily standup lets everyone know what’s up
Developer’s are empowered
Cons
Proscribed meetings take up a significant fraction of the overall
lifecycle time
Tracking stories, tasks and burn down takes time, or why the
Scrum Master should NOT be a developer
13. Cowboy Coding
Pros
Free-form working environment encourages
experimentation, learning, and free distribution of results
Developers are responsible for removing roadblocks
Small projects may be burdened by heavy software management
methodologies
Cons
Lack of release structure
Inexperienced developers (hackers)
Uncertain design requirements
Incompleteness
15. Requirements
Communication
Campfire
Skype
Google Hangouts
Requirements Management
Trac
Basecamp
JIRA
16. Analysis and Design
Design documentation
Big ass whiteboards
Mobile phone camera
Campfire
17. Implementation
Code
Lightweight frameworks
Everything is a draft
Ship it
Code Reviews
You are not your code
Pull requests
Campfire, Skype
Zero Overhead Principle
18. Verification
Test Driven Design
Unit tests
Nose
UI tests
Selenium
On-demand live testers
uTest
“With SAGE, we were faced with programs that were too large for one person to grasp entirely and also with the need to hire and train large numbers of people to become programmers—after all, there were only a handful of trained programmers in the whole world. We were faced with organizing and managing a whole new art.”Production of Large Computer Programs, Herbert D. Bennington (Navy Mathematical Computing Advisory Panel and the Office of Naval Research in June 1956)“Many of the [system's] details only become known to us as we progress in the [system's] implementation. Some of the things that we learn invalidate our design and we must backtrack.”A Rational Design Process: How and Why to Fake It, David Parnas
Starting at the center, each turn around the spiral goes through several task regions:Determine the objectives, alternatives, and constraints on the new iteration.Evaluate alternatives and identify and resolve risk issues.Develop and verify the product for this iteration.Plan the next iteration.A Spiral Model of Software Development and Enhancement. Barry Boehm (1986)
Six Best PracticesDevelop iterativelyManage requirementsUse componentsModel visuallyVerify qualityControl changesFour Project Life cycle PhasesInception PhaseElaboration PhaseConstruction PhaseTransition PhaseGrady Booch, Ivar Jacobson, Jim Rumaugh
The PSP was created by Watts Humphrey to apply the underlying principles of the Software Engineering Institute’s (SEI) Capability Maturity Model (CMM) to the software development practices of a single developer.The PSP aims to provide software engineers with disciplined methods for improving personal software development processes. The PSP helps software engineers to:Improve their estimating and planning skills.Make commitments they can keep.Manage the quality of their projects.Reduce the number of defects in their work.
The Capability Maturity Model was originally developed as a tool for objectively assessing the ability of government contractors' processes to perform a contracted software project. The model is based on the process maturity framework first described in the 1989 book Managing the Software Process by Watts Humphrey.In the 1980s, several US military projects involving software subcontractors ran over-budget and were completed far later than planned, if at all. In an effort to determine why this was occurring, the United States Air Force funded a study at the SEI.Initial (chaotic, ad hoc, individual heroics) - the starting point for use of a new or undocumented repeat process.Repeatable - the process is at least documented sufficiently such that repeating the same steps may be attempted.Defined - the process is defined/confirmed as a standard business process, and decomposed to levels 0, 1 and 2 (the latter being Work Instructions).Managed - the process is quantitatively managed in accordance with agreed-upon metrics.Optimizing - process management includes deliberate process optimization/improvement.
We are uncovering better ways of developingsoftware by doing it and helping others do it.Through this work we have come to value:Individuals and interactions over processes and toolsWorking software over comprehensive documentationCustomer collaboration over contract negotiationResponding to change over following a planThat is, while there is value in the items onthe right, we value the items on the left more.
In 1986, Hirotaka Takeuchi and IkujiroNonaka described a new approach to commercial product development that would increase speed and flexibility, based on case studies from manufacturing firms in the automotive, photocopier and printer industries.[4] They called this the holistic or rugby approach, as the whole process is performed by one cross-functional team across multiple overlapping phases, where the team "tries to go the distance as a unit, passing the ball back and forth”In 1995, Jeff Sutherland and Ken Schwaber jointly presented a paper describing the Scrum methodology at the Business Object Design and Implementation Workshop held as part of OOPSLA ’95 in Austin, Texas, its first public presentation.[6] Schwaber and Sutherland collaborated during the following years to merge the above writings, their experiences, and industry best practices into what is now known as Scrum.
LightweightFrameworks in GitHub
We were usingRightScale Framework which uses ChefJenkins!