Role of different personality types in software ... - WordPress.com

0 downloads 214 Views 288KB Size Report
years of experience in software development. Our team of four members ... individuals prefer agile process rather than m
1

Role of different personality types in software engineering team Jay Parteek Master of Software Engineering Texas State University San Marcos, TX, USA [email protected]

Abstract— Most software engineering projects aims to produce a quality product that fulfills the customer requirements by efficient use of resources. But still software engineering is plagued by numerous project failures. Millions of dollars are wasted due to faulty software. Often the reasons for such failures are related to team composition. Software engineering is essentially a team activity in which different members are assigned variety of responsibilities based on their roles in the team. To produce a best quality product it is important that the team configuration is such that it enables members to work at their highest productivity levels. Selecting the right people for these roles, based on their personalities in an important factor for building effective and efficient teams. In this paper I will investigate the relationships between various team roles and responsibilities in a software team and personality traits of individuals. Then we will map different roles preferable personality types for that role. This kind of mapping can assist managers while making decision about team configurations.

I. INTRODUCTION In this paper I will apply my experience and data collected from a project in which I have been involved in the Master of Software Engineering (MSE) program at Texas State University. Students in this program work in 4-5 member teams for 4 months and applied various software engineering practices learned from other core courses. The students in this program are selected from all over the world and have 3-5 years of experience in software development. Our team of four members including me worked on a project where we have to create an Android application to run simulations of models created by an open source tool called Ptolemy. The four members of our team belonged to different nationalities. After every 3 weeks, the roles in the team were rotated between different team members, so every member had an opportunity to act in different roles.

In this paper, I will provide a brief over view of the project then introduce the results from a personality test that was conducted on the whole team.

II. PROJECT OVERVIEW Our client KSS (Key Safety Systems Inc, Los Indios, TX) required a solution that would allow models developed in Ptolemy, an open-source modeling and simulation tool, to be run in a real-time fashion, manipulated, and operated using a user-configured layout on Android-powered devices. Ptolemy was developed by an open-source community primarily at the University of California at Berkeley, provides users with the ability to simulate real-world activity and perform advanced analysis on models. This product allows the user to view the result of the simulation on their handheld devices and also the user interface can be customized for different simulation models of Ptolemy. It can also be adjusted to view in different screen resolution. It basically follows the pipe and filter architecture where input is collected from a source and the results of the simulation are displayed at the synch filters.

III. MYERS-BRIGGS TYPE INDICATOR The Myers-Briggs Type Indicator (MBTI) is a well-known instrument for measuring and under- standing individual personality types.1 It currently ranks among the most popular indicators used in the workplace, establishing four dimensional pairs for assessing personality types: extroversion (E) and introversion (I), sensing (S) and intuition (N), thinking (T) and feeling (F), and judging (J) and perceiving (P). We can use these four sets of preferences, selecting one trait from each pair, to delineate a person’s preferred type. A. Extroversion (E) and Introversion (I) This scale indicates whether an individual draws its energy from group or social gatherings or he/she feel more energized while by inner reflection and ideas. So in an individual needs solitude rather that a group activity to recharge his/her batteries they are introverted rather that extroverted. There is a common misconception that introverts are people who are shy

2 and speak little. In fact there can be individuals who enjoy social occasions and are not shy at all but too much socializing will drain their energy and they cannot perfume tasks at their best. Extroverts thrive on and feel energetic in environments involving social interactions. Extraverts prefer more frequent interaction, while introverts prefer more substantial interaction. Introverts prefer to respond to conversations rather than taking initiating it. And usually extroverts are more talkative and loud than introverts. Software engineering in basically a team process involving large amount of group activities but also there are equal amount of work that is performed by individuals working alone most on the time and integrating with other team members latter. So a software team needs a balance of both introverts and extroverts. And also it is important that the team members understand the personality types of each other so that they are aware preferences of others in the team. From the results of personality tests on team it can be observed that two members were expressed extroverts, one member was slightly extroverted will one C was distinctively expressed introvert.

Figure 2

