Software Development: Agile, Team Size and Dynamics

I’ve long ranted about Amazon’s 2-Pizza Team, which is defined as the following: a team where the team size is no larger than 2 pizzas can feed. Amazon realized early on that in order to cut software development time, the solution was *NOT* to put more people on the project. What is required is a team, where the roles are defined and each member has the right skill for that role, and following a lean, agile, method — all focused on the customer.

Agile Methodology

Agile is a response to the well known issues in software development: rigid planning and nazi-like fidelity to original software requirements leads to customer needs not being met. Bottom line — software development is hard and things change. No prior methodologies focused on adaptation and customer needs, so Agile was created by several notable software gurus.

Alistair Cockburn, one of the Agile Authors explains Agile this way:

* individuals and interactions over processes and tools,

* working software over comprehensive documentation,

* customer collaboration over contract negotiation, and

* responding to change over following a plan.

While we value the items on the right in this list, we value the items on the left more. Processes, tools, documentation, contracts, and plans are useful. But when push comes to shove—and it usually does—something must give, and we need to be clear about what stays and what gives.

Relying on interactions between individuals facilitates sharing information and changing the process quickly when it needs changing. Using working software allows us to measure how fast we actually produce results and provides quick feedback. Frequent interaction between individuals compensates for minimizing documentation.

Customer collaboration means that all players—the sponsor, customer, user, and developer—are on the same team. Merging their different experiences and expertise with goodwill allows the combined group to change directions quickly so they can produce more appropriate results and less expensive designs. Contracts or project charters with the customers are necessary, but without collaboration, they are insufficient.

Working through producing a plan drives the team members to think through their project and its contingencies. The plan itself usually goes out of date within just a few days. Afterward, rather than focusing on the outdated plan, it is important to deal with the changing realities.

Some of Agile Methodology comes from the manufacturing world, specifically the Toyota Production System, but better known as Lean Manufacturing. The language of Agile has a Lean flavor, but with a software twist. I think it works well.

For me, it is equally fascinating to apply the principles of Lean to software. I’ve applied Lean in a manufacturing and operations setting at Amazon; Lean in a service or health care environment at Kaiser Permanente, in medical devices, and at other consulting projects. I’ve also developed software at Amazon and at other contractual gigs (I was on the project that was internally called “Fastrack”, which is essentially a customer receiving an order within 24 hours of ordering — have you ever thought how an order gets assigned to a fulfillment center, picked, packed, shipped and arrive at your door the next day? This order, of course, is mingled among 300,000 orders that are made daily at Amazon). I’m excited to see other innovative ways in which Lean is applied to software development and program management.

Team Size and Dynamics

At Amazon, there were six roles. If the project involved the fulfillment centers, then industrial or mechanical engineering would be part of the team; sometimes the Operations folks would be part of the team. It just depends, but there were six basic roles: Technical Program Manager, Software Development Engineer, Tester, Release Manager, Product Manager, and more Software Development Engineers.

This team model — the 2-Pizza Team — is incredibly effective at getting things done. The team size is small, interactions are often, and there was frequent circling-back to the customer’s needs and requirements.

As projects became bigger, then several 2-Pizza Teams were placed on it, but each team owning a certain portion. Interactions was also frequent between each team, though this wasn’t formalized — it just happened that way, based on my limited experience.

Software dynamics are often politically-charged, and full of waste. Have you ever experienced this scenario?

Boss: “Tell me, shmula, when do you think our project, the one with
the October deadline, will be done?”

shmula: “Honestly boss, I think it won’t be ready until November.”

Boss: “Hmmm. That’s a bad estimate, a really bad estimate. I’m
afraid that won’t do. Try again.”

shmula: “Uh, well let me see. October?”

Boss: “shmula, that’s a GOOD estimate!”

Often the problem stems from the wrong people estimating how long a software project will take. Sometimes, the experienced developers make the estimation but, more often than not, when the engineer gets under the hood, it usually takes longer than was estimated. When an engineer makes this estimation mistake, it’s expected. But non-engineers ought not be making these kinds of estimations.

Agile also responds to the above dynamic by the following:

* produce the first delivery in weeks, to achieve an early win and rapid feedback;

* invent simple solutions, so there is less to change and making those changes is easier;

* improve design quality continually, making the next story less costly to implement; and

* test constantly, for earlier, less expensive, defect detection.

Agile software development stresses quality in design. These methods are sometimes confused with ad hoc or cowboy coding because the design is done on an ongoing basis, in smaller chunks, as opposed to all at once and up front. Each agile method addresses quality in certain ways. For example, dynamic systems development methodology calls for a series of prototypes to attack unstable or unknown areas: new technology, new business rules, and user interface design. Scrum uses intense 15-minute daily meetings and comprehensive iteration reviews at the end of each 30-day iteration.

