About corporate culture for distributed teams and not only

Introduction


I got my first remote job back in 2009. I was 19 years old. This was the post of junior system administrator on the hosting. In fact, its main part is technical support. It was a relatively uncomfortable job: you had to spend all day near the laptop and be ready to quickly respond to customer messages in webchat and tickets. Plus, perform some regular tasks like setting up a new virtual server. To go to the store had to ask for a break. But even I liked this work more than all my office work.



Later I still worked in offices, but I decided for myself that I needed to grow as a specialist and look for positions on a remote site. Since about 2012, I have been in offices only as a guest.

Over the years, highly skilled remote work is becoming more and more. Increasingly, remoters are satisfied officially under an employment contract or at least as an individual entrepreneur. Now there is an opportunity to register as self-employed, which greatly simplifies the whitening of income for freelancers. All of the above can not but rejoice: the possibilities are better than their absence.

Hysteria because of the epidemic as a whole is hitting the market, but contributes to the fact that even large and conservative organizations are at least temporarily allowed to work from home. Perhaps this is the case when crises help eliminate inefficiencies like the plague epidemic onceserved as a trigger for the gradual departure from feudalism and the establishment of institutions of capitalism.

In this article, I, perhaps, will not list the main pros and cons of remote work. I will also refrain from discussing myths about working from home. Many articles have been written on these topics and without me, and many copies in chat rooms have been broken .

I will try to describe simple principles, based on which you can quite effectively organize the work of a distributed team. These principles are not specific for remote work, but it is with a remote format that organizational errors become apparent.

Corporate culture as a coded law


The most important thing to do is write a text about corporate culture. Any member of the team must understand the rules of the game. If they are only in the head’s head, then they are essentially not there. Everyone works in accordance with his own idea of ​​the state of things, and in the head of the boss himself, these rules can change several times a day, depending on the context.

Three elements of culture : behaviors, systems and working methods. They share a common set of values. If all three of these elements are balanced and aligned with the values ​​of the organization, then an effective corporate culture is obtained.

Behavior patterns


In vacancies, you can often meet significant requirements: the ability to work in a team, focus on results, stress tolerance, initiative, etc. What is hidden behind them is usually found out already during work. It is important to understand that most employees need clear expectations.

Try to describe what you put in with these words. For example, which means the ability to work in a team for you. This may be the desire to make decisions together and reach an agreement in communication as opposed to atomization. Or do you mean by teamwork a simple willingness to follow directions without unnecessary questions and suggestions? The same goes for stress tolerance and other vague requirements.

Some values ​​may not combine well with specific roles in the team. Say, focus on results is a virtue of such roles as an entrepreneur, product manager, or salesperson. The administrator, manager or ordinary executor is usually focused on the process: the constant execution of tasks, the delivery of the increment of the product or the provision of services. You need to understand whether the declared values ​​are relevant to all employees.

For example, an understanding of what is expected of him at work will be useful for a developer: the ability to quickly perform poorly described tasks from a product specialist to effectively test his hypotheses or to write the most correct and clean code using exhaustive TK. Whether the ability to take, master and apply the existing open tools is welcome, or is the experience of olympiad programming and the willingness to write everything from scratch expected.

The most important point in behavior patterns is the willingness to follow the declared values ​​yourself.If you tell your child what to drink, smoke and goof off on TV is bad, but you do it yourself, then even severe penalties will not help you. One of the most important parts of the brain for learning is mirror neurons. They are responsible for the ability of a person or animal to look at what and how another member of the group does, followed by repetition.

If you declare that any significant change in the code should be subject to a code review, the new functionality should be documented and covered by tests, and if you violate these principles, then other leaders will begin to violate them, and then everyone else. If you write that the value in your organization is a democratic, flat structure, and you yourself inadequately respond to criticism of younger colleagues and raise participants who demonstrate authoritarian views, then everything you say or write is reset to zero. Responsible, adequate and proactive members go to other companies, and the rest do as they please at the moment. The guide rolls into seagull management .

In general, the main conclusion of the last two paragraphs for any leader sounds something like this: if you are not comfortable with the way your colleagues work, then do not rush to blame them for their failure. The fish rots from the head. People are very adaptive and adapt to the real rules of the game. Responsibility always lies with those who have the resource and make decisions. By the way, it scales well even to the level of the country: atomization, corruption and passivity are not an inherent property of the personality of the average Russian citizen. It simply adapts to informal rules that are set by those who have the resource and make decisions without significant feedback.

Systems