C. Thinking (T) and Feeling (F) This scale of personality type in based on how individuals make their decisions. A T type individual makes decisions on logical reasoning where as F type individuals make decision on the basis of emotions. T type personality is more firm on their principles while F types are subjective and have good interpersonal skills. Thinkers think more objectively while feelers are influences by interpersonal interactions and human elements. All team members in our team were of thinking type. Usually most of the engineering activities require thinking approach but in managerial positions feeling personality is preferable since they also need to consider how this decision effect other people.

Figure 1

B. Sensing (S) and Intuition (N) A person that uses the information gather from senses to make decisions rather than processing the information and using abstraction to arrive and decisions then he/she is considered of Sensing type. An individual with S type personality dislikes new problems because they rely on patterns gathered solving past problems while a person with N type personality enjoys solving new problems and dislikes trivial tasks. N type individual establishes meaning beyond what is gathered from senses. A sensing individual prefers real world problem and is bored by that abstract concepts. S type individuals prefer agile process rather than more structured ones. From the data collected on the personality test it can be observed that except one member all members were highly intuitive. Another important point is that S type are more detail oriented and rely of concrete facts so they prefer a bottom up approach. N types personalities are more suited for the early phases of development where a mostly top down approach is used.

Figure 3 D. Judging (J) and Perceiving (P) This scale of personality is based on how individuals interact with the outer world. Judging types are usually very organized in their habits while P type individuals prefer delaying tasks until the last minute. The adherence to deadlines, punctuality, and closure describes J personalities, while the terms open-ended, adapt- able and spontaneous apply to P types. In HanSimdroid team most two members where distinctively of J type and the other two were of P type. In the context of a software project it is important for engineers to be good planners to minimize risks. J type personalities are better planning activities and are also motivated to track their plan. In general it would be preferable

3 to assign the roles of planning managers to personalities that are of judging type. Another thing that can be inferred from this is that due to the organized nature of J type personalities they would prefer working in more structured processed like TSP or rather than agile processed like SCRUM and Open UP.

• Willingness (W)—The psychological and emotional characteristics that influence the degree to which the individual is inclined to perform the task, and • Opportunity (O)—The particular configuration of the environment surrounding, and beyond her direct control, an individual and her task that enables or constrains her performance.   One of the main views within personality psychology is that personality can be described by a set of traits, i.e. fixed set of patterns in how a person behaves, feels and thinks. These traits can be used to summarize, explain and predict how a person will act in different situations. Modern software permeates all aspects of life, including finance, administration and games, for example. Software developers can act in occupations without knowing or using mathematics.

Figure 4 An individual can be classified into 16 MBTI personality types based on the largest scale obtained. ISTJ ISTP ESTP ESTJ Table 1

ISFJ ISFP ESFP ESFJ

INFJ INFP ENFP ENFJ

INTJ INTP ENTP ENTJ

The personality test taken by team members map to following personalities: Team member A: ENTJ Team member B: ESTJ Team member C: INTP Team member D: ENTP IV. RELATIONSHIP BETWEEN PERSONALITY TYPES TO PERFORMANCE

Before we investigate the relationship between personality of an individual and the performance in software engineering roles it is important to know what factors determine performance. The quality of performance of a team member in a software engineering task largely depends upon the judgments and decisions that he/she makes while performing that task. Even though personality is one factor in influencing such judgments and decisions, and thus in determining performance, there are a multitude of other factors that can affect performance. Blumberg and Pringle in their paper [7] identified three main factors affecting performance: Capacity, Willingness and opportunity. These dimensions affecting performance are defined below: • Capacity (C)—The physiological and cognitive abilities of the individual that enables her to perform a work task in an efficient way,

