Artemisa Yescas Engler - ReadingSummary3

8
****** Teamwork [Mcconnell] ******************************************************************** Software uses of Teamwork • Developing and reviewing the project's requirements  • Developing the project's architecture and the design guidelines that  will be used by the whole project  • Defining aspects of the  technical environment that will be used on the  project (including the programming languages, compilers, source-code libraries, code generators, editors, and version-control tools)  • Developing coding standards that will be used by the whole project • Coordinating work on related pieces of a project (including defining interfaces between subsystems, modules, and classes) • Designing difficult parts of the system  • Reviewing individual developers' designs and code  • Debugging difficult parts of the system  Testing of requirements, design, and code • Auditing a project's progress  • Maintaining software once it has been built (including responding to  maintenance requests and making emergency fixes)  Importance to Rapid Development Small projects can get away with not addressing teamwork issues, but they will benefit from addressing them. Large projects are group efforts, and characteristics of the groups play an important role in those projects' success, Managers who are concerned about rapid development would be better off to assign developers based on their abilities to contribute to a cohesive team first and only then based on their individual capabilities. Creating a high performance team Teams need common, shared vision or goals to help them build trust and keep the team focused. Having agreement on project vision also help to streamline decision making on smaller issues. To have a motivating effect, the vision also needs to be elevating. The teams needs to be presented with challenging work. As team members work together toward their common vision, they begin to feel a sense of team identity. For a team to have a results-driven structure, roles must be clear and everyone must be accountable for their work at all times; team must have an effective communication system; should have means of monitoring individual performance and providing feedback; and decisions must be based on facts rather than on subjective opinions. Team members need to be chosen based on who has the competencies  that are currently needed. On an effective team, members have a mix of skills, play different roles and commit to the team. Team members rely on each other’s individual strengths, they look for ways to become dependent on other team members. Cohesive teams need to stay in communication with each other constantly. Effective teams have the sense that they are free to do whatever is necessary without interference, having sense of autonomy. They also need to feel empowered to take whatever actions are needed t o succeed. Regarding the team’s size, if the project requires more than 10 members, if should be broken into multiple teams. For single-project teams, if it can stay together across several projects, it can expand the size as long as the team shared a deep-rooted culture. Most productive teams are enjoyable, people like to be productive, they naturally spend more time doing things that they enjoy and what makes a team jell is adopting a group sense of humor. A cohesive team creates an “us” and the manager is in the sticky position of being not completely “us” and not completely “them”. Why teams fail • Lack of common vision  • Lack of identity • Lack of recognition • Productivity roadblocks  • Ineffective communication  • Lack of trust  • Problem personnel Long term teambuilding Reasons to keep teams together permanently:  Higher productivity  Lower startup costs  Lower risk of personnel problems  Less turnover  Idleness question

Transcript of Artemisa Yescas Engler - ReadingSummary3

Page 1: Artemisa Yescas Engler - ReadingSummary3

8/13/2019 Artemisa Yescas Engler - ReadingSummary3

http://slidepdf.com/reader/full/artemisa-yescas-engler-readingsummary3 1/7

****** Teamwork [Mcconnell] ********************************************************************

Software uses of Teamwork

• Developing and reviewing the project's requirements 

• Developing the project's architecture and the design

guidelines that will be used by the whole project • Defining aspects of the technical environment that will be

used on the project (including the programming languages,

compilers, source-code libraries, code generators, editors,and version-control tools) • Developing coding standards that will be used by the

whole project

• Coordinating work on related pieces of a project (including

defining interfaces between subsystems, modules, and

classes) • Designing difficult parts of the system 

• Reviewing individual developers' designs and code 

• Debugging difficult parts of the system  • Testing of requirements, design, and code

• Auditing a project's progress 

• Maintaining software once it has been built (including

responding to maintenance requests and making

emergency fixes) 

Importance to Rapid Development

Small projects can get away with not addressing teamwork issues, but they will benefit from addressing them. Large

projects are group efforts, and characteristics of the groups play an important role in those projects' success, Managers who are

concerned about rapid development would be better off to assign developers based on their abilities to contribute to a cohesive

team first and only then based on their individual capabilities.

Creating a high performance team