For anyone who has ever developed software or managed a software project, you know that software development is hard. Making reliable commitments and setting reasonable expectations is critical, but it must be balanced by an eye and focus on the customer’s needs. Small, quick, iterations follows the single-piece flow of lean and gets away from the batch-thinking that many American companies follow. Focusing on value (80/20 in feature set), managing the bottlenecks, and the value-stream and reducing waste at each step is critical to building quality software that meets the customer’s needs and in a timely way.

Blogged with Flock


Short URL: http://bit.ly/INyS

Share This Post:



  • Digg
  • Facebook
  • del.icio.us
  • Suggest to Techmeme via Twitter
  • StumbleUpon
  • LinkedIn
  • email

2-pizza teams (10)
3 C's (3)
5S (38)
A3 Report (9)
adoption (7)
agile/software (59)
ajax (4)
amazon (53)
apple (3)
apple iphone (7)
axiom (3)
Aza Raskin (9)
backcountry.com (2)
berlin (1)
bill gates (1)
bill marriott (1)
blog tag (1)
book reviews (4)
bullwhip effect (5)
business (394)
business plans (3)
busm361 (13)
BzzAgent (12)
call center and queueing (11)
car buying (2)
Carbonite (1)
change management (5)
chicago (1)
click fraud (1)
click-to-ship (21)
clocky (2)
colin powell (2)
community (2)
company interviews (18)
company interviews (6)
complexity (32)
costs (8)
culture (7)
customer experience (10)
customer obsession (52)
customer recovery function (1)
customer segmentation (8)
customer service (17)
design thinking (14)
digg (4)
drum-buffer-rope (38)
dublin (1)
dynamic systems (24)
eBay (6)
economics (3)
efficiency (4)
ethnography (29)
family (18)
featuritis (15)
flexibility (1)
forecasting (2)
four performance dimensions (2)
Fun With The 2×2 Matrix (1)
game theory (7)
Gemba (67)
genchi genbutsu (68)
general (135)
germany (1)
google (15)
heijunka (65)
holidays (1)
hoshin kanri (1)
how to be a human (1)
IDEO (2)
image uploading (1)
iphone (5)
ishikawa (69)
IT at Toyota (67)
just-in-time (4)
kaizen (4)
kanban (46)
law of instinct (1)
Leadership (43)
lean (165)
Lean Consumption Maps (98)
learning curve (1)
licketyship (1)
mark cuban (1)
martin luther king (1)
mary poppendieck (1)
metrics (73)
microsoft (6)
milton friedman (1)
moving average (1)
muda (68)
nba fines (1)
net promoter score (nps) (1)
obeya (39)
Off-Topic (1)
onstar (1)
operations (108)
pageviews (3)
pareto principle (39)
patent (1)
peanut butter manifesto (2)
philosophy (3)
Poka-Yoke (6)
poppendieck (3)
powerpoint sucks (2)
private equity (4)
process measures (6)
product development (20)
productivity (4)
quality (41)
quasimodal design (1)
queueing theory (41)
Raffle (1)
rational choice (2)
regression analysis (18)
respect for people (6)
root cause analysis (60)
sarah+palin (2)
seth godin (1)
simplicity principle (10)
six sigma (128)
snowboarding (2)
social media (3)
spam (1)
statistical process control (46)
strategy (46)
suburban (1)
supply chain (24)
takt time (8)
teaching (2)
team size (9)
technology (104)
the beer distribution game (1)
the profit tree (7)
The Visual Factory (11)
theory of constraints (41)
time (2)
timeline (3)
tony+hsieh (11)
toyota (75)
travel (1)
trump bankruptcy (1)
turnaround (5)
twitter (8)
uspto (1)
utah deal flow (2)
variation (69)
venture capital (1)
Visual Management (11)
waste (59)
website traffic (2)
Wing Chun (2)
wisdom of crowds (1)
wisdom teeth (1)
word-of-mouth marketing (18)
yahoo (2)
zappos.com (12)
zero defects (3)

WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.


If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

Helpful post. How does the dynamic change (or is influenced) by working within a budget? Software development and deadlines are difficult, but they still need to fit into a budget. I know you could “drop” the low priority features to stay in the budget if development hiccups occur, but…we still wanted those features!

[...] This is a testament to the Agile Method for developing software. At Amazon, we used a cowboy-scrum version which worked fine. But, I think doing things “by the book” often yields better results, provided that the method is tweaked to fit the company culture etc. [...]

[...] I was going through the Joel Reddit and after reading a very good article in the NY Times comparing development practices between Google and Yahoo, I came to another article talking about lean software development. As one that makes software and one that actually read (half) a book on the Toyota Production Method, the word “lean” triggers my interest when in the context of making products. [...]

[...] does this mean from an SDP delivery team perspective? For anyone who has worked on a front-office project, the concept of moving forwards will not be [...]

Leave a comment

(required)

(required)


Additional comments powered by BackType