V. MAPPING ROLES TO PERSONALITY TYPES A. Team leader An effective leadership is critical factor for the success of a software engineering team. The team lead needs to be assertive and aware of group dynamics. They need to understand the entire solution, not just their part of it. A best team lead is the one that leads by example and must control team meetings, engaging everyone member in the team. In case of our team, every team member expected the team lead to lead by example both in term of a conformance to the process and completion of various development tasks. They understand that the code is a means to an end and that project success will be primarily measured by client satisfaction. The team lead needs to have the ability to maintain discipline in the team but also motivate the team members to perform with best of their abilities. In situation of conflict within the team, it becomes the responsibility of the team lead to resolve the conflict and make sure that a productive work environment is maintained within the team. The teams that have a role of a leader filled perform better than teams without such a role and also teams having single leadership role performs better than ones having multiple leaders [9]. Intuitive type personality type has better ability to look at the bigger picture concerning systems and subsystems, and can figure out innovative alternate solutions to a problem. These traits are desirable for a team lead in small, since he or she may also need to perform the responsibilities of a systems analyst. A person with high feeling score is better than a thinking personality types in the role of a team lead. This is due to the fact that a feeling people are people-oriented they also consider how their decision affect other individuals which makes them better managers. In general, ESFJ or an ENFJ,

4 personality types are better suited for a team lead depending on the task involved. Role High level skills required

Team Lead • Good communications skills. • Resolve team conflicts and dysfunctions. • the ability to facilitate group processes.

Desired personality traits

• People oriented • Focus on the bigger picture. • Being proactive and taking imitative.

Suitable personality type Indicator

EFJ

B. Software Architect A software architect in responsible for designing the system. He/She needs to have in depth understanding of how various design decision impact the systemic properties if the system. Software architect understands the business drivers and main points the system is addressing. They should have the ability to effectively reason about all the design decisions. Like a team lead the software architect needs to keep the bigger picture in mind and not just focus on a few units of the system. The software architecture is based on the knowledge of how different units in the system will interact with each other and what are their responsibilities. To properly identify and address different architectural divers like quality attributes, business constraints, functional requirements and technical constraints involves analyzing different possible choices and their tradeoffs. This requires good analytical skills. The software architect should also participate and share knowledge throughout all the activities in the software development life cycle. The software architect works closely with the requirements engineer to clearly identify the functional requirements and quality attributes that from the basis of the architecture. The Droid system involved relatively complex architecture because of the distributed nature of the project and the legacy system of Ptolemy involves. The biggest challenge in the architecture was the performance requirement from the system. We used ACDM (Architecture Centric Design Method) [14], which is an iterative design method, for designing our architecture. Designing the architecture required sound understanding of the customer requirements and also knowledge of different tactics to support the architectural divers. The Chief Architect is required to document and maintains risks, do trade off

analysis of various design approaches, and configuration control of the structures. Another challenging part of designing the architecture was that we needed to have sound understanding of the architecture of Ptolemy system, since we were essentially extending an already existing system. Software architects should not only have the ability to see the big picture but as the architecture is further refined they should be able to isolate relevant items and reason about their properties, which requires the intuition to discern patterns. Architects should be more imaginative and should have the ability to innovate rather that just being completely fact oriented and like S types. Thinking types are also desirable for this role as it requires analytical skills. For Droid team the chef architect was of the type N T and performs well in this role. Sound communication skills are equally important because they often need to interact with customers and senior management. Role High level skills required

Desired personality traits Suitable personality type Indicator

Software Architect • Attention to detail • Communication skills • Sound analytical ability • Adaptable and open to change Risk analysis • Intuitive • Innovative NT

C. Communication Liaison Many software engineering projects have the role of communication liaison, which acts as an interface between the development team and the customer. Also in case of distributed teams there is often a communication liaison that acts as the mail communication link between the two remotely located teams. Having one person as the single point of contact often avoids a lot of miscommunications which can happen if there are a multiple channels of connection between two parties. Droid team also had to face with similar challenges when communicating with Berkeley team, who were the main developers and maintainers of the Ptolemy project. Although we did not have the role of a communication liaison but usually a team lead was responsible for communicating with then through emails. We also had numerous telephonic conferences at different mille stones in the project. Although the Berkeley team was not our direct client but they were important stakeholders in the project. The main challenges that we faced were: first, there did not had a clear picture of the architecture and the design decision that we made until later in the development phase of the project. When the design was implemented they started questioning some of the decisions for example, the use of Google Guise that we used for dependency injection. This resulted is some rework in