Teams need common, shared vision or goals to help them build trust and keep the team focused. Having agreement on

project vision also help to streamline decision making on smaller issues. To have a motivating effect, the vision also needs to be

elevating. The teams needs to be presented with challenging work. As team members work together toward their common vision

they begin to feel a sense of team identity. For a team to have a results-driven structure, roles must be clear and everyone must

be accountable for their work at all times; team must have an effective communication system; should have means of monitoring

individual performance and providing feedback; and decisions must be based on facts rather than on subjective opinions. Team

members need to be chosen based on who has the competencies that are currently needed. On an effective team, members have

a mix of skills, play different roles and commit to the team. Team members rely on each other’s individual strengths, they look fo

ways to become dependent on other team members. Cohesive teams need to stay in communication with each other constantlyEffective teams have the sense that they are free to do whatever is necessary without interference, having sense of autonomy

They also need to feel empowered to take whatever actions are needed to succeed. Regarding the team’s size, if the project requires

more than 10 members, if should be broken into multiple teams. For single-project teams, if it can stay together across severa

projects, it can expand the size as long as the team shared a deep-rooted culture. Most productive teams are enjoyable, people like

to be productive, they naturally spend more time doing things that they enjoy and what makes a team jell is adopting a group sense

of humor. A cohesive team creates an “us” and the manager is in the sticky position of being not completely “us” and not completely

“them”.

Why teams fail

• Lack of common vision 

• Lack of identity

• Lack of recognition

• Productivity roadblocks 

• Ineffective communication 

• Lack of trust 

• Problem personnel

Long term teambuilding

Reasons to keep teams together permanently:

  Higher productivity

  Lower startup costs

  Lower risk of personnel problems

  Less turnover

  Idleness question

Page 2: Artemisa Yescas Engler - ReadingSummary3

8/13/2019 Artemisa Yescas Engler - ReadingSummary3

http://slidepdf.com/reader/full/artemisa-yescas-engler-readingsummary3 2/7

****** Team Structure [Mcconnell] *******************************************************************

Consideration in organizing a team is to determine the team’s broad objective. According to Larson & LaFasto: Problem

resolution, Creativity and Tactical execution. The structure that’s more appropriate depends on the team’s objectiv e. The

characteristic that is most important for the kind of team should be emphasized: for problem resolution team, emphasize trust; fo

creativity team, emphasize autonomy; and for tactical-execution team, emphasize clarity.

Additional Team-Design features are:

  Clear roles and accountabilities

  Monitoring individual performance and providing

feedback

  Effective communication

  Fact-based decision making

*There’s no such thing as a single best ‘rapid -development team structure’ because the most effective structure depends on the

context.

Team models

Business team: Composed of a tech lead and other equal developers.

Chief-programmer team: is organized around chief programmer who is an expert programmer. The other team members have

other, specialized roles, such as librarian, which support the chief programmer in his primary task of designing and coding t he sw.

Skunkworks team: group of talented, creative product developers, working in a facil ity freed of organization’s normal bureaucratic

restrictions, turns them on the loose to develop and innovate.

Feature team: Small, dynamically formed team that develops a small activity. Multiple minds are always applied to each design

decision and also multiple design options are always evaluated before one is chosen

Search-and-Rescue team: focused on solving a specific problem.

Swat team: each member is highly skilled with a particular tool or practice, trains extensively to be prepared when crisis hits they

can work as a unit.

Professional athletic team: carefully selected people w/very specialized roles

Theater team: “director” assigns roles to others 

*Large teams pose special problems of communication and coordination.

Managers and technical leads

Technical lead is responsible for the technical work and for a single team. The manager is responsible for the

nontechnical direction of the team and responsible for 2 or more projects.

******** Configuration Management Principles and Practices – [Kirk Kandt] **************************

A CMS includes a set of policies, practices, and tools that help and organization maintain software configurations. Its

primary purpose is to maintain the integrity of the sw artifacts of an organization. * is the discipline of controlling the

evolution of complex systems

Principles

• Protect critical data and other resources

• Monitor and control sw development procedures and

processes

• Automate processes and procedures when cost effective 

• Provide value to customers

• Sw artifacts should have high quality

• Sw systems should be reliable

• Assure that products provide only necessary features, or

