Solutions to tough challenges rarely emerge from a vacuum. In order to understand the relationships between roles, let’s assemble a team.
Imagine a corporate intranet project aimed to collect orders made by users, manage those orders and users, gather and generate statistics. The application interacts with enterprise resource planning software (ERP) and enables automated generation of invoices of orders.
Inquisitively, we delve deeper: who are the users, and what are their habits? How do users register and log in? What products are being sold? Where does product information come from? Can different users have different purchasing conditions and price lists? What activities does the administrative process involve? Based on what criteria and under what conditions is statistics generated? What type of ERP are we dealing with, and does it have a functional interface? Does the ERP create and generate invoices, or does the intranet?
There are always so many questions that comprehensive preparation from every angle is near impossible. The best practice for solving such complex problems is thus a targeted and role-based distribution of activities and preparations.
To address the tough challenge, we assemble a team of specialists:
- Analyst
- Objective: thoroughly compile and document all functional and non-functional requirements and use cases related to the project.
- Outputs: Analysis documentation (preliminary or detailed analysis), development tickets.
- User Experience Designer (UX)
- Objective: investigate what the end user truly needs and define personas. Create a prototype and test it on end users.
- Outputs: user personas, wireframes, user scenarios.
- User Interface Designer (UI)
- Objective: create a visually consistent and appealing user interface design based on the tested prototype and the company's visual identity.
- Outputs: user interface design and related module elements.
- Back-end Developer (BE)
- Objective: based on the analysis, define the architecture and create a functional data structure for storing and modifying user and product information. Develop necessary integrations to serve both internal and external communication.
- Outputs: development code, linked databases, SQL queries, defined systemic constraints and permissions.
- Front-end Developer (FE)
- Objective: based on the analysis, user interface design and the rights and constraints specified by the back-end development, create a functionally operational and user-friendly visual.
- Outputs: visual development code, integration with backend systems, compliance with WCAG standards and user interface requirements.
- Software Tester
- Objective: through a methodical approach, identify deficiencies in the solution created by developers, comparing them against analysis, UI design, and non-functional requirements.
- Outputs: Tested application, development tickets.
It's worth mentioning that in such a team, the number of specialists and roles filled need not hold a 1:1 relationship. Depending on the complexity, scope, and timeline of the project, multiple team members may fill one role, or one team member may simultaneously participate in multiple roles.
For example, a designer in the team could simultaneously hold both the user experience (UX) and user interface (UI) designer roles. Similarly, a full-stack developer in the team could act as both a front-end (FE) and back-end (BE) developer simultaneously.
An exception lies in the separation of roles in service design and software development. This is because the skill sets of designers and developers are different enough not to have significant overlap. Exceptions prove the rule and consequently there are instances of previously code savvy designers.
Numerous examples of software testers turned developer as well as analysts who have dabbled in design and/or code. Diversity is great since modern software development relies on close collaboration. A deep understanding of various roles and activities provides the team with a strong advantage.