80 likes | 101 Views
Explore the complexities of team dynamics and organization in software design, including principles for group selection, communication strategies, and code review practices. Learn how to enhance team performance and adapt to varying individual strengths and weaknesses.
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