software engineering: the art of managing expectations
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
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.