The world is going insane. Thousands and thousands of things we have in our brain every day; new stuff to do, new trends to discover, new team members, projects that you have to catch up with, self-education, etc. It seems like everything is aimed to stress us and it actually affects the quality of the projects we are working on. However, we see the quality jump due to agile methodology adoption. And as in most of the cases, successful companies have more than one office and teams all over the world, today’s article will be focused on Distributed Agile Teams in order to see how we can work more efficiently.
And I should say that Agile is implemented in any kind of business and in any department. For example, “Shoe store manager” does daily stand up meetings to share new sales strategies that worked, plan for the upcoming day and to see if anyone in a team has a problem, etc.
Agile is about valuing the individuals and the interactions, customer collaboration and respondents to change. It is about making your product or service “working”, quality over quantity.
Agile teams overcome a difficult situation through “we” rather than “I”. The ideal scenario will almost never become real; team members get sick, unexpected things happen, etc. And being in the same room or building does not mean that it will increase the productivity of the team. Communication has always been key for agile teams, and even though teams can work from different continents, they can still speak with each other on a regular basis via Slack, Skype, Hangouts, etc.
We live in the globalized era when almost all the companies face the same issue: how to work efficiently while working from different places and having different time zones. With agile, teams remove this sense of being distributed and still deliver quality and working software. How?
Here we give you a list of 9 hacks to follow that will optimize the productivity of your Distributed Agile teams:
1- The importance of communication
When we talk about Distributed Agile teams, we talk about tools for communication. And by tools I don’t only mean Skype, I mean project management tools as well, for example: Jira, Slack, Git, etc. Also, there are a lot of very useful and easy to use information sharing tools, for example, Dropbox, Drive, Trello, etc.
Daily meetings, project kickoffs, demos, retrospectives are a must, just like for any other agile team. And when you are dealing with people at other locations it is a good practice to ask them to summarise the conversation, in particular, to identify key action items and ownership of them, to ensure that everyone agrees with what was discussed. It also helps to stay on the same page and be fully involved in the project. Make sure you have all communication essentials to encourage collaboration. As Distributed Agile is all about teamwork.
2- Face to face meetings
Another important thing for Distributed Agile teams is – putting names to the faces by having face-to-face meetings. Sometimes you find yourself in a situation that you have worked with an international team but you have never seen the person and you have no idea how he or she looks like. It makes a vast improvement to spend at least a day or two face to face, at least once, and ideally two or more times a year. Getting the agile team together at the beginning of the project sets the foundation for communication, but without continual investment in maintaining effective collaboration between teams, you run the risk of your sub-teams deviating from the overall strategy. Ambassadors are people who travel between sites, often technically senior people or senior business experts, who share information between the sub-teams and motivate the team.
Communication improves, teamwork improves and “Us vs them” is reduced. And if the distance is not very long, seed visits infrequent intervals across the length of the project, it builds trust between the client and the team and between the team members themselves. Don’t forget, that the highest performing teams are those based on trust!
Also, synchronize your working hours to get at least 1-2 hour overlap between local and remote teams. Use at least one hour for synchronization and information flow between teams.
3 – Common standards & control
There should be a common understanding and agreement on the best practices and standards they will adopt and follow. This includes development procedures, code standards and styles, patterns, and other best practices that result in an extensible, quality product. These best practices and standards may be at the industry-level or ones that the team defines for themselves.
Besides setting different days to have an overall picture of the situation, the quality and criteria that we are delivering have to be taken into account as well. Creating checking points is a huge game changer when working with Agile methodologies.
Applied to software engineering, agile methodologies rely on a set of technical practices, commonly known as Test-Driven Development (TDD), Unit testing, Refactoring, Continuous Integration (CI), Pair Programming, etc.
For example, TDD serves as a way to ensure the requirements are communicated clearly and the deliverables will meet the expectations. Paired with refactoring, it constitutes the red-green-refactor cycle, allowing for increasingly high software quality and the best possible code design.
Sustainable continuous integration and continuous delivery processes help the teams deliver stable, automated builds consistently and frequently. In conjunction with version control, the CI allows for easy remote source code management. Thus, distributed agile teams can all have 24/7 access to the project mainline and contribute to it anytime.
4- Be clear about Agile
Unfortunately, some people claim that they are agile, but they are not in reality. So, first of all, agile should be clear for everyone. We know how hard change can be, and how difficult it can be to introduce a new methodology to the team. As there are different agile ways of managing the project, a team should agree on how they want to do it, for example, a number of weeks/sprint, time for daily meetings, automation tests, etc.
5- Shared goals & vision
Agile is about flexibility, but it doesn’t mean that you don’t have goals, milestone, and roadmap. The important point here is not what you do, but how you do it. You want to promote a culture that is based on collaboration and respect, a culture where people want to work with one another even when they are very far apart.
6- Tools and methodologies
Scrum is the most popular methodology to be used in software projects. As for the tools, in agile project management, it is a must. Atlassian tools might be a great help in building your agile team wherever the team members are located. JIRA Software, Bitbucket, and HipChat will allow your developers to build the products together, communicate clearly and be as productive as you might expect of any true Agile team. Tools truly increase productivity by eliminating manual tasks. And we believe that to be truly agile you need to do TDD & CI.
7- Distribute work evenly
Make sure all team members understand their role and have fairly equal workloads.
Also, make sure that the members of a remote team are never treated like “helpers” for the team members in the “main” location. If remote team members feel like hired hands rather than full team members, they may have less commitment to the project. And if someone is burning out because of an unrealistically high workload, move some tasks to another developer if possible. If someone doesn’t have enough work, find ways to keep the person engaged with the project. People at both extremes of the workload range usually lose focus and eventually become disengaged.
8 – Designate a leader at each work site
At any worksite with a team of three or more members, someone should serve as the lead. The onsite lead will provide the team with direction and support through face-to-face interaction. They will also serve as a single point of contact and represent the needs of the local team so that the entire team doesn’t need to worry about management problems. In this way, the lead will streamline communication and ensure the team has the support and guidance they need to keep focused and stay on track.
Structured onboarding and training plan will help ensure new arrivals are properly set-up and trained. There should be outlined what they need to complete, what tools they need, what are the standards, etc.
The post Distributed agile teams: 9 hacks that make them work appeared first on Apiumhub.
Since its open source launch in 2013, Docker became one of the most popular pieces of technology out there. In this blog post we want to dive deeper into the internals of Docker to understand how it works.