For smaller projects, you can use no-code tools or the work of a single programmer. He or she must be full-stack, i.e., be able to create the backend and frontend layer. Building a website in this way is tempting due to simplified management and lower costs. However, web development is a complicated process, and the difficulty may increase exponentially with the website's complexity. Therefore, we put together a complementary team for larger projects that'll handle the assumed complexity.
What is a project team?
A project team is a group of people who work together to create some software, in our context – a website. This job is complex, creative, and requires adaptability as technological challenges arise and business requirements change.
A team may consist of people assigned to a given project who are involved in it for 100% of their time or specialists who divide their time and expertise between different projects. Depending on the choice of a project management methodology (e.g., Waterfall or Scrum), team members may be needed only at selected stages (e.g., architects or UI/UX designers – only at the very beginning) or throughout the entire web development process.
For complex projects that are inherently hard to fully specify, agile methodologies will offer much higher value than Waterfall. Thanks to the iterative approach, the project is implemented in stages, which allows us to check whether we're making adequate progress, as well as adjust the next scope of work to the needs that may change. Instead of creating a long specification for several weeks or months, which may have a good chance of becoming outdated (as we operate in rapidly changing conditions), we create increments of work that bring us closer to the goal, even if it's changing (e.g., due to market conditions or new business requirements).
Web development team structure
A software development team dealing with creating websites may include various roles. Usually, it consists of the ones we describe below.
Project manager is a person keeping all threads of the project together. PM is responsible for organizing, planning, communicating, and implementing the project within the adopted time frame, budget and scope. Although every project is different, there are several characteristics of project managers that will be especially important in complex undertakings.
- Adaptability – complex projects may evolve many times before they're considered complete, so the ability to work with changing assumptions and goals is highly desirable.
- Ability to work in parallel with teams or individuals, both within the company and on the client's or coexecutor's side.
- A clear, responsible, and transparent way of communication.
- Project management competencies – selection of methodologies, knowledge of tools, know-how.
- Leadership and responsibility. A project manager is a role that has no authority over other web development team members. Such a person should be able to manage, motivate, and take responsibility for successes together with the team, but also be able to accept feedback from the client, analyze it properly and implement the suggested improvements in everyday work.
It’s a person responsible for high-level project decisions related to the overall structure and behavior of the system. This role is usually filled by a very experienced developer who has the competence to create a vision of a complementary solution tailored to the constraints of the project.
It’s a team of software engineers with competencies tailored to the project's needs. Teams of this type may represent a variety of characteristics. For complex projects, the most important are: experience in working on extensive or complex solutions, communication skills (not only within internal structures but often also external ones), and the ability to effectively solve problems.
These are the roles that combine artistic skills with technical and craftsmanship ones. People in these positions are responsible for coherent visual communication that implements the client's goals while taking care of the aspects invisible at first glance. An experienced designer remembers about the good practices concerning usability, user experience, meeting the accessibility standards (e.g., for the visually impaired), designing solutions so that they work on different devices (e.g., phone, tablet, laptop, a large monitor), and the technical limitations imposed by the project or its target group.
QA team (testers)
The QA team (testers) deals with quality assurance. This job involves running various tests to catch defects, compiling a list of them, and sharing it with developers so they can make the necessary fixes. Sometimes when fixing one bug, a programmer creates another in a different part of the code. Then we talk about regression. Catching it in complex projects can be tricky. An experienced QA selects the appropriate testing methodologies tailored to the specifics of the project. For example, they create a set of automated tests (smaller programs) that are executed when some conditions are met, e.g. when a developer finishes working on their task.
Other web development team members
In more complex projects, there may be a need for additional specialists, such as:
- UX researchers. They conduct focus and usability tests, eye tracking (tracking eye movements to check the perception of a given element), and then provide information on the perception of the product by users.
- Business analysts. They deal with advanced data collection and analysis and usually work with the product owner. By analyzing large data sets, they're able to present conclusions that may be of great importance for business decisions.
- SEO specialists. They help with the proper search engine optimization of the website.
- Marketing or content marketing specialist. They participate in tasks related to the website's marketing strategy or content.
- ML/AI specialists. They deal with machine learning and artificial intelligence. They analyze and process huge data sets (tera- /petabytes) and create texts, images, and even videos based on the consumed content from the Internet.
How to compose a good web development team?
A properly selected team significantly increases the chances of a project's success. How to do it right? We should learn the client's needs, choose the optimal project management methodology, define the client's involvement in the web development process, select the appropriate team roles, and then find and assign specific people to them.
Analyzing project requirements
This activity should take place during one of the initial stages of work. A metaphor for requirements analysis can be a bridge connecting business and IT. Thanks to the analysis, we learn about the functional requirements (e.g., whether the user will upload photos from a computer or directly from a mobile phone), which will entail some IT solutions (the solutions presented in a mobile application will be different than those on a website intended for computers). The more we understand these requirements, the better we'll be able to anticipate what roles we'll need in the team.
Determining the required competencies
We already know what the client needs, and we've defined the roles that'll be needed in the web development team, so it's time to ask ourselves if we're able to build such a team. We may find people in our company who meet all the competency requirements, but this doesn't necessarily mean that they'll be available during the project implementation. Therefore, there may be a need to hire or consult third-party specialists.
In the case of larger web projects, it'll be crucial to appoint a single stakeholder who'll receive and accept subsequent stages of the work. It should be formally agreed upon with this person how much time they have to accept or reject new parts of a project. If we don't ensure this, there may be delays that'll negatively affect the work rhythm (e.g., the course of Scrum sprints).
Establishing software development team size
Large projects mean either longer time needed to complete them or employing bigger teams. There are certain limitations that we can't overcome. Scrum teams usually consist of 6-9 people, and these are the product owner, scrum master, and developers. In the case of larger projects, we can assemble more scrum teams that can work on different website functionalities in parallel.
When working with a client, we often join forces with their specialists. For example, when creating a landing page for a marketing campaign, we work with a person from the marketing department who provides industry information, performs tests, and accepts the work done. We may work at the same time with yet another company specializing in a narrow field that's necessary for us in the project. The higher number of different entities involved in the project, the more it needs to be well-coordinated, with properly synchronized communication, expectations, deadlines, and responsibilities for separate components.
Indication of all specialists involved on the client's side
If we cooperate with specialists on the client's side, we should establish clear and transparent rules for this cooperation:
- How will we communicate? Via e-mail, Slack, or maybe Teams?
- Where will we create tickets, and how will we inform each other about them? In the Jira or Asana tool?
- When can we expect answers to questions, and how fast are we able to provide them ourselves?
- Who's responsible for making final decisions, especially when a compromise isn't an option for some reason?
At first, it may seem that such arrangements are all style over substance. However, experience shows that this is an important stage of cooperation, which, if properly implemented, will help to avoid many problems and delays.
Engaging outsourcing company
If the team lacks people with knowledge in a narrow field, we can look for such specialists in outsourcing agencies. They have a database of specialists from various fields who provide their services, usually for a specified period, joining projects on the fly.
How to choose an outsourcing agency? We look for an agency that offers the work we need, is able to provide its services at the time that suits us, can adapt to our work methodology, and is within our budget. If we don't have a prior relationship with any of such agencies, it's worth looking for opinions about it on websites such as G2 or Trustpilot.
Planning web development team's work on a large website project
A project that takes six months and involves one standard scrum team (7 people) is already complex. If we add to this the need to cooperate with 2-3 teams or external specialists (e.g., on the client's side) and new technologies, we'll face a real challenge. We minimize the difficulty with experience, professional project management methodologies, tools, and processes that reduce potential problems.
When dealing with large projects, one should pay attention to issues such as:
- Working in a group of developers vs working independently. In the case of teamwork, we'll use a task-tracking tool (e.g., Jira) to have an overview of who's doing what in the project. Several people will be working on the code in parallel, so the use of a version control system (e.g., Git) will be different. When working with a QA team, we can use specially prepared testing environments that'll be separate from the production ones. Organizing it may be much easier in the case of independent work because there's no need to ensure transparency or maintain the proper pace of parallel work.
- Work planning. We have to take into account the progress of parallel works. Sometimes when dividing tasks between people, it may turn out that task X can't be started yet, because task Y, handled by someone else, must be completed first. Then we need to move task X in sprints and wait for task Y to be finished.
- Noting the arrangements. Everything should be described in a project management tool (like Jira) and documented (there are various options here). In the case of a six-month project for three people, no one will remember the arrangements agreed upon half a year ago.
- Communication. It won’t do without daily meetings and exchange of information about who's doing what and what they are currently working on. This is the right time to check whether we're going in accordance with the plan or if something still needs to be unblocked.
If we've been working so far on smaller projects only, and now we're faced with something larger, it's worth using the services of a company that creates websites - e.g. a Drupal agency - so that we may confront our vision with their experience.