The work of the company consists of systems and processes. Each of them can strengthen or weaken the organization and its culture. Listed below are some of the most important systems.

Recruitment


The very presence of a registered corporate culture and the willingness to show it to the applicant immediately makes it clear whether this company and position are suitable for him. This eliminates the need for several stages of complex interviews and other complications of the hiring process. Also, its transparent description increases the chances that the people you need will respond. For example, many refuse to read a detailed description of the processes in the company. Do you need people who are not able to delve into this information when making a rather important decision - a job.

Annoyed when HR knocks with a proposal to pass the first interview without the above description. It is assumed that the applicant, without knowing anything about the company, is already eager to get into it. Having agreed to the first stage and having passed it, it turns out that there is one more, then another, and somewhere between the cases you need to complete an unpaid test task. The passage of a potential employee of each new stage increases its sunk costs. This is a term from the economy that refers to the costs of resources that cannot be returned if abandoned in the middle. When a candidate hears that everything went fine, but now he needs to go through another stage, he has a choice: refuse, and all the resources spent will simply burn up, or agree and make the sunk costs even more. For him, the subjective value of this proposal increases.Very often, such companies pull several people to the end at once and make a choice in favor of one. The rest wasted their time and energy. This bug of the human psyche is also used by sales people. Advice for applicants: immediately learn about the hiring process at least in words. This will allow you to soberly assess the situation and decide for yourself whether the proposal is worth the time spent with a likely rejection (expecting success by default, by the way, is also one of the bugs that you need to keep in mind).Is the offer worth the time spent with a likely rejection (expecting success by default, by the way, is also one of the bugs that you need to keep in mind).Is the offer worth the time spent with a likely rejection (expecting success by default, by the way, is also one of the bugs that you need to keep in mind).

When you have prepared a textual description of the hiring process, you can periodically analyze it with your colleagues and decide whether this system is adequate or good candidates pass by you.

The same applies to vacancies. A detailed description of the requirements and job responsibilities in text form allows them to be analyzed and correlated with each other. Those. one can understand whether the requirements are adequate or whoever wrote them is simply trying to hire people who look like themselves. As a result, awareness of the alternative opportunity to hire people who are different, who in the future can complement and strengthen your corporate culture.

Strategy and Goal Setting


What is the purpose of your company or team? Why do you and your colleagues come to the office or connect to work services? What work results do you expect from yourself and other employees?

Rating


How do you rate the work of employees? Are there any one-on-one certifications or periodic rallies? Timely feedback allows all participants to adapt more effectively to the needs of the business. Compliance with the stated expectations minimizes the risk of corporate intrigues in the company.

Development


What qualities and competencies would you like to develop in your employees? How are you ready to contribute to this development? It is also important to record and periodically re-read declared goals. This will correlate them with what you expect from colleagues in real work.

Remuneration


How are employees being promoted at your company? Are there any criteria according to which you can get an increase in salary or a new position? The transparency and clarity of this section eliminates the need for employees to weave intrigues or “smear” their bosses.

Working methods


The previous sections talked generally about the reflection and health of any organization. Working methods appear, change, and cease to be applied over time. It is also important to describe and analyze them. I will try to describe the fundamentally important, in my opinion, methods for distributed teams.

Task tracker


All tasks and their implementation should be carried out in the task tracker. It seems that the principle seems obvious, but many sin with all sorts of problem statements for chat rooms, and even verbally. Human memory does not work the same as writing files to disks. It’s as if we keep some anchors in our heads, and then we create new information from them when remembered. Both the director and the performer may recall not what was actually said.

In addition, new performers may appear in the task who need to get in the course of the matter, or new tasks may arise that are similar to the completed ones. Anyone can learn or remember how this type of task is performed in a given team or service.

Creating and discussing tasks in the tracker makes many other methods possible.

Asynchronous operation


When conducting tasks in the tracker, you don’t have to spend the whole working day at the same time. Some intersection is enough. Tasks are placed in the backlog - a prioritized list from which team members assign tasks themselves. You can also take some fairly obvious rules:

  • Do not assign many tasks at once. A person works in a single thread, and frequent context switching reduces work efficiency. Blocked tasks freeze and can become urgent.
  • You should regularly update tasks, push changes. This increases the chances of timely feedback and to prevent a situation where something is misunderstood and needs to be redone.
  • A task that is not a quick fix (hotfix) should be run in a separate branch with an attached merge request . Huge DIFFs should also be avoided by decomposing large tasks.

Common communication space and synchronization


Many say that an important advantage of an office is being in one place. Everyone can hear what others are discussing, keep abreast of what is happening even outside the context of their current tasks. People who don't like this usually wear headphones.