5 the development. Second challenge related to following the coding and styling conventions that were part of Ptolemy project. We were not allowed to commit any code to the repository that did not follow these standards. So even a half finished or through away code has to follow the standards this meant a lot of extra work for the developers. A better communication between the team’s problems and the remotely located Berkeley team could have resolved these issues for some extend. A communication liaison would have communicated concerns of the team and project progress more frequently and articulately to the Berkeley team. A communication liaison needs the skills that make him an excellent at communication, negotiating requirements and, managing customer expectations. The personality type that suits this kind of skills is of an Extrovert (E) – outward focus and social, Sensing (I) – practical and realistic and Perceiving (P) – flexible to change and re-plan. Role High level skills required • • • Desired personality traits • • Suitable personality type Indicator

Client communication liaison Communication skills Negotiation skills Good interpersonal skills Practical and realistic Flexible EIP

D. Programmer or coder Programming is the task that involves writing computer programs from a specified deign so that it performs the a specific functionality. A programmer needs to have good knowledge of not only data structures and algorithms but also in depth knowledge of programming syntaxes and rules. It is also the responsibility of the programmer to follow the design specifications defined in during the design phase. The execution of programs depends on the logical flow of statements this demands a logical style of thinking. Also the programming is usually a top bottom process requiring attention to detail. Logical thinking and attention to details are personality trails of a Thinkers (T) and Sensors (S) type of personalities. Also most programming tasks like developing logical constructs and building module functionality are done in isolation and require little social interaction with other team members or stakeholders. Due to lack of social interactions programming tasks are more suited for Introverts (I). Some development processes use pair programming where two programmers work together. But introverts are good in one to one communication. So IST types are suitable for programmers.

Role

Programmer

High level skills required

Desired personality traits

• Sound Logical ability • Good analytical and problem solving skills • Ability to work independently • Top down approach • Attentions to detail • Logical thinking

Suitable personality type Indicator

IST

E. Tester or Quality engineer: The roles of tester or quality manager are important to ensure that the final product is of high quality. The role becomes of even higher importance in mission critical projects. Testing involves applying various verification and validation methodologies throughout the like cycle of the project to identify the bugs early as possible to save project costs and time. Testing is an activity that requires a lot of discipline and order in situations of high pressure due to approaching delaines. Testing is usually done individually and requires a lot of patience since it can be a monotonous activity. Testing requires a structured approach and demands attention to detail. The personality types that match such personality traits are high on S and J. Even in case of Droid team the team member B who has high scores of S and J performed better in testing and dug fixing related tasks than most of the other members in the team. Role High level skills required Desired personality traits

Suitable personality type Indicator

Tester or Quality Engineer • Structured and organized style of working Ability to work under pressure • Attention to detail • Plan oriented • Patience SJ

VI. OTHER FACTORS FOR BUILDING BETTER SOFTWARE TEAMS Although this paper is focused on relating different personality types to roles in software engineering teams but it would ne naive to only consider personalities of individuals while assigning roles to different team members. There are also other important factors that impact their performance of a software engineer in a role. Although many other factors are out of the scope of this paper but I will provide a brief overview of how these other factors are important will deciding different roles assignments.

6 A. Nature of the project The ideal team composition for one task is not necessarily ideal team composition another. Studies have been conducted on the effectiveness of team performance that compared a team with heterogeneous mix of personalities and a team with homogeneous set of personalities [10]. It was found that homogeneous teams performed better in structured and routine tasks that while heterogeneous teams performed better in unstructured tasks. So having a homogeneous team is not always the best choice. On the other hand forming a homogeneous team is not a idea where a large amount of innovation and creativity is required, because a homogeneous team a consensus can be reached quickly. So while forming a team the nature of the project also needs to be considered. It the project in a fairly common project with not standard well known solutions a team with homogenous personalities will be better suited. On the other hand if the project involves a complex problem and an innovative solution is needed a more team with heterogeneous personalities is better suited. The Droid project was a challenging project, which was indented to investigate the feasibility of a new concept in Ptolemy. A number of experiments were need throughout the requirements gathering and the design phase to address various challenges like high performance communication protocol, dynamic user interface design and dependency injection. So having a team with four heterogeneous personalities work well for the team because the project required an innovative approach.

