The Importance of Team Skills for Software Development

The Importance of Team Skills for Software Development

The Importance of Team Skills for Software Development by Carolyn Tanya Wick B.Sc., SIMON FRASER UNIVERSITY, 1995 A thesis submitted in partial fulfdment of the requirements for the degree of Master of Science IN THE FACULTY OF GRADUATE STUDIES DEPARTMENT OF COMPUTER SCIENCE We accept this thesis as conforming to the required standard: THE UNIVERSITY OF BRITISH COLUMBIA Vancouver, Canada December 1998 Copyright © 1998, Carolyn Tanya Wick In presenting this thesis in partial fulfilment of the requirements for an advanced degree at the University of British Columbia, I agree that the Library shall make it freely available for reference and study. I further agree that permission for extensive copying of this thesis for scholarly purpose may be granted by the head of my department or by his or her representatives. It is understood that copying or publication of this thesis in whole or in part for financial gain shall not be allowed without my written permission. THESIS TITLE: THE IMPORTANCE OF TEAM SKILLS FOR SOFTWARE DEVELOPMENT DEPARTMENT OF COMPUTER SCIENCE THE UNIVERSITY OF BRITISH COLUMBIA 2366 MAIN MALL VANCOUVER, BC, CANADA V6T 1Z4 Abstract Software does not just happen - it must be engineered systematically through the collaboration of individuals with necessary software development skills and appropriate tools. Similarly, effective software teams do not just happen - they too are built over time through the collaboration of individuals with appropriate team skills, tools and resources. This thesis outlines the need for superior software teams, reviews the literature on team performance and argues that a practical way to begin improving the effectiveness of software teams is in training software engineers in the skills necessary for effective teamwork. A list of fundamental skills for software development is presented, including skills for team leaders interested in building effective software teams, and general-purpose team skills benefiting all software team members. The most important team skills for software development are described in detail, including: project management skills, meeting skills, asynchronous communication skills, interaction skills, conflict management skills, group problem-solving and decision-making skills, skills for understanding the user or customer, team-building skills, leadership, and process awareness. The thesis concludes with a case study of an undergraduate software engineering team project course, in which several initiatives were taken to observe the performance of software teams and to learn more about teaching team skills to software engineers. Some special skills needed for effectively teaching team skills are identified, and recommendations are offered to educators for modifying the undergraduate software engineering curriculum, as well as to software professionals in industry for engineering their own effective software teams. The Importance of Team Skills for Software Development - by Carolyn Wick it Table of Contents ABSTRACT ii TABLE OF CONTENTS itt LIST OF TABLES vi LIST OF FIGURES . vii ACKNOWLEDGEMENTS '. viii CHAPTER i INTRODUCTION •. 1 1.1 DEFINITIONS ..' : •.•:.[.:..-. 2 /././ .Team 2 1.1.2 Software team >;'. 2 1.1.3 Software team skills 2 1.2 THE ROLE OF TEAM SKILLS IN SOFTWARE DEVELOPMENT :...3 1.3 IS THERE A SHORTAGE OF TEAM SKILLS IN THE SOFTWARE INDUSTRY? 7 1.4 THE IMPORTANCE OF IMPROVING SOFTWARE TEAMS 8 1.5 THESIS OVERVIEW 11 CHAPTER 2 TEAM PERFORMANCE .14 2.1 QUALIFYING TEAM EFFECTIVENESS '. 15 2.2 FACTORS THAT INFLUENCE TEAM EFFECTIVENESS 16 2.2.J Life Cycle Factors 18 Forming 18 Storming 19 . Norming 19 Performing 20 Adjourning 20 2.2.2 Composition Factors 21 Competencies 21 Status... 23 The Importance of Team Skills for Software Development - by Carolyn. Wick iii Heterogeneity 24 Team size 24 2.2.3 Challenge Factors 26 A clear and common purpose ; 26 Motivation 26 Attainable goals 27 Interdependency 28 2.2.4 Context Factors 28 The physical work setting 2S The performance evaluation and reward system 29 Other factors 30 2.2.5 Cohesiveness Factors 30 2.2.6 Conduct Factors 32 Underlying operational and teamwork processes 33 Best and worst software development practices 33 Process improvement 35 Process awareness 35 Flexibility • 36 Organizational memory 37 . 2.3 : SUMMARY OF SKILLS FOR SOFTWARE TEAM LEADERS 37 CHAPTER 3 SKILLS FOR SOFTWARE TEAM MEMBERS 39 3.1 • . CANDIDATE SKILLS = 39 3.2 GENERAL-PURPOSE TEAM SKILLS FOR SOFTWARE DEVELOPMENT 42 3.2.1 Project management skills 42 3.2.2 Meeting skills 44 3.2.3 Asynchronous communication skills 47 3.2.4 Interaction skills 50 3.2.5 Conflict management skills -52 3.2.6 Group problem-solving and decision-making skills 55 3.2.7 Team-building skills 58 3.2.8 Skills for understanding the user or customer • 59 3.2.9 Process awareness 59 3.2.10 Leadership skills 60 3.2.11 Other skills : 60 CHAPTER 4 TEACHING TEAM SKILLS 62 4.1 HOW SHOULD TEAM SKILLS BE TAUGHT? 62 4.1.1 Integrate practice, theory, monitoring and assessment 63 4.1.2 Create a context to support effectiveness 65 4.1.3 Promote mastery 66 The Importance of Team Skills for Software Development - hy Carolyn Wick iv 4.1.4 Expect Imperfection 68 4.1.5 Teach to the culture 68 4.2 CAN PEOPLE LEARN TEAM SKILLS FROM AN INEFFECTIVE TEAM EXPERIENCE? ,.69 4.3 OTHER SKILLS FOR EDUCATORS AND TRAINERS 71 CHAPTER 5 CASE STUDY: SOFTWARE TEAMS IN CPSC 319 72 5.1 OVERVIEW OF HOW TEAM SKILLS WERE PREVIOUSLY TAUGHT 73 5.2 TEAM SKILLS TAUGHT IN 1996-97 74 5.3 OBSERVATIONS ON THE TEACHING OF TEAM SKILLS 77 5.3.1 Evidence of the need for team skills • 78 5.3.2 Students learned what we taught 79 5.3.3 . Prior team experience cannot be assumed 80 5.3.4 Teams were too big 81 5.3.5 The Hawthorne Effect 82 5.4 NEW UNDERSTANDINGS OF SOFTWARE TEAM PERFORMANCE 83 5.4.1 On the effect of giving teams more freedom 83 • 5.4.2 How does involving representative users affect the performance of software teams? 84 5.4.3 What is the predominant software development personality? '. 87 The stereotype 87 The survey 87 The results • 89 The implications 90 5.5 RECOMMENDATIONS FOR CPSC 319 92 CHAPTER 6 CONCLUSIONS 98 BIBLIOGRAPHY 102 APPENDIX I: STRUCTURE OF UBC'S CPSC 319 (1996-97) 109 Demographics 109 Co-requisite course HO Length of course and workload 110 Staffing HO The process for assigning students to teams • Ul Grading Scheme Ul APPENDIX II: SELECTED STUDENT FEEDBACK 112 APPENDIX III: TRAINING RESOURCES 129 The Importance of Team Skills for Software Development - by Carolyn Wick v List of Tables Table 1. Software tasks that benefit from teamwork 3 Table 2. McConnell's List of Best Practices for Rapid Development (1996) 34 Table 3. The Airlie Software Council's "Project Caveats" of Worst Practices (1995) 34 Table 4. Summary of the factors contributing to team effectiveness 38 Table 5. The Meeting Basics: Strategies for efficient and productive meetings 45 Table 6. Guidelines for effective electronic asynchronous group communication 49 Table 7. Functional roles of communication in group interaction 51 Table 8. Procedures for teams 57 Table 9. Integrative problem solving process 57 Table 10. Rules of brainstorming 57 Table 11. Initiatives for teaching software team skills in CPSC 319 (1996-97) 76 The Importance of Team Skills for Software Development - by Carolyn Wick vi List of Figures Figure 1. Software projects involve both operational and teamwork subtasks, processes and skills 4 Figure 2. The "C"-crets to Success: Six key areas influencing team effectiveness 17 Figure 3. Stages of team development.. 18 Figure 4. Competencies that members bring to a team 1...: 22 Figure 5. Important skills for software team members 41 Figure 6. Two-dimensional model for choosing appropriate conflict behaviour 54 r Figure 7. The experiential learn ing cycle 64 Figure 8. Personality preferences recorded by students in CPSC 319 (February 25, 1997) 89 Figure 9. Proportion of introverts to extra verts in CPSC 319 vs. in the population 90 Figure 10. Problem-solving styles in CPSC 319 vs. in the Western Population 92 Figure 11. Future research in software team engineering will be inherently interdisciplinary 100 The Importance of Team Skills for Software Development - by Carolyn Wick vii Acknowledgements I would like to acknowledge both of my supervisors: Dr. Kellogg S. Booth, particularly for giving me so much freedom in pursuing my interest in software team processes, and Dr. Jeff Joyce, for ideas, inspiration and editorial assistance in focusing my topic for both academia and industry. I am grateful to Peter Smith for letting me experiment with so many new ideas in CPSC 319, and to the many individuals interviewed for being so generous with their time and opinions, including: J. Brown (Harrison-Brown Technologies Inc., consulting for Motorola), L. Brown (Anderson Consulting), D. Canady (Microsoft), T. Dyck (Hewlett Packard), B. Freeman-Benson (Object Technologies International), J. Grattan (Southern Alberta Institute of Technology), J. Hyndman (Camosun College), S. Lapan (North Island College), J. Madhur (Rational Software, and 1998 INCOSE Symposium chair), M. Mantei (University of Toronto), K. Martinsen (Manager Human Factors, Canadian Airlines), J. Morrison (Microsoft), D. Powell-Williams (Chief Pilot B767, Canadian Airlines), S. Scroggins (Raytheon Systems Canada Ltd.), K. Toth (BC Software Productivity Centre), R. Tront (Simon Fraser University), C. Van Dyk (Greater Vancouver Regional District, Information Services), M. Weston (Camosun College), and D. Wick (Camosun College). I also wish to thank D. Wick, K. Wong, M. Greenwood, H. Mitchell, J. Nichols and A. Makepeace for reading rough drafts and helping me find the energy and focus to finish. This research was supported in part by the Natural Science and Engineering Research Council of Canada (through a postgraduate scholarship), the BC Advanced Systems Institute, TeleLearning NCE, and the Media and Graphics Interdisciplinary Centre (MAGIC) at the University of British Columbia.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    150 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us