Who are the Members of an An Agile Software Development Team
Disclaimer: Different projects may consist of different development personnel. This team composition may not apply to all contexts.
The main downside to outsourcing is the risk you are taking. Not all outsourcing projects turn out well. Your best defense against risks is knowledge: Before you dive into deep water, you dip your toes. Before dipping your toes, you'll need to know where you are dipping your toes into.
Let's start.
One of the first things you need to know is the composition of a software development team. Who are the people you are investing time, energy, and money on to work on your project? What are their roles?
Account manager (AM)
Building software is expensive. Building software the wrong way is two times more expensive. This is why an account manager is important to your custom software development.
An account manager is the person who oversees the big picture of a software development project. They help map out your goals so that they can propose solutions according to the problems that you are trying to solve.
An account manager keeps expectations and assumptions in check. They do not make decisions for you but they do help you make informed decisions. They offer solutions based on your budget, deadline, goals, expectations, and business context.
Whenever you choose a solution over another, they inform you how it will impact your business. In other words, they let you know what is good, what is bad, what is best, and what can be right for you at the moment (with consideration to your project's drivers and restraints.)
Chief technology officers (CTO)
A chief technology officer (CTO) performs different roles based on different contexts. In the context of developing your software, a CTO is the senior technician that guides the technical aspects of building your project.
A CTO performs various roles:
- Identifies failure scenarios of software and plans against those failures. This greatly cuts down the risks of your software project from failing.
- Design the infrastructure of software so that it functions well when deployed. This prevents a scenario where software performs well in local machines; but performs poorly when it is up for grabs by end users.
- Implements solutions that are in line with software trends. This prevents your software from becoming outdated in the next few months after its release.
- Brings technical and non-technical people together. They communicate your needs to the developers so that software is built exactly as you need it. Conversely, they keep you up-to-date with the progress of your project.
- Creates cultural values. A CTO motivates developers and non-technical team members to learn continuously; and create a passion for their jobs. Great culture leads to higher project success, better output quality, and overall well-being for employees.
Project manager
The project manager turns the vision of the account manager and CTO into actionable plans. Broadly speaking, a project manager:
- Defines project scopes so that the allocated timeline and resources meet client expectations.
- Eliminates risks may prevent a project from meeting the expected budget and schedule.
- Identifies and resolves impediments that prevent software to be delivered at the expected quality or deadline.
- Helps team members meet standards of performance.
- Sequence tasks so that dependencies are met. Unmet dependencies can lead to a delay.
- Manage team dynamics so that individuals can develop into a team and perform productively together.
Front-end developers
Front-end developers are the people who design and build the visible components of a software or an application -- also referred to as the client-side of an app or software. They are in charge of the presentation part. They make sure that:
- Software looks good
- Users find buttons and information where they expect them to be.
"Front-end developer" is a generic shorthand. While there are developers who specialize with everything that you see and interact with on software, front-end developers specialize on different front-end programming languages.
Some may be more focused on the physical appearance of an app or software. While others may be more focused on how the visible parts of software function; while others focus on how visual layout and user actions can deliver quality user experience.
Back-end developers
While front-end developers deal with how software looks, back-end developers implement code that define how software works. They implement the business logic that an AM and a CTO have designed together with the product owner.
You can think of it this way: front-end developers wait on clients' tables, while back-end developers cook food. Back-end developers also deal with code that makes an application secure and scalable.
Full-stack developers
A full-stack developer is capable of working both the front- and back-ends of an application. While a full-stack developer may not specialize in every platform or language, they are expected to be able to solve problems in both the client- and server-sides of a project.
A full-stack developer is ideal for smaller projects at the beginning phase. Bigger projects may require more specialized roles because a full-stack developer runs the risks of:
- being overloaded with tasks; and
- being more limited in expertise compared to developers who specialize in a language or platform
Quality Analysts
In an agile setup, a quality analyst (QA) steps in early in the software development process. Instead of being at the end of the line, an agile QA takes part in different stages of development.
- Define test scopes and write tests that cover the component of those scopes.
- Define the level of quality at which a product can be considered as acceptable to end-users.
- Perform automated and manual testing.
- Write scripts to automate tests.
- Suggest the sequencing of task priorities.
- Help developers analyze the cause of bugs.
- Assume the role of a proxy product owner.
- Explore areas that need to be tested outside of the test scope.
- Support developers and project managers by sharing the insights they gathered from testing.
- Help ensure that a project meets schedule by handling problems early and proactive.
The variety of functions that a QA performs reflects the role distribution in an agile environment.
User experience (UX) and user interface (UI) designers
Traditionally, a UX designer creates wireframes and user flows which are then submitted to the developers. In an agile development team, the traditional roles of UX and UI designers may be distributed to the entire team. This has its own benefits:
- There are fewer people to manage.
- Knowledge is shared easily because not one person holds the information to UI and UX.
- Members of the team collaborate more because they each have a piece of the UI and UX design that they can contribute to.
The draw back might be that there is not one expert who focuses on this aspect of software development. But this compromise does reflect the trend in agile development: more skills, fewer hands.