Good Teamwork Is Critical To Developing Good Quality Software Systems
The human effort is a core as well as critical concern for both the success and failure of the development of the information system. The execution of tasks involved in the development of the software is dependent primarily on the human effort (Fui-Hoon, Lee-Shang, and Kuang 2001). If the task small enough and can be handless by a single individual, then it is needless and uneconomical to engage in a team for such a goal to get accomplished. However, the increase in the scope of a task calls for means that a sole individual is not capable of performing the whole task to its completion (Faraj and Sproull 2000). Therefore it is true that every software developments completes it task efficiently and effectively by the help of a team.
A team refers to a small number of individuals possessing complementary skills and have a commitment towards a common purpose, a set of performance goals, and the approach in which they deem themselves mutually accountable(Chow and Cao 2008). There are four common types of teams classified as work teams, project teams, parallel teams, and the project management teams. The work teams comprise of members who are responsible for the development of products or services. Parallel teams encompass individuals from the different positions that come together to perform roles that a regular organization is unable to perform. This team is therefore purposed for problem-solving as well as improvement activities. Project teams are meant for producing a one-time output. Lastly, the project management teams are responsible for an overall performance of any given project. Software development teams, therefore, falls within the work teams(Faraj and Sproull 2000).
In almost all software development methodologies, the tasks are interdependently designed which calls for the team members responsible for taking those responsibilities to work with a high dependence on each other. As the task of the interdependency subsequently increases, there is a corresponding increase in the need for coordination among the members of a team. Depending on the nature and complexity of the goal, it is evident that the complex nature of the underlying tasks tends to increase exponentially. Thus calling out for a strong coordination among the members of the team to interact productively and work collectively, a situation which can only be attained via teamwork(Chow and Cao 2008).
The standard organizational form for the information system development is usually the team. The core strategy for the success of an information system development is to have different users actively involved throughout the system development cycle in the cross-functional teams to facilitate achievement of the end product in a manner that is more satisfactory to the stakeholders(Faraj and Sproull 2000). A team is the small number of individuals who possess complementary skills and are committed to a common objective and a set of the performance goals as well as an approach to which all of them are held mutually accountable. Members of a team interact socially and have a similar experience of the organizational context. A proper cohesion within a team is important as the overall goals of a team are much more important as compared to individual goals. Also, communication is a fundamental aspect of a team. The team composition should demonstrate flexibility. Usually, teamwork enhances collaboration. The ability of every team member to effectively collaborate governs the viability of the software house. Also, a single person working opposite to the intended purpose of a team or inhibiting its cohesion will reduce its effectiveness to a larger extent.
Role of teamwork in system development
The teamwork is a crucial aspect in software development. With regards to the traditional development approach, there is a close relationship existing between the team performance and the management of expertise. Software development teams also demonstrate much importance of the cooperative learning. Concerning the effectiveness models of Hackman, Mc Grath, and Gladstein, among other small group research, there is a clear demonstration of the efficiency of a team in the development of a project. The effectiveness model is expressed in the form of the input-output archetype, (IPO). This particular process is perceived from the way it is associated with the interpersonal relationships which are established among the members of an ISDT(Hoegl and Gemuenden 2001).
Both Stevens and Campion proposed an interpersonal dimension of teamwork centered on the ISD teamwork model. The interpersonal aspects include conflict resolution, collaborative problem solving and communication. The three elements as demonstrated by Robey, DeSanctis and Gallup, and White and Leifer respectively, expressing their significance in the development as well as the quality of a system(Fui-Hoon, Lee-Shang, and Kuang 2001). Team viability which is the capability of different team members working together in future depicts the Hackman’s measures of the effectiveness which is employed as the measure of team development(Chow and Cao 2008). Also, viability demonstrates the individual withdrawal behavior that can eventually result in a turnover. Therefore, strong team viability is critical to the improvement of information system development in the long run.
Teamwork gurus can be seen when the Fullstack Labs started with a team of two or three people making it easy track and communicate things verbally. To run the consultancy involved in running and building the technology, unique procedures and practices need to be applied in every procedure by every team member. According to Highsmith 2002, there was a need to develop a more formal procedure of the documentation and sharing of knowledge within the organization. Word documents were used as a pilot in sharing data but soon became unfavorable with dozens of pages making it hard to access the already existing information. A Guru was initiated to help solve the problem of documenting and sharing by forming a team known as the Development Best Practices. Fulltrack Labs serves in developing web applications, building mobile technologies, web and UI designs, and the general technology consultations (Laanti et al. 2013).
Since the teams function within the organizational context, the kind of conditions imposed upon as well as the kind of resources channeled to a team acts as the components of the variables which are conditioned by nature of the information system development deliverable. As a result of this, the team emerges to be entirely independent of different resources that are meant for the task as well as the general environment within which they reside. The key among these measures is the degree of the human resource information systems that are put in place. The presence of human resource information systems, therefore, should enable organizations to allocate human resources to the information system development teams better. The teams that are properly formed and constituted have a strong response to a significant number of adverse conditions subjected to the team while the ones that are poorly formed tends to succumb to the negative events(Meso and Jain 2006).
A team is composed of a range of people with strong expertise in distinct areas. Successful development of an information system depends heavily on different skills as well as experience in various technical areas. Expertise in content management is critical in content by employing Plain Language and the search optimization techniques, planning editorial calendars, development of the content style guides, and the creation of a sustainable governance model that is very significant in the information system as well as its stakeholders(Meso and Jain 2006). Team members with strong expertise in information architecture do focus on establishing an efficient and logical organizational structures which are important in the identification of the relationships that exist between pieces of content and facilitation of the sourcing of significant information. Also, the information architecture personnel are responsible for the designing of a navigation map, the definition of naming conventions, the definition of the file repository rules, and formation of the wireframing with a keen consideration of the information organization point of view.
Since the team works towards a common purpose of developing and implementing the system, it ensures a balance of the member contribution. The input of the task-relevant experience and knowledge of all members involved in the information system development is much beneficial to a team. The aspect of equal contribution is crucial to the software teams composed of members with strong expertise in different areas such as core development, testing, system architecture, and graphical user interface development among other sectors. Lack of a balanced contribution means that only a few members appear dominant in the discussions which might render other members less motivated for the work that in turn hampers the overall team performance. To curb such a situation from arising, it is important for the development process to involve teamwork(Faraj and Sproull 2000).
Teamwork ensures mutual support in the development of an information system. In the software teams, most of the interdependent tasks as well as a close collaboration among the individual team members give rise to cooperation as a central issue. Therefore, the competitive attitude that is majorly associated with self-interests at the expense of the overall performance of tasks entrusted to a team may provide less or no benefits to the work of a team. Giving assistance to team members when a need arises is, therefore, a paramount move as it enables other team members to contribute rather than sidelining them freely. Many agile system development methodologies comprise of a collective code of ownership that result in the stimulation of a mutual support as well as collaboration.
The team quality
Traditionally, the aspect of software quality seemed to depend solely on software engineering and the development methodologies which include structured programming and the agile development. High-quality software, however, is strongly dependent on the high-quality collaboration in the team(Meso and Jain 2006). Normally, the success rate of most projects of software development is low thus unleashing the importance of understanding the characteristics of the kind of interaction needed in the software development teams that have a strong influence on the performance. The six-factor team quality model demonstrates the relationship existing between the software quality and the team quality. Also, other factors such as trust, coordination of expertise, and value sharing are the essential teamwork qualities that have a significant impact on the success of the project.
Teamwork has significantly impacted the agile software development. The reason behind its application is that this kind of development has a firm reliance on the human interactions. Among the key component of agile software development is the agile teams. In addition to this method, distributed software development has also shown an overreliance on the teams. Most software development industries have employed this approach in the development of software with the aid of suitable resources available across the world for the desired outcome. In this type of development, the teams involved are characterized by temporary differences as well as boundary spanning hence commonly viewed as virtual teams or the global software teams.
Teamwork in Agile software development
In the development of most systems, agile methods are widely applied. These particular methods emphasize on teamwork more than the way the traditional development approaches do. The teamwork quality has substantial effects on the project success in agile teams. The agile methods of system development are usually employed as the umbrella term in describing different development methods(Faraj and Sproull 2000). The methods demand the application of a comprehensive documentation, quick response to a change in the course of system development, and the collaboration with the customer over the contract negotiation. To respond with agility to the changes, a strong teamwork is necessary working in close cooperation with more frequent communication, awareness of the efforts of other team members, and capable of shifting the workload between persons. In particular, the manifesto of the agile approach demonstrates that excellent architectures, designs, and requirements tend to emerge from the self-organizing teams. In addition to this, the face to face communication is regarded the best as well as developers and business people working together daily. Therefore coordination collaboration is the fundamental aspects of the agile literature(Chow and Cao 2008).
According to Laanti, Similä, and Abrahamsson 2013, the Scrum’s Team role to the agile software development indicates a dramatic departure from the waterfall management inspired by the shortcomings. Scrum focuses on the functioning software, collaboration, flexibility, and team self-management to help adapt to the emerging realities in the business world. The Scrum team is cross-functional made up of architects, software engineers, analysts, programmers, UI designers, testers, and the QA experts collaborating more intensely in tea rooms as compared to the traditional team (De Zoysa 2011). Scrum Master encourages the team members to cope with the modern development practices including the Test Driven Development (TDD). The team possesses the control over the amount of work to be done and the autonomy to decide when and how to finish the work (Cervone 2011).
Use of teamwork in agile software development paves the way towards the increased software quality and an improvement in teamwork as well as the team communication. The work teams in agile system development are autonomous. Unlike the traditional approaches where the development process is approached in a hierarchical fashion, work teams in the agile approach decide the way work is coordinated. With the consideration of a team, there is an increased quality, ability to deliver the software product iteratively on time, and improvement of the team feeling as well as an increased team communication.
Since the Agile relies on the face to face interaction, they projects emerge to be successful because they cultivate teamwork as well as building the trust. These teams are deemed successful right from their principles. These principles are all anchored on four core values. The values include customer collaboration over the contract negotiation, individuals, and interactions over tools and process, responding to change over by adhering to the plan, and working on the software using a comprehensive documentation(Hoegl and Gemuenden 2001).
Teamwork in distributed software development
The nature of distributed software development and agile software development appears quite the opposite in their processes. The agile development methods require an intense communication and collaboration where the members of the agile teams need to have a face to face interaction on a daily basis. The distributed software development, on the other hand, are leveraged across various locations. They help in maintaining the interactions within the team with the aid of both collaboration and communication tools. The distributed system development methodology does not favor the face to face interaction(Meso and Jain 2006). Despite the slight differences existing between the two methods, the concept of teamwork is fundamental in both the agile and distributed systems approaches.
Creation of an interdisciplinary team characterized with the right mix of knowledge and expertise skills is necessary to both fruitful and smooth execution of any given system. The team members can cover a broad range of roles. Also, there might be sub-teams for administering particular areas. The allocation of the resources depends heavily on the kind of expertise that team members possess, the available budget, and the scope of a project(Mumford 2000).
Teamwork is more important in almost all information system development approaches as compared to the traditional methods. Through teamwork, there is a motivation for unity within the workplace environment. Having a team work environment brings about an atmosphere which fosters both loyalty and friendship. With such an environment, the employees are highly motivated even to work harder, support each other and collaborate. Normally different people have diverse talents, communication skills, weaknesses, habits, and strengths. Without the teamwork, therefore, some challenges are likely to arise hence becoming an obstacle to the achievement of the set targets.
The teamwork provides differing feedback and perspectives. The teamwork structures offer a diversity of thought, perspectives, creativity, problem-solving approaches, and opportunities. Working as a team, therefore, permits the individuals to brainstorm collectively. As a result of this, the chances of succeeding in solving a problem as well getting the timely solutions more effectively and efficiently are increased. Teamwork permits the initiative for innovation and thus creating the competitive edge that facilitates accomplishment of set goals and objectives(Hoegl and Gemuenden 2001). Furthermore, sharing different experiences and opinions tends to strengthen accountability which is among the prerequisites for a faster efficient decision-making process. The effort of teamwork increases output from the instantaneous feedback as well as multiple sets of skills which include stages of designing, implementation and even planning which can sometimes be achieved immediately.
Application of teamwork in the system development process promotes the workplace synergy. Through the mutual support, cooperation, shared goals, and encouragement encourage the workplace synergy(Mumford 2000). This condition helps the members of a team to feel the greater sense accomplishment, they become collectively responsible for the achieved outcomes and also feeds the individuals with incentive even to perform at highest levels. In the agile system development approach, for instance, the members are usually made aware of their responsibilities and other anticipated roles together with the significance of their output that is relied upon by the entire team(Faraj and Sproull 2000). With such an awareness, the team members are encouraged to have a similar vision, goals, and values. The result is usually a workplace environment that is anchored on fellowship, support, trust, respect, and cooperation among others positive outcomes.
Developing an information system as a team improves both the productivity and efficiency. By including the teamwork strategies in the system development process, the team members become even more productive and efficient because it permits sharing of the workload, minimizes on the pressure off individuals, enhances performance optimization, increases the working pace, and makes all the set goals attainable. Usually, when a group of people works in tandem as compared to a single individual working alone, they tend to encourage a more efficient work output. Also, they facilitate faster completion of tasks as a result of many minds intertwined together on a common goal and objective of developing an information system(Chow and Cao 2008).
Lastly, the application of teamwork in the development process offers the team members more learning opportunities. Through collaborative working as members of a team, individuals can learn from each other’s mistakes. Future errors are therefore minimized and members gain the insight from distinct perspectives as well as learning more new concepts and ideas from colleagues who are even more experienced in the development methodology employed. There is an active encouragement in teamwork which generates future articulation and the innovative capacity of solving problems as well as creating the ideas more efficiently and effectively(Hoegl and Gemuenden 2001).
Teamwork helps in achieving software systems of high quality. The projects deal the objectives of the final products mostly defined by the requirements of the project commonly referred to as the software requirements specifications. The software developers need to consider various factors to ensure that the software serves the purpose it was intended for. These are some of the things that prove the worth or goodness of the system software. The software developers working on the software requirement specification need to ensure that all the concerns about the application are addressed before starting the development process. A functional specification approved by the client needs their approval to meet the customer’s wants. The software requirement specification entailing an objective to be met the performance, price, and the reliability objectives as well as the aspects of the user interface (Mundra et al. 2013). Software requirements specification helps in evaluating keenly the functions to be provided by the software, the goals it is meant to achieve, characteristics it should possess, and the users intended. The software requirements specifications of a project are crucial in determining the quality of the software.
In the early 1980s, sets of standards were developed majorly for system analyses and application designs applied in the Government’s computing projects. SSADM (Structured Systems Analysis and Design Method) sub-divides application development projects into stages, modules, tasks, and steps to provide frameworks in explaining projects in a way to manage the project. Its objectives are mainly to develop better quality systems, improve the management and control of projects, utilize fully the inexperienced and the experienced project development staff, and developing platforms for good communication among participants in the project work. Apart from this is that it also works to support computer-based tools such as the computer-supported software engineering systems. SSADM achieves this through a combination of various techniques such as the logical data modeling that identifies, models, and documents the system’s data requirements by separating data into relationships and entities. The other technique is data flow modeling concerned with data movement within the information system through examining processes, external entities, data flows, and the data stores. Lastly is the entity behavior modeling that identifies, models, and documents the events affecting each sequence and entity where the events occur (PAŞCU 2010).
SSADM covers the life-cycle aspects of the system from the point of feasibility study stages to the final stages of production achieving the physical design. SSADM creates a waterfall or cascade view of the system being developed with series of steps by working together with other vital methods such as the PRINCE covering the project’s management broader aspects. These steps include the feasibility, investigating the current environment, business system options, defining the requirements, considering the technical options, logical design, and lastly the physical design (Frappier and Habrias 2012).
SSADM results in good software because it is a very comprehensive model which can be supported by different CASE tool providers. This method is also exceptional in that it only uses the SSADM elements that are appropriate and relevant to the particular project. The SSADM application development projects are divided into feasibility studies, requirement analysis and specification, logical system specification, and the logical design. Unlike the other rapid application developments conducting the steps parallel, SSADM does this stepwise without any deviations from the model (Frappier and Habrias 2012). Due to its rigid structure of the methodology, SSADM is known for its control over projects in developing excellent quality systems. SSADM also cuts on costs, improves quality through facilitating on-time deliveries, effective use of skills as it does not require special skills to the staff and readily responds to changes in the environment (PAŞCU 2010).
In conclusion, the teamwork work is a fundamental component in the success of information system development. The agile methodology being an interactive process demands close collaboration among the members of the team each with skills and experience in different aspects of system development. Lack of the ability to work effectively within a team impedes the overall success of formulating, developing, and implementing innovative and new ideas.
Cervone, H.F., 2011. Understanding agile project management methods using Scrum. OCLC Systems & Services: International digital library perspectives, 27(1), pp.18-22.
Chow, T. and Cao, D.B., 2008. A survey study of critical success factors in agile software projects. Journal of Systems and Software, 81(6), pp.961-971.
De Zoysa, L., 2011. Software Quality Assurance in Agile and Waterfall Software Development Methodologies: A Gap Analysis.
Faraj, S. and Sproull, L., 2000. Coordinating expertise in software development teams. Management Science, 46(12), pp.1554-1568.
Frappier, M. and Habrias, H. eds., 2012. Software specification methods: an overview using a case study. Springer Science & Business Media.
Fui-Hoon Nah, F., Lee-Shang Lau, J. and Kuang, J., 2001. Critical factors for successful implementation of enterprise systems. Business process management journal, 7(3), pp.285-296.
Highsmith, J.A., 2002. Agile software development ecosystems (Vol. 13). Addison-Wesley Professional.
Hoegl, M. and Gemuenden, H.G., 2001. Teamwork quality and the success of innovative projects: A theoretical concept and empirical evidence. Organization Science, 12(4), pp.435-449.
Laanti, M., Similä, J. and Abrahamsson, P., 2013, June. Definitions of agile software development and agility. In European Conference on Software Process Improvement (pp. 247-258). Springer Berlin Heidelberg.
Meso, P. and Jain, R., 2006. Agile software development: adaptive systems principles and best practices. Information Systems Management, 23(3), pp.19-30.
Mumford, E., 2000. A socio-technical approach to systems design. Requirements Engineering, 5(2), pp.125-133.
Mundra, A., Misra, S. and Dhawale, C.A., 2013, June. Practical Scrum-Scrum team: Way to produce successful and quality software. In Computational Science and Its Applications (ICCSA), 2013 13th International Conference on (pp. 119-123). IEEE.
PAŞCU, P., 2010. The Stages of Implementation of the SSADM system in the Government Institutions. Journal of Applied Computer Science & Mathematics, (8), p.4.