I bring to your attention the translation of the fourth part of the series of articles “Becoming PHP professional”.The first part. "Missing link"»
The second part. “The Importance of Other People”The third part. "Teamwork"Earlier we reviewed the
social aspects of teamwork and its pros and cons. However, there are still a lot of things that you should pay attention to and learn a lot in working with other people.
')
This time, let's talk about the practical application of the knowledge gained, in particular, about virtual teams (where all or some of the team members work remotely).
Time zone differences and other obstacles
When your team has people working remotely, the time difference due to time zones can be a huge obstacle. Take, for example, SitePoint - I write for an audience that, for the most part, is from the USA, while the main office of the portal is in Australia, and I myself am from Croatia. As a result, we have 3 different time zones, the difference between each of which is ~ 6-8 hours, because of which sometimes you can get an answer to your e-mail only after a day.
When you have an active postal correspondence, not only among the team members, but also with clients, authors, etc., it all turns into chaos and you can easily get confused. You need to find a way to stay in touch with everyone at the same time.
The next problem I like to call “bottle neck compression”. Usually, when one person distributes tasks to a development team (filter, team leader or project owner, for example), that person can become that squeezed neck if the task flow is too intense or the team is too slow or too small to implement. And over time, this person is subject to very strong attention and pressure from the client, which negatively affects the development processes.
Another quite common problem is when many people work on the same functionality at the same time. In a word - poor organization and prioritization. Sometimes, a developer may be trapped in bugs (when there are so many of them that you cannot proceed to the implementation of further functionality until you fix everything), and this slows down the development greatly, especially if the whole process depends on your functionality.
All these problems can both slow down product development and stop it altogether, but there are several ways to solve them. We divide them into
“organic” and
“inorganic” .
Organic Solutions
As mentioned in the previous article, the importance of a competent manager and manager (the so-called “filter”) cannot be underestimated. A competent manager is able to formulate tasks properly and divide them into smaller subtasks, while the filter ensures that only meaningful and necessary tasks reach the developers. The role of the filter is to collect tasks and to be the only means of communication between developers and other staff (or client). His competence directly affects the time to overcome the “squeezed neck” syndrome.
You can help your manager - refuse to people who do not belong to the project development process, with their requests and instructions. Even if they have been approved by the CEO, consult with the Technical Director (CTO), team leader or project manager before making a decision. They are usually closer to people who demand unreasonable and timeless things and can “strangle” their ideas in the bud. Do not refuse once - never refuse.
Even if such people somehow overcome this barrier, be polite and calm with them. We all know how annoying it is when a marketing specialist calls a web page a slide, or when a logistician cannot describe the interface and compares everything to Excel, but we listen carefully and understand that we can a) get rid of them as quickly as possible and b) describe their idea to the team leader or manager so that they can talk to them, or, indeed, create a new task if the idea is sound.
Incredibly useful will also have a few hours left. Planning your work time so that you have at least 2 hours left for your developers, and especially for the team leader, is a very important point. This will allow you to meet with the team live or to hold a video or audio call for discussion.
One picture is worth a thousand words, one call is worth a thousand emails. A call will help you plan your day, find out all the incomprehensible moments on the tasks, find the best ways to solve them, and also help improve your level of English.
Inorganic solutions
By this type of solution, I mean some applications and web services, which I would like to talk about in more detail. The list is by no means complete, but I used most, if not all, of the tools mentioned, and I would not recommend anything with which I did not work.
Trello is one of the main tools we use in SitePoint. It is no longer focused on developers, but on editors and managers, but its interface and support for markdown markup make it easy and detailed to describe tasks. If you regularly communicate with non-technical staff or like to share ideas - Trello is exactly what you need. And it can be used absolutely free.
Basecamp is a popular alternative to Trello, and is a command-oriented TODO application. As in Trello, there are discussions, task nesting and file uploading. However, Basecamp is not free.
Google Apps (GSuite) can serve as a host for your corporate email and provides closed Google Docs and Google Drive corporate accounts, as well as group chat, Google Groups, corporate calendar and much more. I would like more companies to use Google Apps. Moreover, the business version of Google Apps supports Hangouts, which means that you can instantly exchange messages with your team both from your computer and using your smartphone. For example, Hangouts allows you to receive video calls from two devices at the same time. For example, if you took a video call five minutes walk from the office and then got to your workplace, you can simply click on “Join this call” and take the call from your work computer. All this allows you to make your teamwork communication truly professional.
FlySpray is a super-simple open-source bug tracker that helps you keep track of minor bugs in your daily work. In my previous company, we allowed non-technical people to send inquiries and bug reports using FlySpray, and then the filter discarded meaningless messages and described the real bugs in more detail. So, we always received a full report, which allowed us to reproduce and correct bugs much faster.
Github is a popular network for collaborative programming. This is a hub of open repositories (or closed ones if you have a paid subscription), where anyone can easily work in a team without having to set up a repository on their server.
BitBucket is a worthy alternative that offers closed repositories absolutely free.
Atlassian , the creators of BitBucket, also has many other tools for team interaction, for example,
Confluence and
JIRA , which allow you to work with your team in real time and store all information in one place.
Jetbrains also offer a good set of tools:
TeamCity (with a free professional edition) for continuous integration and
YouTrack (a 60-day trial period or a free version for 10 users) for tracking bugs, problems and queries.
If you adhere to a flexible development methodology (Agile Development), the best paid tools are
PivotalTracker and
GreenHopper (plugin for JIRA). Both tools have free versions.
The last but not the least useful thing that will help you make TO-DO lists is
Todoist (which I use every day). The interface is straightforward and focused on the tasks themselves. In fact, it has everything that you saw in similar applications, but with significant improvements.
If you are a developer, I recommend you use Github and TeamCity, and also use Trello for discussions. If you are a manager and are involved in supporting projects, I strongly advise you to use Google Apps. If your team uses the SCRUM - PivotalTracker methodology to help you.
Conclusion
In this article we looked at some solutions that will help you improve the work of your team and make it more productive. In the next article, we will look at all of the above tools in more detail.
Do you have a favorite tool for team interaction? How do you solve problems in your team?