CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

24
CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    234
  • download

    1

Transcript of CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

Page 1: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 1

CS 5150 Software Engineering

Lecture 25

People 1

Page 2: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 2

Administration

Page 3: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 3

An Old Question: Safety Critical Software

A software system fails and several lives are lost. An inquiry discovers that the test plan did not consider the case that caused the failure. Who is responsible?

(a) The testers for not noticing the missing cases?

(b) The test planners for not writing the complete test plan?

(c) The managers for not having checked the test plan?

(d) The client for not having done a thorough acceptance test?

Page 4: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 4

Software Developers and Testers: Responsibilities

• Carrying out assigned tasks thoroughly and in a professional manner

• Being committed to the entire project -- not just tasks that have been assigned

• Resisting pressures to cut corners on vital tasks

• Alerting colleagues and management to potential problems early

Page 5: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 5

Computing Management Responsibility

• Organization culture that expects quality

• Appointment of suitably qualified people to vital tasks (e.g., testing safety-critical software)

• Establishing and overseeing the software development process

• Providing time and incentives that encourage quality work

• Working closely with the client

Accepting responsibility for work of team

Page 6: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 6

Client Responsibility

• Organization culture that expects quality

• Appointment of suitably qualified people to vital tasks (e.g., technical team that will build a critical system)

• Reviewing requirements and design carefully

• Establishing and overseeing the acceptance process

• Providing time and incentives that encourage quality work

• Working closely with the software team

Accepting responsibility for the resulting product

Page 7: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 7

Managing People

Software Development Staff

• Professional staff are the major cost of software

• Staff vary greatly in productivity:

=> Ability

=> Education and training

=> Motivation

=> Interaction with colleagues and leaders

• Work environment has an impact on productivity

How do you lead, motivate, hire, reward, and retain good people?

Page 8: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 8

Managing People

Theoretical

• Organizational behavior

• Industrial psychology

• Group behavior

• Cognitive fundamentals

• Economic motivation

Page 9: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 9

Maslow's Hierarchy of Needs

Self-actualization

Esteem needs

Social needs

Safety needs

Physiological needs

Page 10: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 10

Management Implications of Maslow's Hierarchy

Physiological needs: Food, water, breathing, sleep

Safety Needs: Security of person, health, family

Social Needs: Friendship, colleagues, intimacy

Esteem Needs: Self esteem, confidence, achievements, respect of others.

Self-Actualization: The opportunity to reach full potential.

Page 11: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 11

Software is Built by Teams

• Best size for a team is 3 to 8 people

• Team members may include:developers (from trainee to expert)domain expertsgraphic or interface designerssoftware librarianstestersetc.

• Teams must have:administrative leadership (manager)technical leadership (may be the manager)

Page 12: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 12

Administrative Leader (Manager)

PersonnelAssigning tasksHiring, promoting, etc.

ResourcesBudgetsSpace, facilitiesEquipment

Project managementRelationships with other teams, management, and clientsProject plan and schedule

Page 13: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 13

Group Working

50%interaction

with others

20%non-productive

30%working alone

How time is spentvacations, training, administration, etc.

Page 14: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 14

Communication

• Staff meetings (non-technical)

• Technical meetings

Facilitation

Record of decisions

• Informal

Kitchen, smokers' doorway, after work, etc.

Walkabout (tours)

Ad hoc meetings

Page 15: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 15

Communication

Management of teams dispersed across locations

• Creating a team sense

Example: Tektronics

• Face-to-face meetings

Occasional but regular, e.g., once or twice per yearEntire team, including support staff

• Remote meetings on a regular schedule (e.g., conference calls)

Technical and administrative groups

• Clear division of responsibility between locations

Page 16: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 16

Meetings

Meetings require leadership and a willingness to be led

• Time keeping -- do not be late; end on time or earlier

• Clear purpose for meeting, with agenda if needede.g., progress reports, design review, budget

• Preparationmaterials circulated in advance with time to preparestudied by all participants

• Facilitation during meetingopportunities for all to speaksumming up to check agreement

• Notes taken during meeting (scribe) and circulated promptly

Page 17: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 17

Hiring

Productivity is a combination of:

• Analytic ability• Verbal ability and communication skills • Education• Adaptability and inquisitiveness• Personality and attitude

• Platform experience• Programming language experience• Application domain knowledge

Page 18: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 18

Staff Retention

• Technically interesting work

up to date hardware and software

opportunities to learn and experiment

• Feeling of appreciation

management recognition

money, benefits, and promotion

• Working conditions

space, light, noise, parking

flexibility

• Organizational dynamics

Page 19: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 19

Salaries

Any software developer in the USA has plenty of money to live on (food, clothing, heat, etc.).

Salaries are used to satisfy the top levels of Maslow's Hierarchy:

self-actualizationesteem

The absolute level of salary is less important than its relative level and how it is presented:

"The average raise is 4%, but you are getting 5%."

"Our salaries are in the top 25% of similar companies."

Page 20: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 20

Firmness

Managers must be firm when needed:

• Assignment of tasks must be equitable and open; everybody will have to tackle some of the dreary tasks

• Carrots are better than sticks, but poor performance must be addressed.

• Nobody is indispensable; nobody should be allowed to think that they are indispensable

Page 21: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 21

Turning a Group Around

To turn a weak group into a strong one is the greatest challenge of leadership

• The art of the possible

• Promotion of the best over the old leaders

• Using opportunities to reorganize

• Resignations and terminations

• Respect people who try, but refuse to accept problem areas

Persistent and firm is better than brutal and abrupt

Page 22: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 22

Technical Challenges

• Canceling projects

Example: the Andrew window manager

• Changes of environment

Example: the World Wide Web

• Technical tinkering v. needed re-engineering

Page 23: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 23

To Build and Maintain a Strong Team

Everybody has a different style. In my experience:

• Be consistent in how you relate to people

• Be open about problems and how you are addressing them

• Explain your decisions

• Do not have secrets

• Ask for advice and help

• Be constructive in criticism of people outside your team

• Support and attend social events

Set high standards!

Page 24: CS 5150 1 CS 5150 Software Engineering Lecture 25 People 1.

CS 5150 24

How to be Led

As a junior member of a team, what can you do to make it productive?

• Follow the team's style of working

• Understand the context of your work

• Make practical suggestions

• Ask for help if you need it

• Accept less interesting tasks

• Attend social events

• Do good work