⬆️ ⬇️

How to automate the development of a team of various sizes

Team Leader Meetup , which took place in January in Yandex, presented us with not only two hours of video , but also the topic of the second meeting, which participants of the meeting had chosen in a special chat. We will speak, as is clear from the title, about the development automation.







The choice of automation tools largely depends on the size of the team, so it is important to track their evolution, taking into account the growth of a small startup to a huge company that creates the tools for development. To understand what team leaders will face in this case, we asked several questions to our experts, including Ivan ginkage Podogov, Roman shadart Puzikov, Sergey profitware Sobko, Alexei alexmog Mogilevsky.



  1. Suppose you decide to open your startup. A small team (five programmers) works at the start. What development automation tools will you implement?
  2. The startup is on fire! Now there are a lot of people working in it. What will change? What will be added?
  3. What non-existent tool (or even the type of tool) did you need so much that you could not stand it and made it for yourself?




Vitaly Levchenko , Development Team Leader, MegaFon.TV





Suppose you decide to open your startup. A small team (five programmers) works at the start. What development automation tools will you implement?

For the start - the most understandable and simple.





The startup is on fire! Now there are a lot of people working in it. What will change? What will be added?





What non-existent tool (or even the type of tool) did you need so much that you could not stand it and made it for yourself?

It is difficult for me to draw a line between using the finished tool and creating a new one based on it. Depla service for a couple of thousand lines of code and configuration - is it new or still old? Dynamic creation of microservice environments with flexible routing for A / B tests? System for display and analysis of aggregated statistics in the database with automatic response to triggers? Exactly new - simple bots for integrating services: launching deploy from CI, slack bot, uploading reports from YouTrack.



Alexey Mogilevsky , leading interface developer, Yandex





In the past - the developer and architect of MS Office and Internet Explorer, Microsoft



Suppose you decide to open your startup. A small team (five programmers) works at the start. What development automation tools will you implement?

Frankly, I have always worked in projects where at least 20 developers were employed and who served at least a million users. So I can speculate about modern startups only hypothetically. Nevertheless, obviously, a version control system and a tracker will be needed. I would use Visual Studio Online, since all the tasks of controlling the code are well solved in it. And besides, it will work on a large project. For communications for five people, I think, Slack is a good fit.



The startup is on fire! Now there are a lot of people working in it. What will change? What will be added?

For a larger project, especially if it is very dynamic, you should seriously consider Microsoft Teams. Many needs are conveniently integrated here, which are usually solved by unrelated tools: messengers, calendars, video conferencing software, and so on.



What non-existent tool (or even the type of tool) did you need so much that you could not stand it and made it for yourself?

Most self-made tools fix problems in insufficiently integrated standard systems. Telemetry almost always has something self-made. Can. this is normal, and maybe the potential to create a useful product.



Ivan Podogov , Senior Software Engineer, Google





In the past - Head of Real-Time Advertising Technologies, Yandex



Suppose you decide to open your startup. A small team (five programmers) works at the start. What development automation tools will you implement?

The choice of tools depends on what the startup will do. Creating a web service, desktop application, mobile application and PCB layout are very different areas of activity. Automation tools for testing and optimizing performance in these cases are quite different. Also, the decisions depend on the selected programming language, the need to enter Open Source, and so on. On the other hand, in a small team, you should be guided by the tools that most participants are accustomed to working with. Since there are only five of them, it’s not a problem to know everyone’s opinion: it’s critical for a startup to give everyone the opportunity to move as fast as possible. Finally, a startup is a kind of adventure, so why not try those tools that you have long wanted to meet, but did not reach out? For me, this is, for example, Yandex.Tracker and PVS Studio.



The startup is on fire! Now there are a lot of people working in it. What will change? What will be added?

For a large team, the style guide, auto-formatting of the code, documentation, test coverage (and presubmit-checks) and minimization of sacral knowledge become critical. In other words, it is important to ensure the interchangeability of team members, improve bus factor. In a small team, the exchange of knowledge usually occurs organically, but in large there is a need for stand-up meetings, corporate mail, a full-fledged task tracker (whereas for five people it was possible to manage with kanban). The choice of tools is largely due to their scalability. Say, GitHub with its wiki and code review will most certainly be suitable as the main repository. If the team uses Jira, then you can buy Bitbucket for the repository, Confluence for documentation, and Crucible for code review. When a company becomes very large, the appearance of its own tools will become almost inevitable.



