Without developers/programmers/developers, of course, you can’t go anywhere. These are the key people in any IT team, they are the ones who directly create the software product or complex configuration of a basic out-of-the-box solution. Developers who understand (or at least want to understand, let’s be honest) the business side of the issue are of no value.
After all, there is a business need behind any software product and at least a rough understanding of it by the software development team is a significant advantage and makes everyone’s life easier. Teams value developers, and such developers especially, and some of the most successful project managers grow out of them. As the company grows, it is necessary to allocate a separate employee to each function. In a classic custom software development company, this is what happens. This is most clearly seen in the stages of software creation.
The stages of software creation are:
- Creation of the concept/TOR;
- Elaboration of the software architecture;
- Creation of technical documentation;
- Implementation of the project;
- Testing and acceptance;
- Technical support.
Each stage should have its department with its tasks:
- project office;
- software design department;
- testing and documentation department;
- software development department;
- implementation and maintenance department.
The main composition of the group are specialists fully engaged in the creation of a new software product:
- project managers;
- documentation developers;
- engineering psychologists;
- software development technologists.
An auxiliary group is specialists who are not involved in the creation of software, but play an important role in the implementation of the project:
- product management and marketing group;
- software technical support specialists;
- beta-testing administrators.
Development Should be a Collaborative Process
The team should avoid a process where one person writes requirements (even minor ones) and another person implements them without a strategic direction. The product manager and developers (and any other stakeholders) become partners from the beginning to the end of the software development of a product feature.
First, the team, including the managers, must formulate strategic objectives in the form of a question. These objectives are always aimed at improving the product when viewed through the eyes of the customer. They should be considered the mission of the team. The entire team, including the project supervisors (and customers), leads the software development of the objectives. Each team member is asked to share their ideas at any time.
For example, at one bank, the team had these tasks: to help clients better prepare for potential financial shocks and to turn supporting clients’ healthy financial habits from duty into a pleasure. Lots of people came up with dozens of ideas to solve these problems.
In any product software development team, the following team roles can be identified:
- Developer. Engaged in the production of software products. This is the role of an implementer: a manager sets a task to automate one or another process, a developer fulfills it.
- User Experience Designer (UX). Engaged in the production of user experience maps. This person studies and evaluates how users feel about the software being developed. He is responsible for ensuring that the product is easy to use, perceived value, usefulness, and efficient. He or she thinks through and evaluates software processes and usage scenarios.
- User Interface Designer (UI). He or she produces the graphical component of the interfaces. This person develops the visual part of the user interface. The main goals of a UI Designer are intuitiveness, simplicity, usability, and aesthetics of the software interface.
- Quality Assurance (QA). It is engaged in checking the result. QA is concerned with testing everything. The QA specialist’s systematic approach allows testing both the software code and the thoughtfulness of the user experience maps.
- Human Resource (HR). Is engaged in the initial recruitment of candidates. It ensures that all phases of employment interviews are transparent.
- Team Leader. Responsible for the work of the group of specialists. The Team Leader provides a comfortable working environment for the team and maintains a high level of team efficiency. This person does not have to know the specifics of the team’s work thoroughly. For example, the Team Leader in the software development group does not have to be a programmer, he only has to understand how to organize the work, understand the processes during the production.
- Scrum Master. Scrum, Agile, KanBan, agile methodologies, and other theoretical knowledge, which is extremely useless without practice and experience. A Scrum Master is a specialist who helps the team to apply the Scrum methodology correctly, explains the rules of the methodology, monitors its implementation. Now the software development teams began to attach the role of Scrum Master. He is responsible for the competent application of a particular agile methodology (sometimes even one that does not concern Scrum at all).
- Project Manager (PM). Responsible for project initiation, management, and delivery. This is a classic process manager role. Project work begins with the Project Manager, is managed (tasking), controlled (quality and efficiency control), and handed over to him/her. In most companies, the Project Manager manages the project fund.
- Architect. The Architect’s main responsibility is designing the software architecture, i.e. making the key design decisions about the inner workings of the software system and its technical interfaces.
- A Business Analyst. He communicates directly with the customers of the product and finds out their needs and requirements. The task of the business analyst is to understand what the customer wants, how he/she sees the product, which will be developed by the team, the product’s purpose, and what tasks it will solve. At the moment of communication with the customer, the business analyst can offer his ideas for improving the product and together with the customer to form a so-called vision.
- A System Analyst. Engaged mainly in data analysis and making decisions about how the system will work, what methods will be used, and writing the main technical documents (terms of reference or TOR, specifications). An important part of the work is the functional analysis, which highlights the list of functions the system should perform, as well as defining the requirements for the system.
The Team Should Strive to Collaborate
To prevent team members from shifting tasks on each other, they must act as a single cross-functional team. Its goal is collaboration. Each such team should include the number of specialists needed to create the product, including, if necessary, senior executives. For example, in one organization, a product software development team includes a product manager, developers, a designer, a quality specialist, a customer service representative, and a top manager overseeing the project.
In many companies, cross-functional teams are only called that but operate differently. The signs of such teams are:
- experts work in more than one software development team – as “acceleration teams.” This is not a cross-functional team;
- the team uses methods that interfere with the real collaboration. When developers from one team were asked why they chose such and such agile tool, they replied that “this tool prevents management from interfering with the work”;
- departments have different goals. Department heads use their power to force subordinates to put departmental goals above all other goals, including those of the cross-functional team. These conflicts interfere with true teamwork.
Strictly hierarchical HR processes, such as performance reviews, reporting to superiors, and motivation through fear of termination in the absence of career advancement, destroy teamwork. As a result, team members focus more on their superiors than on customers or compete with each other. They don’t work as a unit, realizing the goals of their unit rather than the team. In this environment, it is difficult to achieve cooperation and consensus without constant help from above.
The process of software development on a project is only fully established if each member of your team knows their goals and objectives, understands their contribution to the overall effort, and what the result is to be. At this stage, it is important for the manager not to take their hand off the organizational pulse. Misunderstandings within the team and when communicating with the customer arise all the time, so it is necessary to monitor disagreements in time and return the work process to a productive track.