Read without ads and support Scribd by becoming a Scribd Premium Reader.
 
1
Software Engineering: The Art of Managing Expectations 
Min Chen
Master of Software EngineeringCarnegie Mellon UniversityPittsburgh, PAamchen@cmu.edu  
Abstract 
Software engineers create solutions to improve the qualityof life and make life more efficient or comfortable. Theystrive for constant improvement by applying scientificprinciples 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 theproblems in software are sociological in nature. In this paper I will reflect about software engineering asthe art of managing expectations because it is a humanintensive discipline that involves customers, managers, andpeers. I will explain the expectations that have to bemanaged in software projects and the importance of meeting these expectations. I will also talk about how theMaster of Software Engineering (MSE) program preparessoftware engineers in meeting these expectations. 
1.
 
Introduction
 It may sound ironic to consider software engineering as theart 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 isa technical profession, it differs from other engineeringdisciplines in that there are people issues surrounding boththe development and management of software projectswhich are equally, if not more, important than technicalissues.
1
  Although managing expectations is important for anydiscipline, the very nature of software makes settingexpectations much more difficult.  There are essentialdifficulties inherent in the nature of software, as explainedby Brooks in his book The Mythical Man-Month: softwarein essence is abstract, complex, and invisible.
2
Hence,software is difficult to visualize, and metaphors are oftenused to help understand and communicate the properties of a software system by relating them to traditional mentalmodels rooted in the world that can be seen, heard,smelled, and touched. Moreover, the lack of physicalboundaries 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 withexcellent verbal and written skills as described by most jobpositions. This shows that as software engineering evolvesas 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. Softskills such as communication and negotiation arenecessary to understand the impact of software solutionson individuals and organizations as well as how theseindividuals influence in the solutions.  Technical,
 
2analytical, and problem-solving skills by themselves donot make a software engineer successful. Software engineering is all about managing expectationsof customers, managers, and peers. People at all levels of aorganization must combine technical expertise with theability to work effectively in teams, form productiverelationships with customers, and come up with a solutionthat will satisfy all the stakeholders.
3
  Customers in this context include the clients and end usersof the software solution. Managers involve the people whoare ultimately in charge of the project and who willevaluate the team’s performance, such as immediatesupervisor, middle manager, senior managers, andmentors. 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 softwaresystem should do is not an easy task. The requirements formost software projects are incomplete or inconsistentbecause the customers have little experience in expressingwhat they want or they don’t know what they want untilthey see it.  Still, the customers are the people who willdecide whether the software system met their expectations,and managing their expectations will determine thesuccess of the project. There was a popular saying in the first years of thesoftware industry about “people will come if you buildsomething good.” Nowadays, building a flawless systemthat no one needs is not acceptable. Software engineersmust use communication and negotiation skills to avoidsolving the wrong problem.  That is why requirementsengineering has acquired so much importance within thefield of software engineering. Use cases, rapid prototyping,contextual design, iterative development, and pairprogramming are some of the current techniques to bringthe customers and the engineers in the same picture whilereducing the risk of rework.  All of them require soft skillsto understand customer’s needs and interpret these needsas technical requirements. This relates to the Methods course of the MSE programthat teaches students different techniques to gatherrequirements, test the validity of these requirements, anddesign the right system as a part of a bigger ecosystem.This also relates to the Models and Architecture coursesthat teach how to use abstract models to represent andreason about the properties of a system to make sure itmeets the requirements. 
3.
 
Managers’ Expectations
 The most traditional type of teams is the manager-led teamin which the manager acts as the team leader and isresponsible for defining the goals, methods, andfunctioning of the team. The team members are onlyresponsible for the actual execution of their assigned work.Hence, the manager is ultimately responsible if the projecthas schedule slippage or is over budget.
3
  In today’s economy, software systems are expected tosatisfy high demands and increasingly complexrequirements. This means that engineers are expected tospecialize more and more in their areas of expertise, andthese areas will get even more narrow and interdependent.Technical teams have evolved from manager-led team to
 
3self-managed teams due to this increasing interdependenceacross team members. In a self-managed team, a manager determines the overallgoal of the project, but the team has the freedom to selectthe methods by which to achieve that goal.
3
This is powerof giving up power in which the team is being accountablefor its success.
2
Team members who didn’t have to worryabout non-technical issues are now in the need to negotiatethe scope, schedule, and cost with their managers.  Theteam lead, which used to be the member with the strongesttechnical skills, has to acquire soft skills to deal with theirmanagers’ expectations. This relates to the Managing Software Developmentcourse where students are taught managerial skills tohandle both human and computational resources in orderto run successful software projects. In addition, MSEStudio projects are run by self-managed teams where thementors are the managers and the team members are heldaccountable for the success of the project. Teams also havethe freedom to select the way they will achieve the goalsand propose them in the proposal-driven studio projects. 
4.
 
Peers’ Expectations
 The increased complexity and new needs for softwaresystems require taskforces to develop software solutions.The craftsman approach for developing software is nolonger sustainable. It is not possible for any one person tobuild these systems by working in isolation; engineersmust work as a member of a bigger system and interactwith others in order to create the right solution. Softwareengineers have to increasingly rely on others to get accessto their expertise. This is the core structure of a team-basedapproach to work. Teamwork, like other interdependent social behaviors, isbest perfected in an active, experimental, and dynamicenvironment. The lack of communication and coordinationamong the members of these groups is the main cause of projects failure.  The major problems of software projectsare not so much technological as sociological in nature.
2,4
  A team is not created by putting people together. Manymanagers think that they can form a team by buildingeffective relationships with each team member. Theyerroneously equate managing the team with managing theindividual members on the team.
3
Teamwork is not anatural consequence, and the expectations from each teammember in terms of roles, interdependencies, and divisionof workload must be clear. A team starts forming when team members envision acommon picture of success which should not conflict withtheir personal goals. Teams usually coordinate by using aprocess that defines the roles, activities, andresponsibilities of each team member. Every team membermust learn the communication pattern and behavior of theother members in order to manage their expectations.Conflicts among team members can encourage accuracy,insight, understanding, and development of trust andinnovation. However, conflicts can also destroy the team if not handled properly. Members of high performing teams have a shared mentalmodel of what to expect from each of the other teammembers. It is this understanding that allows them to
Search History:
Searching...
Result 00 of 00
00 results for result for
  • p.
  • Notes
    Load more