Join Jose Miguel Rady Allende for an in-depth discussion in this video Intro to team management, part of Learning Visual Studio Team Services.
- [Instructor] Working in a team setting for any project can be challenging. Whether you're the manager, a developer, or any number of other team roles, meeting expectations and delivering high-quality work is difficult. Visual Studio Team Services is a tool that can help us collaborate more efficiently as a team. In this video, we'll discuss the importance of staying aligned while having autonomy when collaborating with other team members. Finding the right balance between these two will allow you to interact more effectively and achieve better results.
Let's start by defining what is meant with alignment and autonomy. When I say alignment, what I mean is the ability to track work consistently across teams. In the other hand, autonomy is the ability to choose how to manage work that's assigned to the team. Team Services enables part of this scenario through the use of work item types. A work item type is the object that's used in Team Services to track the different types of work. They can help us drive alignment across teams and promote autonomy. Let's take a quick look at the different work item types that the tool offers.
Epics are the topmost level offered in Visual Studio Team Services. Most of the time, they span multiple release strains, which can be considered as those incremental processes through which value is delivered to customers. In a nutshell, they offer the 30,000 foot view of your project. Epics can be broken down into features, which can help us establish the goals for a single sprint. Features, at the same time, can be broken down into stories, which are considered a self-contained pieces of work. They're the atomic unit for most sprints.
Finally, the last level is tasks. These provide additional breakdown for stories, and they're great for processes where capacity planning is required. The only special work item type in Visual Studio Team Services are bugs. They can either behave as user stories or tasks, and they represent the issues that are found in the product. Alignment can be driven by using epics and features, while autonomy can be promoted using stories, tasks, and bugs. But why are these two concepts so important? Let's take a real-world scenario as an example.
Imagine that you're part of an organization made up of two teams that are working the same project. The project is called Amazing App, and there's two teams. Team M, which is in charge of the mobile app, and team W, which is in charge of the website. Folks in these teams may have different backgrounds and be located in different parts of the world. So how can you guarantee that the right work gets done without having to be always involved? As described, epics and features are the topmost level items that help us drive alignment.
In this example, we can clearly see that both team M and team W follow the same structure for this type of work. In the other hand, user stories allow teams to be creative and autonomous in the way they approach work. Team M has opted for three streamlines so the team can focus on how new functionality gets delivered, while still addressing critical problems and customer's issues. Team W, on the other hand, has chosen to follow a different process. They realize that for them, it is more effective to break down user stories into tasks.
And even though this is just an example, we should always remember that in the real world, different people break work in different ways. Making sure things have autonomy to do as they fit, guarantees that no additional process is followed just for the sake of it. Staying aligned is important, but it is also important to make sure folks have the autonomy to execute in their own way. This will help boost morale, promote efficiency, and a sense of purpose in all of your team members.
- Managing backlogs and sprints
- Creating dashboards
- Hosting and managing code
- Committing code changes
- Applying best practices for branching
- Building a code base
- Creating build definitions
- Integrating with other tools
- Customizing your process with extensions