Lecture 3: Organizing Teams

Slides:



Advertisements
Similar presentations
Ch.1 Introduction to Software Engineering The Evolution 1.1 The Evolving Role of Software 1/15 In the early days: User Computer Software = Place a sequence.
Advertisements

CIS-74 Computer Software Quality Assurance Systematic Software Testing Chapter 1: An Overview of the Testing Process.
1 Teams Xiaojun Qi. 2 Team Organization Suppose that a product can be accomplished by 1 person-year of programming. If this product must be completed.
The Human Side of Project Management
Lecturer: Dr. AJ Bieszczad Chapter Lehman’s system types S-system: formally defined, derivable from a specification P-system: requirements based.
CSC 212 – Data Structures Prof. Matthew Hertz WTC 207D /
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Teams.
CS CS 5150 Software Engineering Lecture 20 Acceptance and Delivery.
VENDORS, CONSULTANTS AND USERS
Software System Integration
System Analysis and Design
CHAPTER 4 TEAMS.
Facts and Fallacies of Software Engineering (Rob Glass) CSE301 University of Sunderland Discussed by Harry R. Erwin, PhD.
Program Development Life Cycle (PDLC)
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
University of Virginia Software Development Processes (CS340 John Knight 2005) 1 Software Development Processes.
Using error reports in SPI Tor Stålhane IDI / NTNU.
Slide 1 Teams l Most products are too large to be completed by a single software professional with the given time constraints l You will work within a.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
CSC 395 – Software Engineering Lecture 5: Teams -or- How to Motivate and Manage the Unwashed Masses.
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
Slide 4.1 © The McGraw-Hill Companies, 2005 Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
Software Engineering At Glance. Why We Need Software Engineering? The aim of software engineering is to solve the software crisis Software is delivered.
Chapter Three The Surgical Team. The Problem Large Group – 10:1 productivity and 5:1 program speed and space management. – Negative aspect Sheer number.
Object-Oriented and Classical Software Engineering Seventh Edition, WCB/McGraw-Hill, 2010 Stephen R. Schach
Software Project Development Teams. Team Organization Goal: organize teams so that they are productive teams can be used in every phase, especially implementation.
CS223: Software Engineering Lecture 16: The Agile Methodology.
Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill Stephen R. Schach 1.
1 Team Skill 4 Managing the scope Noureddine Abbadeni Al-Ain University of Science and Technology College of Engineering and Information Technology Based.
Teamwork and Group Dynamics A few tips on effective teamwork, meetings, and presentations Stuart Faulk From lectures by Michal Young, 1988, Anthony Hornoff.
CS223: Software Engineering
Automation.
Chapter 1 The Systems Development Environment
Chapter 1 The Systems Development Environment
Software Project Management
8.4 Management of Postdelivery Maintenance
Sample Wiki Comments?.
Architecture Concept Documents
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Chapter 1 The Systems Development Environment
The Software Development Cycle
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
eXtremely Distributed Software Development
LCGAA nightlies infrastructure
Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill, 2011 Stephen R. Schach 1.
Lecture 9-2: Interacting with the Superclass (super);
Chapter 1 The Systems Development Environment
Software What Is Software?
Software Life Cycle Models
Maintaining Quality Test Optimization with Increasing Software Complexity Ankit Goyal Software Engineer II Adobe Systems.
Software Engineering (CSE 314)
Software Engineering (CSI 321)
VENDORS, CONSULTANTS AND USERS
MBI 630: Systems Analysis and Design
Adapted from slides by Marty Stepp and Stuart Reges
Software System Integration
Software Testing and Maintenance Maintenance and Evolution Overview
Outline Module 1 and 2 dealt with processes, scheduling and synchronization Next two modules will deal with memory and storage Processes require data to.
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Pair Programming.
Baisc Of Software Testing
Object-Oriented and Classical Software Engineering Seventh Edition, WCB/McGraw-Hill, 2007 Stephen R. Schach
Agile Development – a new way of software development?
Extreme Programming.
Chapter 1 The Systems Development Environment
COMP755 Advanced Operating Systems
NOTICE! These materials are prepared only for the students enrolled in the course Distributed Software Development (DSD) at the Department of Computer.
The Software Development Cycle
Presentation transcript:

Lecture 3: Organizing Teams CSE 542 – Software Engineering Concepts

Announcements 67% of class signed up for Piazza already If you are not one of them, what are you waiting for? Helpful for project, so signup as soon as you can

Lies, Darned Lies & Metrics Person-year common measure of work performed Work done by 1 person over 1 year 12 people in 1 month also a person-year of work Or 4 people in 2 months + 1 person in 4 months

Lies, Darned Lies & Metrics Person-year common measure of work performed Work done by 1 person over 1 year 12 people in 1 month also a person-year of work Or 4 people in 2 months + 1 person in 4 months Among the stupidest metrics ever & ever Often see coders’ productivity vary by 10x Ignores meetings, sick days, hangovers in calculation Can do a lot more in an 8-hour day vs. 8 1-hour days