What non-existent tool (or even the type of tool) did you need so much that you could not stand it and made it for yourself?

Once I needed to optimize the consumption of RAM in a number of applications. To do this, I had to write a java heap analyzer that takes into account Android features and allows you to “collapse” the link graph into large clusters so that you can evaluate memory usage at the level of entire components, rather than individual classes. Partially this problem is solved by Android Studio, Eclipse MAT and ahat [ https://android.googlesource.com/platform/art/+/master/tools/ahat/README.txt ], but they all had their own disadvantages and did not allow me to produce analysis is as fast and accurate as my own tool.



Roman Puzikov , head of the department of services for organizations, Yandex





Suppose you decide to open your startup. A small team (five programmers) works at the start. What development automation tools will you implement?

A startup of five developers is perfect, for example, Github to work with the code, the simplest task management and project documentation. Plus integrated with him Slack for operational team interaction. More at the start do not need anything.



The startup is on fire! Now there are a lot of people working in it. What will change? What will be added?

It seems that now not only programmers work for me! So, we need some kind of common place where specialists from different areas can share the results of their work, work with common documents, synchronize plans, and so on. This place is the long-term memory of the organization. Here the minimum entry threshold, good search and navigation are important. Any wiki will do - the simpler the better. In addition, with the growth of the organization, old processes inevitably become more complicated and new processes appear. Therefore, of the tasks in Github, you will have to move to a more serious task tracker, in which you can flexibly customize workflow and where not only development can live. The tracker must also have a good API, then it will quickly acquire dozens of integrations with other tools (from CI tools and deployment to collecting feedback from users). Well suited Jira or Yandex. Tracker.



What non-existent tool (or even the type of tool) did you need so much that you could not stand it and made it for yourself?

Unexpectedly difficult question. It turns out that it is difficult to choose one thing if your job is to improve the working tools. What worries me most is the lack of a convenient tool for high-level planning.

If we talk about exactly how to create this tool, then try to collect the simplest prototype as much as possible and check whether you really need it before getting involved in expensive development. It doesn't matter what it is about: writing something completely from scratch or integrating something big and complex into its processes.



Sergey Sobko, Head of Application Firewall, Positive Technologies





Suppose you decide to open your startup. A small team (five programmers) works at the start. What development automation tools will you implement?

In general, a startup can be understood as a construction rebuilt from scratch, or a startup within a large company (the so-called “internal startup”).



In the first case, these would most likely be free (and preferably open source) instruments, chosen according to the “no time to explain” principle. If the internal infrastructure and the possibility of its support is already there, then it would be Gitlab CE, if not - Bitbucket: it provides the opportunity to have free closed repositories. If there is a willingness to pay a little money, then it is probably better to take Github - it is more familiar. This toolkit already has built-in support for wiki pages and task management. Well and, accordingly, integration with all sorts of cloud-based CI-systems like Travis CI. You can use free Jenkins if you have internal infrastructure.



In the second case, it would be logical to use what teams in the rest of the company use, because all the rakes have already been collected before you, someone already knows how to work with this, there are some built workflows that can be adapted to your team.



The startup is on fire! Now there are a lot of people working in it. What will change? What will be added?

At this stage, the team has already refined everything and developed its workflow. Here the difference between the tools becomes clear, you can choose something that suits the team. The most important thing is to be able to move or introduce it, but at the same time not cause a riot in the team. For example, if Gitlab CE was used, then you can upgrade it to Gitlab EE and get additional features. If there are not enough tools for analyzing the development process, then the task tracker can also be chosen a bit more powerful - Jira or, for example, TFS. The latter, as I understand it, out of the box allows both capacity and capacity to be taken into account, and to build combustion charts, and what not.



At the same time, most of the automation of all management processes rests on the integration between different systems. That is, if you have the ability to integrate the version control system and the task tracker by connecting one plug-in, this is very good. Problems can arise when there are no such integrations, or when they do not cover all the necessary scenarios.



This can help, as I call it, external automation. In this case, the actor of the interaction of several systems is an external system with respect to them. If you give an analogy with any heavy BPM systems, then this would be the Red Hat KIE Execution Server for executing business processes. Nevertheless, external automation can be implemented without dragging tons of bloody enterprise into our ignited start-up.



Actually, when the team became more than five people and a lot of routine work appeared, I added only external automation to the obvious set of tools in my team.



What non-existent tool (or even the type of tool) did you need so much that you could not stand it and made it for yourself?

I implemented the notorious external automation, so that, on the one hand, I did not enter the full-fledged BPM paradigm on my own, and on the other, I had full control over the management of my team. Initially, I implemented a prototype that works to this day, and slowly now I replace it with a production solution in pieces. To do this, with the support of Positive Technologies, I even laid out the main part of this production solution in open source on Github - this is the Flower project for integration with version control systems (Gitlab and Github), task trackers (Jira, TFS, etc.) and messengers (Slack, Exchange). And this is only the beginning - I will write about this a separate article on Habr.



The idea is that everyone can build their automation from scratch from ready-made Lego cubes, giving the final solution developer complete control over what he needs. For example, someone wants to have rules for distributing tasks across a matrix of competencies in the form of regular expressions and simple rules (this is my case), and for some people machine learning for making such decisions will not be enough. At the same time, if your task tracker or version control system changes (the startup is lit), you would only have to change the connection address without changing the concept and the general logic.



What did I automate in my team? As I said before, assigning tasks using a competency matrix. The second is automatic merge and transfer of tasks to a completed status when passing through a cross-review. Next - creating applications and sending messages about the arrival of a new employee, reminders about birthdays, current tasks and some more, such as trivial, but requiring the same type of manual actions, things.



Pavel Solomin , leader of the Platform Engineering Sberbank Online chapter





Suppose you decide to open your startup. A small team (five programmers) works at the start. What development automation tools will you implement?

Under the conditions of the minimum number of participants, one person will be responsible for each area of ​​competence. At this stage, trying to introduce some common tools for everyone is more harmful than useful, because a lot of effort will be spent on bringing everyone to a common denominator and learning. It is more likely that it will slow down the MVP and not the fact that somehow will help in the future. However, there are areas where common tools are helpful. For example, API between client-side and server-side, transfer of tasks from design to development. Any wiki system is suitable for collaboration on the API, I like Atlassian Confluence more than others. To transfer the design, nothing better Zeplin has not yet come up. In addition, even five programmers need to somehow manage. I would do it with Jira or Trello.



The startup is on fire! Now there are a lot of people working in it. What will change? What will be added?

We have Sberbank projects that more than a hundred developers are working on at the same time. For their organization requires quite specific tools and practices. If you try to get away from this specificity, then we can say the following. Collaboration definitely needs a version control system. In addition, you need some kind of software for organizing the environments of continuous integration, continuous deployment. Somewhere you need to keep records together. Somewhere to track task. I would use software produced by one company to solve all these problems - in this case, due to integration, you can get a number of buns for free, which otherwise will either not be completely or need to be somehow screwed separately. My favorite here is atlassian products. Bamboo, Jira, Bitbacket, confluence. Separately, I would begin to pay attention to the architecture of how your applications interact with each other, otherwise the whole structure may well become uncontrollable. I like Sparx Enterprise Architect here.



What non-existent tool (or even the type of tool) did you need so much that you could not stand it and made it for yourself?

We have a lot of small teams working on the project - 80+. Developers - more than 100 for each application. To manage the performance of these teams, we decided not to work with the performance of each team, but with those cases that we consider deviations from normal performance. To do this, we wrote our own application. More precisely, we adapted the application that was developed for sales management in our offices. How does it work? For example, we consider it normal if> 80% of the storypoints planned for the sprint burn out. In the event that some team does not do this, the task owner’s task is to find out the reasons for it. If the situation is repeated through the sprint - the task is escalated to the head of the product owner, if the sprint is not solved yet - even higher. Thus, the task can reach the deputy chairman of the board (and if the problem is systemic, it may well happen). Such a system allows you to manage the situation at each level of the organizational structure. But I doubt that it is necessary in companies of a smaller size than ours.






The next meeting, which you can still register , will be held on May 22, 2018 in the Moscow office of Yandex. There you can ask questions to the speakers and share their experiences.



')

Source: https://habr.com/ru/post/358078/



All Articles