In remote work, such a virtual space is organized in different ways. Someone even creates voice chats, like gamers. One of the most important rules: to try to conduct all working discussions not in PM. If the discussion concerns the fulfillment of tasks, it is better to conduct them in the tracker, as I wrote above.

But often people need to quickly discuss some little things in a free form. The worst thing that can be done here: one-on-one voice phoning, as already mentioned. Now it’s fashionable to use slack and do separate chats for different services. It is important here to realize what is more important for you: separation of information flows or involvement of team members in each other's tasks. If the second, then it is better to have only one chat for quick discussions of working issues. Make specialized discussions already in the tracker. This will create an even more effective analogue of the office: a common place for conversations, which everyone can re-read at a convenient time.

Synchronization is not something fundamentally important, but many managers resort to it. Usually these are daily voice or video calls, where people report what they did, what problems they had and what they would do. Instead of phoning, I use regular chat messages with the above points. With a sufficiently flexible task tracker, you can do without them - all the essential information should be in the tracker.

Documenting repetitive actions and processes


Each work has sets of repetitive actions. For example, in the development of services: creating a new service, writing HTTP request handlers, a code for working with a database, integration tests, dockerfiles, CI / CD code, etc. You may not have clear documentation for each action, but you can generally have established practices and tools used. Awareness and improvement of these repetitive actions will increase the speed and quality of development. More conscious processes allow you to hire and train beginner developers. This saves company resources, allows you to unload experienced employees from the routine, makes it possible for novice developers to settle down and develop.

Feedback mechanisms


Feedback should be in any system. If you deprive participants of this opportunity, then the best and initiative will vote with their feet, and the most conformal and not having special prospects in the market will remain. Feedback is implemented by different methods: regular voice retrospectives, one-on-one meetings, polls. I just created a separate repository where each team member can create tasks with suggestions and comments. If people themselves are not particularly active, perhaps it is necessary to push for this through the above rallies and polls.

Metrics


In order to roughly understand what kind of load a team can pull and how its performance changes over time, information about this performance needs to be somehow captured and measured. The logic is about the same as with the optimization of programs: before you improve something, you need to ensure the measurement of the necessary characteristics. Based on the data, it will be possible to understand that some rule, tool or practice brings the expected result and does not bring significant negative side effects.

Many task trackers have simple and not-so-powerful means of tracking performance. For example, the ability to indicate the weight of the task in the hitlab. By weight you can understand the complexity of the task in conditional parrots or standard hours. As with all statistics, it’s not the absolute numbers that are important here, but the dynamics and trends. It is also worthwhile to understand that your goal is not to squeeze out the results from employees at any cost, but to increase labor productivity. The Germans do not work the most, but in an hour of time they manage more than the others. Competent processes and useful tools contribute to this.

For example, when I decided to use code generators to implement API servers and clients according to specifications, labor productivity increased sharply: routine operations were automated, and human resources (then only their own) were already directed to the design and implementation of business logic. The code generator makes less mistakes and adheres to the specification more strictly. And, as you understand, in a service-oriented architecture and not only an essential part of the work is writing various CRUDs and implementing interservice interaction.

Similarly, the use of any tool or practice can increase or decrease labor productivity. It is important to consider that the first time the development of a new tool in itself can take time and effort, but bring results after. In the same way, some aggressive practice like sprints with tight time control can first give quick results, but then lead to the burnout of the whole team and a fatal drop in overall performance.

Conclusion


As I wrote at the beginning of the article, these ideas are not specific to remote work. Moreover, even the specific working methods described are not fundamental only for software development. Any work on texts and documents is essentially the same as working on code.

The principles do not contradict the application of some other practices and methodologies. Surely in the course of the text, you noticed some mention of techniques from kanban, scrum, gitlab-flow, and of course programming-motherfucker . The main thing is to realize what and why you want to apply, and maybe you need to refuse something on the contrary.

An effective distributed team, like any other distributed system, does not have an explicit hierarchy and common points of failure. Each participant can influence the processes and working methods. Sometimes I look at how my teammates interact and work and understand that the work will continue and the results will be delivered regardless of my direct involvement as a team lead.

Reflection and introspection are the main idea of ​​this whole text. Just as a person’s physical or mental health depends on attention to himself, so the organization’s health depends on attention to internal processes and corporate culture. Remote work gives only more opportunities to all participants in the process and returns to employees a grain of individual sovereignty that is constantly violated by malfunctioning institutions.

All Articles