80 likes | 89 Views
CSE 350 - Software Design and Engineering. Jonathan M. Smith http://www.cis.upenn.edu/~jms 1/30/2001. Groups (review):. One “superprogrammer” not enough - complexity too high Reasons of specialization, redundancy Principles for selecting groups, their task and their structure
E N D
CSE 350 - Software Design and Engineering Jonathan M. Smith http://www.cis.upenn.edu/~jms 1/30/2001
Groups (review): • One “superprogrammer” not enough - complexity too high • Reasons of specialization, redundancy • Principles for selecting groups, their task and their structure • Last week looked at “Chief Progrommer Team” model of Brooks
“Psychology of Computer Programming” - Weinberg • Covers different issues than Brooks • Particular focus on the individual programmer and use of the group • Encourages communication - use informal communication / code reviews • “Loose” where CPTs are “stiff” • Importance of coffee machine :-)
Factors affecting team life & performance • Variation in individual strengths / wkns • Way goals are set • Structure of program being built • Leadership structure imposed on team • Gender and attitudes (book is dated…) • Communication team<->outside • Technical (in?)competence of leader
Code Review & “Egoless Programming” • Members of the group meet • Goal is to carefully review a piece of code • This is done collaboratively • Good way for senior programmers to advise junior programmers • Good way for junior programmers to learn
Code reviews address some weaknesses of CPT model • CPT assumed right people in right job - CR does not • Weinberg’s model is democratic, not hierarchical • Adaptive to skills, varying interests, etc. • Informal dynamic hierarchy
What about groups of groups? • “The Programming Project” (Ch. 6) • Stability Through Change • Measuring Performance (note Reporting is NOT Measuring!) • Useful feedback accelerates learning (but doesn’t happen for a variety of reasons) • Lines of control == reporting???
Virtues of approach • Reflects “natural” group behavior • Adaptive to interests/skills • Really benefits “newbies” • Adaptive to programming task • Weakness is “looseness” - challenge to manage - and hence for management to appreciate