SoftwareHut is an Agile development software house. We firmly believe that agile development approach is the primary factor in our success. We try to evolve this well-established methodology within our projects and adjust its main guidelines to our clients’ needs and projects’ goals.
We also regularly work on optimising our processes and structures to catch up with a demanding complexity of new systems to be built. Following this path, we discovered in the recent time that features teams based structure is one of the best Agile team structure for our software development projects.
Transition to feature teams
We quickly understood that our approach isn’t optimal for every project we led. Sometimes it can be associated with such drawbacks as time-waste caused by hands-off and reduced communication, implicated by misunderstandings between specialists gathered around different layers.
Experimentally, we gathered some of our developers from various specialisation areas to create one team. Then we found out that communication between front-end and back-end specialists rose substantially. Furthermore, issues were resolved much more quickly and easily.
It motivated us to transit our engineering culture to feature teamwork. Of course, we’re aware of the fact that one methodology perfect for the particular project, may not be ideal for the other one. However, we try to implement feature team approach as a natural amplification of our Agile development culture to the most of our projects. We believe that feature teamwork brings our clients measurable benefits and creates the most favourable environment for IT pros.
Benefits of feature teams
Below are the most significant reasons, why we structure our teams around features:
Scaling up Agile Development
Teams oriented along technology layers face challenges with integration, hands-off and communication misconceptions. Feature teams based development is a natural consequence of our agile development approach.
According to Agile methodology, a product should be delivered in small, frequent deliverables of working and well-tested software. Feature teams are gathered around customer-centric features and include the full scope of software development roles – developer, architect, analyst, tester, etc. They are given complete requirements, keep all dependencies within the team and can deliver a full customer feature.
End-to-end delivery of working features
In the feature team model, each sprint ends up with building new end-to-end functionality. A team must go through all levels of the technology stack, so there is no place for sprints without explicit product increment (as per Agile methodology). Moreover, feature teams are self-managing units, which don’t require a project manager, because their goal enforces them to self-coordination and cooperation within the team to ensure end-to-end completion.
Better code quality
Shared responsibility for delivering working end functionality creates pressure on the team to keep the code clean and increases competitiveness between the teams working on the same project. Additionally, the whole-team responsibility of the end-to-end feature empowers product usability by a focus on customer and market value.
The power of a balanced multidisciplinary team
Feature teams work on a complete customer-centric feature across all components, architecture layers and disciplines like designing, analysing, programming, testing, etc. A team is built by multi-skilled people. That means that they can switch between different functions and their roles are not limited to only one software development competency. For example, a developer can deal either with programming, as well as with analysing, or even testing if needed.
Team members hold their primary roles but are open to learning new functions. That is how the power of learning-oriented structure reveals and influences the quality of the whole process. Feature teams are supposed to be long-lived groups, which work together even for years. Combining that with a learning-focused approach, gives an opportunity to create a bunch of top notches IT pros with cross-functional competencies and excellent communication skills. Moreover, such team structure stimulates higher performance and better quality.
Highly effective communication
Feature teamwork is based on small, co-located teams that can easily communicate daily, ensuring a clear developing process and open communication. Such work environment empowers teamwork and builds team rapport. Another dimension of co-location is enhancing learning processes on the individual and group level by partnering experts in a variety of specialisations.
Minimising the wastes of handover, waiting and underutilised people
In traditional component software, development model work is handed from one team to another, and that’s time-consuming and generates risks to the project. There is always a danger that the developed functionality is not good enough for the next team to work on. Conversely, feature structured development reduces significantly waste of handover. It means less waiting and faster results.
Feature team development requires clear structure, and that reflects in practice by separation of application modules and assigning them to separated multi-skilled teams. Parallel work of many teams on different application modules accelerates the whole software development process.
Another factor that increases feature teams’ pace of work is a local decision-making process. Decisions made locally within a team instead of a decision taken by project managers or steering committees optimise time, reduce waiting and being held back by dependencies. Thus the whole team is much more productive.
Feature teamwork drives innovation. Small, cross-functional groups are highly specialised in their part of the job. Team members feel secure and confident with each other because they work together for a long time and have good communication flow. People aren’t afraid to offer and test new solutions. In addition to that, decisions are made locally, so there are no obstacles in the creation process. This work environment shapes the culture of innovation.
Autonomy and responsibility drive motivation
Feature team members derive profound benefits from shared accountability and team autonomy, also on an individual level. They feel higher motivation and job satisfaction because they can work on the end-to-end feature and as a consequence, they have complete control of ultimate results of their work. They make a decision independently, what gives them uninterrupted workflow within their group and leads to higher team productivity.