Do Person-Months Scale? 9 x 1 Month of Work

Do Person-Months Scale? 9 x 1 Month of Work 1 x 9 Months of Work

Do Person-Months Scale? 9 x 1 Month of Work 1 x 9 Months of Work According to my wife (aka the local expert), it is far better to be pregnant for 9 months than to recruit 8 friends and only be pregnant for one month. Like she'd know anything after month 6.

Computer Science “Laws” Name for folk wisdom built up over years Weinberg’s Second Law If builders built buildings the way programmers wrote programs, the 1st woodpecker […] would destroy civilization. Brook’s Law Adding programmers to a team when a product is late makes the product even later.

Chief Programmer Team Productivity improved by limiting communication Everything is chief programmer’s responsibility First used in 1971 by IBM on a project automating the storage and retrieval from the NYTimes clippings file. The project took slightly under 2 years, with the coding primarily occurring in the 6 months. Over the first year (including the testing cycle) only 46 faults (“bugs”) were found. Project was live for several decades not until 90s – 00s was it replaced (source?)

Chief Programmer Team Productivity improved by limiting communication Everything is chief programmer’s responsibility Programming secretary (librarian) Maintains all documents and deliverables Responsible for repository maintenance Content to spend all day doing paperwork Compiled, linked, & tested code (this was 1971)

Chief Programmer Team Productivity improved by limiting communication Everything is chief programmer’s responsibility Chief programmer Successful manager and programmer Responsible for every line of code Performs architectural design, allocates coding, heals the sick, writes critical sections, handles interfaces, teaches cats to sing, performs all reviews, and blends in with mere mortals This was “superprogrammer” F. Terry Baker on the NYTimes project

Chief Programmer Team Productivity improved by limiting communication Everything is chief programmer’s responsibility Back-up programmer Takes over if/when Chief Programmer is out For unknown reasons, does not leave for big $$$

Chief Programmer Team Productivity improved by limiting communication Everything is chief programmer’s responsibility Programmers Write code Write more code

Teams in the Real World Needs to consider reality of you mortals Work done by chief programmer is split Managerial & technical roles separated

Teams in the Real World Needs to consider reality of you mortals Work done by chief programmer is split Managerial & technical roles separated

Teams In The Real World Scale to larger teams of 20 - 120 programmers Whenever necessary, add more layers

Teams In The Real World Scale to larger teams of 20 - 120 programmers Whenever necessary, add more layers

Democracy InAction Limit politics using teams and group concepts

Democracy InAction Limit politics using teams and group concepts Worst of the in-fighting prevented

Democracy InAction Limit politics using teams and group concepts Worst of the in-fighting prevented by meetings

Democracy InAction Limit politics using teams and group concepts Worst of the in-fighting prevented by meetings

Synchronize-and-Stabilize Used by Microsoft (& adapted for open-source) Teams of 3 – 8 developers (& 3 – 8 testers for Microsoft) Team owns entire task; responsibility shared equally Work from specification through implementation Regular synchronization & testing key to process Tests that day’s code to report all errors across project

Synchronize-and-Stabilize Used by Microsoft (& adapted for open-source) Teams of 3 – 8 developers (& 3 – 8 testers for Microsoft) Team owns entire task; responsibility shared equally Work from specification through implementation Regular synchronization & testing key to process Tests that day’s code to report all errors across project Great hackers: common trait for Microsoft & Linux

Democratic Teams Programmers have egos that are very healthy

Democratic Teams Programmers have egos that are very healthy:

Democratic Teams Programmers have egos that are very healthy: Computers & algorithms often eponymous Fixing errors is difficult: “Cannot be in MY code!” Instead rely on egoless programming

Egoless Programming Team emphasis to all activities Team as a whole owns all code Errors are acceptable events to be fixed Entire team responsible for finding & fixing bugs Seen as singular group internally & externally

Egoless Programming Team emphasis to all activities Team as a whole owns all code Errors are acceptable events to be fixed Entire team responsible for finding & fixing bugs Seen as singular group internally & externally Hard to create, but can arise organically Up to 10 egoless programmers form into group Often when there is nothing to gain personally Academia & agile teams most often rely on approach

Egoless Programming Team emphasis to all activities Team as a whole owns all code Errors are acceptable events to be fixed Entire team responsible for finding & fixing bugs Seen as singular group internally & externally Hard to create, but can arise organically Up to 10 egoless programmers form into group Often when there is nothing to gain personally Academia & agile teams most often rely on approach Double-bonus for use in software engineering course

Choosing Team Organization Exceedingly little study of team organization Instead rely on general group dynamic research Woo-hoo! Psychology texts to read Software engineering use faces two big issues Psychology texts are boring; very, very, very, very, very boring Software engineers rarely trained in psychology

Choosing Team Organization In real world, optimal approach does not exist Depend on situation & people included on team Organizational approach can be changed to fit people Or change people to fit team organization Scientifically team dynamics difficult to analyze Hard to set-up experiments that could do this well Trying to control these experiments may be unethical