App development is like professional football. Companies are like teams and their employees are like players, coaches, and managers. After all, what happens backstage and between the games is equally important to the actual performance on the football pitch. Every member of the group is crucial for success, though their roles are different. Read on to learn all you need to know about the roles in software development teams!
Who is who in E2E project management?
The two main parties in every software development process are the Team and the Product Owner. They depend on each other and one cannot exist without the other.
In order to help you understand who works on end-to-end software development projects in Code & Pepper (and in many other companies as well), we’ll start with the team that actually creates the product and then explain the supporting roles (which, by the way, are vital on all SDLC stages).
The team and its members
On the technical side of the product development process are, obviously, team members, most of whom are software developers.
Developers and testers
The most typical roles in the bunch are developers and testers, however they are treated equally in Scrum teams and referred to as “developers”. After all, both groups are responsible for building the solution and making sure that it actually works exactly how the Product Owner describes it.
In most cases, there are three to nine developers in a team and they coordinate their work on their own. Such a self-organizing squad is expected to interact with the clients as much as needed in order to have a perfect understanding of their needs and immediate feedback.
In the case of larger teams, a leader can be designated to help move things smoothly. We are not going to discuss the roles of every possible team member, because teams vary from project to project, depending on the actual needs. Instead, let’s take a look at the most common ones and try to define what makes a team effective.
Who brings what to the table?
Depending on the project, the team may combine specialists in different fields, such as front-end developers, back-end developers, product designers, DevOps engineers, quality assurance engineers or even subject matter experts, if needed.
The Technical Lead can be more of a project role, as, in general, there are no designated team leaders in Scrum teams. In the case of larger teams, the Technical Lead is the leader, manager, architect and a senior developer – all merged in one person. While not necessarily an expert in all of these fields, a TL focuses on keeping track of progress, making sure every developer completes the job on time and, most importantly, coordinating and supporting other developers. All in all, it’s a very helpful role in complex projects.
Specialists in UX design, UI design and information architecture can be all listed under the collective term of Product Designers. Their work is key before developers even show up. In fact, we could call designers artists who create the whole image of the future app. They come up with ideas regarding how it should feel and look like, as well as translate the language of business into what the final product actually is. Moreover, they’re present throughout the development process, analyzing how changes influence the user experience or conversion rates and redesigning the components in an ongoing process of upgrading.
Developers (front-end and back-end)
There are two basic types of developers in virtually every product team: Front-end Developers and Back-end Developers.
The former are responsible for implementing the visual layer of the application that the user can interact with: the application interface with all its buttons, text fields, checkboxes, scrolling bars, etc. Nowadays, the most difficult part of the job is making sure each component works identically on every device. It means working with thousands of models of mobile phones and tablets with different operating systems, various web browsers and even smart TVs.
The latter do what it takes for the application to actually perform well, not just look nice. Back-end Developers create the whole engine of an app, starting from planning and designing its architecture, to executing the plans in the form of code. They solve technical dilemmas and act as consultants — if Back-end Developers find a better way to do things or a better solution to a problem, they will definitely share it with the team.
Worth noting: many teams nowadays prefer to use a T-shaped developer model, in which Front-end and Back-end specialists share parts of their skills and roles. In other words, apart from being experts in just one field, they are also familiar with the basics of other roles. This way, they have a better understanding of the problems their teammates need to deal with and can work in a more agile way.
Quality Assurance Engineer
Trust, but verify – as the old Russian proverb says. Software development is a complex process and sometimes errors happen. The QA Engineer makes sure all of them are found and fixed before release. Besides testing performance, usability, security and portability, as well as verifying that the application meets the end-user’s needs, QA experts are present on most of the work phases. They create the project documentation, prepare test cases and finally – it’s up to them to confirm that the final version of the app can do everything that was planned and does it well.
The most important aspect of having a skilled QA Engineer on board (besides the obvious problem-solving skills) is that they can save the rest of the team a terrible headache.
If developers are people who create a usable and performant app, a DevOps Engineer is the one who makes sure it is resistant to unexpected events. Consider issues like sudden spikes in user activity, a need for urgent upgrades and being 100% sure that the system operates with its full potential 24/7 or is available from all possible locations in the world. In this context, a DevOps specialist is like a SAS operator of software development. That’s because modern app hosting mechanisms are deeply rooted in development and often intertwine with the software development world, which makes the DevOps Engineer needed on all stages of SDLC.
Such specialised work must cost a fortune and it’s partially true. While hiring a DevOps seems expensive at the beginning, it’s always an investment worth the price. Because DevOps engineers ensure that the product is balanced, scalable and ready for continuous delivery, they ultimately help reduce the running costs to the minimum, thus maximizing ROI.
Product Owner’s part in the process
It’s the PO’s responsibility to voice the needs of the client or the stakeholders and make sure the team delivers the anticipated results. The PO defines what the product actually is, manages the backlog and sets priorities (while remembering about dependencies, not just importance-wise). There should be only one Product Owner (as a single point of contact for this domain) per a Scrum project, but one PO can work with several projects. Also, the PO function cannot be combined with that of a Scrum Master.
The main focus of product ownership is the business side of work and communication between the stakeholders and the development team. However, a good specialist never forces the team to anything, but rather communicates the client’s needs in a simple, non-technical way.The most important responsibilities of a Product Owner are:
- To define the vision
- To manage the product backlog
- To prioritize the needs
- To oversee the development stages
- To anticipate the client’s needs
- To be the link between the stakeholders and the team
- To evaluate the progress
Project Manager (PM)
In companies that develop software in a B2B model, such as Code & Pepper, a dedicated Project Manager is necessary to maintain the project as a commercial engagement and to establish dialogue between the stakeholders and the team. The PM drafts and manages the budget and schedules, as well as the key processes: risk management and scope management. There is more, though, and the PM’s list of duties places this role among the most important ones. Here’s what a typical PM is responsible for:
- Creating the project plan and work schedule
- Managing deliverables according to the software project plan
- Building the project team
- Leading the project team
- Setting up the project framework
- Establishing all key domains of the project
- Reporting to stakeholders on the project status
The Sponsor can be either one person or a group of people representing stakeholders or the stakeholders themselves. However, if there is more than one Sponsor, only one person should have the authority to state what the decisions are.
Project Sponsor’s purpose is to provide resources (money) and directions (client’s needs) needed to finalize the project successfully. As such, the Sponsor works directly with the project management team, providing feedback, monitoring the progress and influencing the partners. In case of problems that are beyond the Product Owner, the Sponsor provides an escalation path for decision-making.
Typically, Project Sponsors are senior managers, directors or other high level executives and never share roles with Project Managers, Scrum Masters or Product Owners.
Connecting the dots
All in all, end-to-end software development is a very specialized process that results in an app created specifically to meet the client’s needs. To achieve this goal, the software house needs a perfectly balanced and coordinated team of specialists. What features are key to make sure such a team can succeed?
- They can communicate accurately and swiftly.
- They work together towards a common goal, rather than focus on their particular tasks.
- They know exactly who is responsible for what.
- They have positive feelings about each other.
- They are coordinated and can work together effectively without external task coordination.
It’s not easy to build such a team using just an HR agency. Success is much more probable when outsourcing the job to a company with relevant experience or, if applicable, using a Team Augmentation service provided by a reliable partner.