Programming is sometimes romanticised as a solo activity, where brilliant lone programmers work late into the night writing code. But this isn’t how most software is made – developing software is a team sport.
In the real world, most software is made by teams. Development teams work together to deliver working products. The structure of these teams varies and this may be down to the nature of the project they are working on, or how an organisation likes to manage and run projects.
Not everyone on a development team is writing code. Alongside software developers, you might find testers or ‘QAs’ (short for ‘Quality Assurance’), who test the output of developers to confirm it behaves according to a specification.
You will probably find at least one person responsible for organising the work around the product. This may be a project manager, although there are other named roles that take this responsibility, such as scrum masters. There may also be somebody who sits between the development team and the business, defining priorities for what to work on, and guiding the shape of the product – usually known as a product owner.
Developers on a team may have similar skills and capabilities. However, some developers may have job titles that indicate expertise in a particular discipline or aspect of the product. Some teams may contain developers at a variety of levels of experience, with more experienced developers taking the lead whilst continuing to support and train junior developers.
Most development teams will work with other departments in a company on a product. For example, they may work with:
designers or design researchers
hardware engineers
teams responsible for written and visual content.
It’s increasingly common to see what are known as ‘cross-functional teams’. A cross-functional team is like a company in miniature: it contains a few people from each of the disciplines required to deliver a shared goal. For example, a cross-functional web development team may consist of:
a number of developers (perhaps at different levels of experience)
a designer
a product owner
someone responsible for content
dedicated research or QA staff.
This team contains everyone necessary to deliver part of the product, rather than having to co-ordinate between many departments.
There are many processes that teams might use to organise their work. A team’s process may affect its make-up for instance, whether specific roles are needed to manage that process (such as scrum masters and product owners). Increasingly, software is made in ways described as agile, which prioritises the ability to respond quickly to change over sticking rigidly to plans and following processes.