software engineering: the art of managing expectations

Upload: amy-min-chen

Post on 08-Apr-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/7/2019 Software Engineering: The Art of Managing Expectations

    1/4

    1

    Software Engineering: The Art of Managing Expectations

    Min ChenMaster of Software Engineering

    Carnegie Mellon UniversityPittsburgh, PA

    [email protected]

    Abstract

    Software engineers create solutions to improve the quality

    of life and make life more efficient or comfortable. They

    strive for constant improvement by applying scientific

    principles to solve everyday problems in a practical way.

    Technical skills are necessary yet they are not sufficient tosucceed as a software engineer because most of the

    problems in software are sociological in nature.

    In this paper I will reflect about software engineering as

    the art of managing expectations because it is a human

    intensive discipline that involves customers, managers, and

    peers. I will explain the expectations that have to be

    managed in software projects and the importance of meeting these expectations. I will also talk about how the

    Master of Software Engineering (MSE) program prepares

    software engineers in meeting these expectations.

    1.

    Introduction

    It may sound ironic to consider software engineering as the

    art of managing expectations when one of the mainreasons of choosing this field is to avoid the uncertainty of

    dealing with people. Even though software engineering is

    a technical profession, it differs from other engineering

    disciplines in that there are people issues surrounding both

    the development and management of software projects

    which are equally, if not more, important than technical

    issues. 1

    Although managing expectations is important for any

    discipline, the very nature of software makes setting

    expectations much more difficult. There are essential

    difficulties inherent in the nature of software, as explainedby Brooks in his book The Mythical Man-Month: software

    in essence is abstract, complex, and invisible. 2 Hence,

    software is difficult to visualize, and metaphors are often

    used to help understand and communicate the properties of

    a software system by relating them to traditional mental

    models rooted in the world that can be seen, heard,

    smelled, and touched. Moreover, the lack of physical

    boundaries in software systems gives the impression thatsoftware is easy to change.

    Given that soft skills are required to manage expectations,

    there is a tremendous need for software engineers with

    excellent verbal and written skills as described by most job

    positions. This shows that as software engineering evolves

    as an engineering discipline, the soft part of software

    not only symbolizes the intangible nature of the solutionsbut the kind of skills that this discipline requires. Soft

    skills such as communication and negotiation are

    necessary to understand the impact of software solutions

    on individuals and organizations as well as how these

    individuals influence in the solutions. Technical,

  • 8/7/2019 Software Engineering: The Art of Managing Expectations

    2/4

    2

    analytical, and problem-solving skills by themselves do

    not make a software engineer successful.

    Software engineering is all about managing expectations

    of customers, managers, and peers. People at all levels of a

    organization must combine technical expertise with the

    ability to work effectively in teams, form productive

    relationships with customers, and come up with a solution

    that will satisfy all the stakeholders. 3

    Customers in this context include the clients and end users

    of the software solution. Managers involve the people who

    are ultimately in charge of the project and who will

    evaluate the teams performance, such as immediate

    supervisor, middle manager, senior managers, and

    mentors. Peers are the colleagues and teammates that work

    together to design and implement the solution.

    2.

    Customers Expectations

    Establishing a common understanding of what a software

    system should do is not an easy task. The requirements for

    most software projects are incomplete or inconsistent

    because the customers have little experience in expressing

    what they want or they dont know what they want until

    they see it. Still, the customers are the people who will

    decide whether the software system met their expectations,

    and managing their expectations will determine the

    success of the project.

    There was a popular saying in the first years of the

    software industry about people will come if you build

    something good. Nowadays, building a flawless system

    that no one needs is not acceptable. Software engineers

    must use communication and negotiation skills to avoid

    solving the wrong problem. That is why requirements

    engineering has acquired so much importance within the

    field of software engineering. Use cases, rapid prototyping,

    contextual design, iterative development, and pair

    programming are some of the current techniques to bring

    the customers and the engineers in the same picture while

    reducing the risk of rework. All of them require soft skills

    to understand customers needs and interpret these needs

    as technical requirements.

    This relates to the Methods course of the MSE program

    that teaches students different techniques to gather

    requirements, test the validity of these requirements, and

    design the right system as a part of a bigger ecosystem.

    This also relates to the Models and Architecture courses

    that teach how to use abstract models to represent and

    reason about the properties of a system to make sure it

    meets the requirements.

    3.

    Managers Expectations

    The most traditional type of teams is the manager-led team

    in which the manager acts as the team leader and is

    responsible for defining the goals, methods, and

    functioning of the team. The team members are only

    responsible for the actual execution of their assigned work.

    Hence, the manager is ultimately responsible if the project

    has schedule slippage or is over budget. 3

    In todays economy, software systems are expected to

    satisfy high demands and increasingly complex

    requirements. This means that engineers are expected to

    specialize more and more in their areas of expertise, and

    these areas will get even more narrow and interdependent.

    Technical teams have evolved from manager-led team to

  • 8/7/2019 Software Engineering: The Art of Managing Expectations

    3/4

  • 8/7/2019 Software Engineering: The Art of Managing Expectations

    4/4

    4

    perform as a team where the whole is more than the sum of

    its parts.

    The boot camp of the MSE program teaches students the

    basics of teamwork. The Studio project is the test field for

    students to build a team instead of a group of working

    people.

    5.

    Conclusion

    Reflecting on the studio project, I consider that the success

    of my team was mainly because we mastered the art of

    managing expectations.

    First of all, why do I say that my team was successful? It

    was successful because we met our teams picture of

    success, our personal goals, the customers expectations,

    and the mentors expectations.

    Managing expectations was a team learning process that

    lasted throughout three semesters.

    In the first semester of the project, we were struggling with

    forming an efficient team. The lack of understanding of the

    team members and customers expectations inhibited us

    from having a satisfactory performance.

    In the second semester, we learned to work as a team

    instead of a group of individuals, and we realized that our

    customer had different expectations from our team than

    what we thought. At the end of this second semester, we

    improved our performance, we became more predictable to

    each other, and we increased our customers satisfaction.

    In the last semester, the customer decided to change the

    original plan and deliverables of our project. This was like

    our final test about managing expectations because my

    team had to negotiate the scope of the new project, the

    deliverables, and set mutual expectations to allow for an

    efficient use of the resources, both at our side as well as

    the customers side. Internally, we had to reorganize

    ourselves by creating a new plan and new statement of

    work, selecting a process, and adopting the new roles.

    Externally, we had to understand the expectations for the

    new deliverables. Also, the nature of our project became a

    design activity more than an implementation activity, and

    we struggled with finding the balance between innovation

    and control.

    My studio team was successful because we learned to

    manage expectations. We met our peers expectations in

    that we didnt have heroes in our team, we resolved our

    conflicts, and we followed our process intelligently even in

    difficult situations. We met our customers expectations by

    delivering added value to the customers organization. Last

    but not least, we meet our managers expectations based

    on our mentors feedback.

    References

    1.

    J. Tomayko and O. Hazzan, Human Aspects of

    Software Engineering , Charles River Media, 2004.

    2.

    F. Brooks, The Mythical Man-Month , Addison

    Wesley, 1995.

    3.

    L. Thompson, Making the Team. A Guide for

    Managers , Pearson Prentice Hall, 2004.

    4.

    T. DeMarco and T. Lister, Peopleware. Productive

    Projects and Team, 2nd Edition, Dorset House

    Publishing Co., 1999.