those having high value

• Sw systems should be maintainable

• Use critical resources efficiently

• Minimize development effort 

Page 3: Artemisa Yescas Engler - ReadingSummary3

8/13/2019 Artemisa Yescas Engler - ReadingSummary3

http://slidepdf.com/reader/full/artemisa-yescas-engler-readingsummary3 3/7

 

Practices. They support the previous ten principles.

Management Practices

• Maintain a unique read-only copy of each release

• Control the creation, modification, and deletion of sw

artifacts following a defined procedure

• Create a formal approval process for requesting and

approving changes 

• Use change packages

• Use shared build processes and tools

• A version manifest should describe each sw release

• Segregate derived artifacts from source artifacts

Quality Practices

• All artifacts should be under configuration control

• Use a change control board

• Build sw on a regular, preferably daily, basis, followed

by immediate invocations of regression test suites

• Document identified sw defects

• Sw artifacts that comprise a release should adhere to

defined acceptance criteria

• Each sw release should be regression tested before

the test organization receives it

•  Apply defect repairs to every applicable release o

ongoing development effort

 

Protection Practices

• Use a software system to perform configurationmanagement functions

• Repositories should exist on reliable physical storage

elements

•Configuration management repositories should beperiodically backed-up to non-volatile storage and

purged of redundant or useless information

• Test and confirm the backup process

Tools Practices

• Check code in often

• Configuration management tools should provide

patch utilities

• Do not work outside of managed workspace

• Do not share workspaces

• When developing sw on a branch other than the

primary development branch, regularly synchronize

development with the development branch.

Capabilities. Used to analyze and compare various products

Version Control >> maintain a collection of versioned artifacts. 

Configuration Control >> maintain collections of aggregated artifacts that form larger systems and subsystems.

Model Control >> Provide a domain model for sw artifacts. 

Build Control >> construct derived artifacts from source artifacts

Change Control > handle all types of change requests and monitor them to closure.

Deployment Control >> automatically deploy sw to customers or notify them when appropriate releases are available

for deployment

Process Control  >> automate the workflow of the sw development process and to ensure that practitioners of an

organization follow the desired software process

Security Control >> ensure that users of the configuration management tool perform the operations that they have

been granted and no more

User Interface Control >> provide a Graphical User Interface (GUI) to users that enhance their productivity and overal

experience 

Page 4: Artemisa Yescas Engler - ReadingSummary3

8/13/2019 Artemisa Yescas Engler - ReadingSummary3

http://slidepdf.com/reader/full/artemisa-yescas-engler-readingsummary3 4/7

Page 5: Artemisa Yescas Engler - ReadingSummary3

8/13/2019 Artemisa Yescas Engler - ReadingSummary3

http://slidepdf.com/reader/full/artemisa-yescas-engler-readingsummary3 5/7

The main purpose of the SCM plan is to answer questions as

who is going to do that, when, where, and how. It serves as a

guideline

Automating manual SCM tasks provides more time to do the

actual development work, leading to improved speed and

productivity.

SCM common tools: Version Control (manage different

versions of congifuration objects that are created during the

sw eng process); Workspace management (prevent user

from interfering with one another’s work); Concurrency

control (files are not locked when checking them out, and

there may be simultaneous modifications to the same files by

multiple users, a locking mechanism comes into use); System

building (combine needed file versions and compile them to

create the app); Press control and support (mechanism to help

reality conform to the model).

Page 6: Artemisa Yescas Engler - ReadingSummary3

8/13/2019 Artemisa Yescas Engler - ReadingSummary3

http://slidepdf.com/reader/full/artemisa-yescas-engler-readingsummary3 6/7

Page 7: Artemisa Yescas Engler - ReadingSummary3

8/13/2019 Artemisa Yescas Engler - ReadingSummary3

http://slidepdf.com/reader/full/artemisa-yescas-engler-readingsummary3 7/7

8.  Pragmatic Programming

Set of programming best practices. It does not include process, phases, distinct roles or work products, It contains tips

that cover most programming practicalities.

9.  Scrum

Management and control process that focuses on building software that meets business needs. Teams are fully

autonomous and guided by their knowledge and experience, rather than formerly defined project plans. Leaves the

power of decision to the devs.