B. Cultural differences In today’s world software engineering project more often than not are distributed across national boundaries. This distributed nature of software projects also brings along another set of challenges. This in not only true for real life projects in the industry but also true for student projects like in case of MSE studio projects. It is rare the case that a software engineering team will have all team members from a common cultural background. Due to the diversity in the cultural backgrounds of the software engineers, there are cultural barriers that can give rise to a number of challenges. Not only the team members have different ways to do things, but same things might be interpreted differently in different cultures. There are certain differences in perception that are result of cultural differences. Hofstede[11] identified five dimensions of national cultures. These are: Revering hierarchy, individualism/collectivism, talking case of business, risk avoidance and long term orientation. And each of these dimensions of culture impact the working of culturally diverse teams. But the answer the question of whether cultural diversity is good or bad for a software team is not that straight forward. Kerstin & Elli in their empirical study of impact of cultural diversity in software engineering teams concluded that if there is a fit between the team and the national culture, the engineers are happier and problems are solved more smoothly. A dichotomy is highly likely to generate dissatisfaction, convicts

and the ultimate failure of software quality management function. But cultural diversity is an almost inevitable part of modern software development projects so it is better to be prepared to deal with its challenges than to avoid cultural diversity. In case of MSE studio projects, teams usually have high cultural diversity. Droid team comprised of individuals, all from 4 different countries and 3 continents. So there was no lack of cultural diversity in the team. This it is essentially a learning environment for the students, the cultural barriers that the students face prepares them better for real life projects. VII. CONCLUSION It is important to understand that, although a personality type is suited to match the skills required for a specific role, it does not mean that other personalities types cannot acquire those skills. A personality type only indicates that certain abilities and skills are more naturally acquired by certain personalities than others. REFERENCES [1] An Improved Assessment of Personality Traits in Software Engineering, A. S. Sodiya,H. O. D. Longe, 2007. [2] Making Sense of Software Development and Personality Types, Luiz Fernando Capretz, Faheem Ahmed, 2010. [3] Identifying Effective S oftware Engineering (SE) Team Personality Types Composition using Rough Set Approach, Mazni Omar, Sharifah-Lailee, Syed-Abdullah. 2010. [4] Who Should Work with Whom? BUILDING EFFECTIVE SOFTWARE PROJECT TEAMS. Narasimhaiah Gorla and Yan Wah Lam. June 2004. [5] The Effects of Roles and Personality Characteristics on Software Development Team Effectiveness.K. Todd Stevens. March, 1998 [6] Personality Types, Learning Styles, and an Agile Approach to Software Engineering Education.Lucas Layman Travis Cornwell Laurie Williams. 2004. [7] M. Blumberg, C. D. Pringle, The Missing Opportunity in Organisational Research: Some Implications for a Theory of Work Performance, Academy of Management Review 7 (4) (1982) 560–56 [8] S. Acuna, N. Juristo, Assigning people to roles in software projects, Software – Practice and Experience (34) (2004) 675–696. [9] Sallie M. Henry and K. Todd Stevens, Using Belbin’s leadership role to improve team effectiveness: an empirical investigation. [10] White, K. A Preliminary investigation of information systems team structures. Information & Management (1984), 331–335. [11] HOFSTEDE, G. (1982) Culture’s Consequences, international differences in work related values. Abridge ed. Newbury Park: Sage Publication KERSTIN V. SIAKA,ELLI GEORGIADO, Empirical Measurement of the Effects of Cultural Diversity on Software Quality Management. [12] L. F. Capretz and F. Ahmed, "Making Sense of Software Development and Personality Types," IT Professional, vol. 1 2, pp.6- 1 3 , 20 1 0. [13] Lattanze A., “The Architecture Centric Development Method,” CMUISRI-05-103, School of Computer Science, Carnegie Mellon University, 2005