540 likes | 656 Views
Lecture 4 Teams. CSCI – 3250 Software Engineering I Spring 2014 Bill Pine. Lecture Overview. Introduction Divisibility and Brooks’ Law Characteristics of a Good Team Member Effective Groups Consensus Taking Group Organizations. Introduction .
E N D
Lecture 4Teams CSCI – 3250 Software Engineering I Spring 2014 Bill Pine
Lecture Overview • Introduction • Divisibility and Brooks’ Law • Characteristics of a Good Team Member • Effective Groups • Consensus Taking • Group Organizations CSCI 3250
Introduction • Assigned Reading: Braude and Bernstein, Chapters 7 • Large products are the norm • Just adding developers is no solution • What is needed • Structure for management and control • The result? • Technical staff structure + management structure CSCI 3250
An Example • Suppose that you have a project • Estimated effort = 1 man-year • Estimated schedule = 2 people for 6 months • Customer says must be completed within 3 months • The answer is obvious • Bring 4 developers on the project CSCI 3250
An Example (cont) • Or is it obvious? • Without management, planning, control • Will likely take longer than 6 months rather than the desired 3 months • Will likely be of lower quality CSCI 3250
Divisibility of Effort • Consider two extremes of divisibility • If 1 man can pick a patch of strawberries in 5 days, 5 men can pick the same field in 1 day • If it takes a woman 9 months to produce a baby, 9 women cannot produce a baby in 1 month • Divisibility of effort in software development • Unlike baby production • It is possible to divide the effort • Unlike strawberry picking • Team members must interact in complex and meaningful ways, limiting the gains from divisibility CSCI 3250
Brooks’ Law • Suppose we have a project that is running a little behind schedule, what to do? • Add some more developers? • An opposing view Adding additional programming personnel to a team when the product is late has the effect of making the product even later – Frederick Brooks CSCI 3250
Software Divisibility • Suppose we need to code two classes, classB and classG, and have programmers: Burf and Ginger • What can go wrong? • Burf and Ginger code the same class • Burf codes classB and Ginger codes classG • classB uses classG, Burf invokes a method of classG • Wrong number of parameter • Wrong order to parameters • Wrong type of parameters CSCI 3250
Divisibility (cont) • The issue isn’t that Burf is an incompetent dweeb (although he may be) • The issues are planning, design, design specification, management, and communications • The successful software development organization • Provides effective support these issues CSCI 3250
Communications • A large number of project failures can be traced to poor communications • Anyone remember the three modes of project failure? • Cost of communications can be high • Communication is required in all project workflows CSCI 3250
Communication Paths • Consider a 6-member team • Total of 15 communications paths CSCI 3250
Communications Paths (cont) • The number of communications paths between n team members is n*(n-1) / 2 • Evaluate for a few values of n CSCI 3250
Communications Paths (cont) • For even a moderate group size of 50 people • With unconstrained communications • Chaos rules the project • The solution? • Provide a structured setting within which communications occurs • The structure will be chosen appropriate to the project and type of communication CSCI 3250
Why Do We Need Structure? • Groups will be a mixture of personality types, work styles and goals • The interaction within the mixture can lead to • Interpersonal strife • Wasted or duplicated effort • Loss of productivity • Group collapse • Guidelines are needed to address the issue of group dynamics CSCI 3250
A Few Observations on Effective Teams • Team work is important to produce a effective and efficient effort • Because of group dynamics, • The most effective team is not necessarily the most talented team • Effective teams are cohesive teams • Effective teams communicate efficiently • In particular, • Have focused, effective team meetings CSCI 3250
Team Exercise • What is the purpose of team meetings? • Why do you need an agenda? • Why are meeting notes essential? CSCI 3250
Characteristics of a Good Team Member • Accepts his share of responsibility • Does quality work in a timely fashion • Regularly attends team meetings • Listens to and respects opinions of other team members • Committed to team success • The bottom line • Is someone you would like to have on a future team CSCI 3250
Evaluation • Evaluate yourself and your teammates one a scale of 1 – 5 for each of the previous characteristics CSCI 3250
Ground Rules for Effective Groups • Point out assumptions, inferences, and question the rationale • Agree on common definition of important terms • Share all relevant information • Be specific, provide examples not just generalities • Focus on issues, not a pre-conceived position • If you disagree, disagree openly CSCI 3250
Ground Rules (cont) • Invite questions • Keep discussion focused • No “ad hominem” attacks • Participate actively • Perform self and group assessments, periodically • Take decisions by consensus • When appropriate CSCI 3250
Consensus Decisions • Consensus • A general agreement that is perceived as workable • Reflect common thinking of the group • All group members can accept and support • Universal support • Accepted without opposition or reservation • Produce mutual satisfaction CSCI 3250
Consensus Decisions Are Not • Majority rule • The opinion held by the strongest personality in the group • Morally or ethically objectionable to any member of the group CSCI 3250
When to Take a Consensus Decision • To determine operating ground rules • Resolve group conflicts • Identifying a problem • Analyzing the source of a problem • If the decision will have a major impact • To develop at a new goal or direction • To obtain group commitment to a new goal or direction CSCI 3250
How To Reach Consensus • Actively seek opinion of all before taking the decision • Identify all underlying assumptions • Consider all opinions before pushing your own • Don’t change your mind just to avoid conflict • Avoid “cop-out” decisions produced by • Vote • Coin toss • Averaging • Bargaining • Do not assume win/lose is the inevitable outcome CSCI 3250
Group Organization • Structures ranging from • A strict hierarchy, called the cathedral model • To • A dynamic collection of people, called the bazaar model • When viewed in terms of centralized “command and control” CSCI 3250
Group Organization (cont) • Bazaar Model • Decentralized control • Pure Democratic Team • Cathedral Model • Centralized control • Classic Chief Programmer Team CSCI 3250
Pure Democratic Model • The foundation for the pure democratic team is “egoless programming” • Egoless programming a term first coined by Gerald Weinberg in 1971 • Ego – Impedes the detection and removal of faults • Many programmers are attached to their code • See the code as an extension of themselves • With such an attachment • Programmers have a disincentive to try to find errors in their code CSCI 3250
Pure Democratic Model (cont) • Weinberg’s solution: Restructure the programming culture • Faults are recognized as an inevitable side effect of the process • The code belongs to the group and not the individual • To increase the quality of the code, each programmer encourages other programmers to find faults in his code • The other programmers welcome the opportunity to improve the code, not denigrate the original programmer • The focus is team identity and reputation CSCI 3250
Pure Democratic Model (cont) • Pure democratic team has • No single leader • Maximum size of approximately 10 people • Mutual respect, with all members working toward a common goal • Advantages • A great attitude toward fault removal • Are generally very productive • Works best when the project is very difficult CSCI 3250
Pure Democratic Model (cont) • Disadvantages • Upper organizational management has a hard time dealing with a pure democratic team • Requires that the team members be of roughly equal experience • Experienced programmers generally resent their code being inspected by “newbies” • Issue of communications paths CSCI 3250
Classic Chief Programmer Team • For the same team size • Only 5 comm. paths • At what expense? • The Chief Programmer is the focus, (read bottleneck) • Key aspects • Specialization • Hierarchy CSCI 3250
Chief Programmer • Successful manager and highly-skilled programmer • Performs the architectural design • Allocates coding among the team members • Writes the critical (or complex) sections of code • Handles all the interfacing issues • Reviews the work of the other team members • Is personally responsible for every line of code CSCI 3250
Backup Programmer • Necessary only because the chief programmer is human • The back-up programmer must be as competent as the chief programmer, in every way • Must know as much about the project as the chief programmer • Responsible for test case planning and other tasks, independent of the design process CSCI 3250
Programming Secretary • A highly skilled, well paid, central member of the chief programmer team • Responsible for maintaining the program production library (documentation of project), including: • Source code listings • JCL • Test data • Programmers hand their source code to the secretary who is responsible for: • Conversion to machine-readable form, • Compilation, linking, loading, execution, and running test cases • This is 1971, remember! CSCI 3250
Programmers • Do nothing but program • Write code only, no code or data entry • All other aspects are handled by the programming secretary CSCI 3250
The New York Times Project • Chief programmer—F. Terry Baker • Why is this relevant? • Project in Brief • To automate the clippings data bank (“morgue“) of TheNew York Times • 1971 • IBM • Showcase project of PL/I CSCI 3250
Times Project (cont) • 83,000 source lines of code (SLOC) • 22 calendar months • 11 man-years • At end of year one, only the file maintenance system had been written (12,000 SLOC – 14%) • Most of the code was written in the last 6 months • 21 faults • Detected in the first 5 weeks of acceptance testing • 25 additional faults • Detected in the first year of operation CSCI 3250
Times Project (cont) • The file maintenance system • Delivered 1 week after coding was completed • Operated 20 months before a single failure occurred • Almost half the subprograms • Were correct at first compilation • 200 to 400 lines of PL/I • Principal programmers averaged • One detected fault • 10,000 LOC per man-year CSCI 3250
Times Project (cont) • But, after this fantastic success • No comparable claims for chief programmer team concept have been made CSCI 3250
Why So Successful? • First and foremost - F. Terry Baker • Super programmer • Superb manager and leader • His skills, enthusiasm, and personality “carried” the project CSCI 3250
Why So Successful? (continued) • Second - a prestige project for IBM • First real trial for PL/I (developed by IBM) • IBM used its best people • Third - IBM provided strong technical backup • PL/I compiler writers were available to help the programmers • JCL experts assisted with the job control language • Fourth • See First CSCI 3250
Disadvantages of Chief Programmer Team • Chief programmer must be a highly skilled programmer and a successful manager • Highly skilled programmers are rare • Successful managers are rare • The skill sets of highly skilled programmers and highly skilled managers are so different that finding an individual with both sets is highly improbable • Back-up programmer must be as good as the chief programmer • But he must take a back seat (and a lower salary) waiting for something to happen to the chief programmer • Top programmers, top managers will not do that • Programming secretary does paperwork all day • Software professionals as a general rule, hate paperwork CSCI 3250
What To Do? • Pure Democratic or Hierarchical Structure • Neither organizational extreme is well suited for today’s large projects • Chaos will surely result if you try to implement a Pure Democratic Team for 100 members • Anyone think of an exception? • A single Chief Programmer is not capable of managing a team of 100 members • Not even F. Terry Baker CSCI 3250
What To Do? (cont) • Modern team organizations fall between the two extremes, attempting to meld the best features of both • One person cannot be personally responsible for each line of code • Use code reviews and code walkthroughs to move toward egoless programming • The Chief Programmer is responsible for the code • Must be present at the reviews and walkthroughs • Butthe Chief Programmer is also a manager, and • Must not be present at the reviews and walkthroughs CSCI 3250
What To Do? (cont) • Solution • Reduce the management responsibilities of the Chief Programmer and create a new management position responsible for non-technical management • Non-technical Management Responsibilities • Budgetary issues, • Legal issues, and • Performance appraisal • Good idea, since it is very difficult to find a single individual who is both an excellent manager and programmer CSCI 3250
What To Do? (cont) • What about larger projects? • Create a hierarchy of authority • A technical project manager over the project as a whole, with several team leaders CSCI 3250
What To Do? (cont) • Decentralize the decision-making process where appropriate • Useful where the democratic team is effective CSCI 3250
Corporate Structures • Three models for corporate organization • Functional Organization • Project-based organization • Matrix organization CSCI 3250
Functional Organization • Individuals are grouped by specialty into departments • Department of analysis • Department of designers • Programming department • … • Departments correspond to the core workflows of the process model the organization is using • The project is “passed from department to department” • Few individuals are involved throughout the project • Appropriate only for well defined projects where the number of changes is expected to be small CSCI 3250
Project-based Organization • Individuals are assigned to a project for the life of the project • Can be difficult to hold good people • Better able to handle change • Why? CSCI 3250