Business in Russia is learning to do not only boring projects to automate business processes, but also to create IT-solutions that can help in the fight against competitors. For example, projects on demand prediction, real-time offer management, optimization of logistics, micro-targeting. Such complex tasks differ from typical CRM implementations or CMS choices. It is necessary to look for developers differently, to motivate and think differently about the IT architecture and management methodology.
Cheat Sheet - Navigation on topics that a company manager and a top manager should know to correctly implement IT projects of a new level of complexity. For each topic there will be many links to articles, interviews, reviews and videos.

Topics
- IT market
- Attracting developers
- Choosing a platform and language for development
- IT project management methodologies
- Creation of an IT product
- IT architecture
- Modern IT capabilities with examples
1 IT Market
For a start, let's look at how the local market works. This is important because you will hire developers and make projects in Russia, at least in the first stage.
')
1.1 Russian IT market
A few quotes and my comments on the article
CNews100 of the largest Russian IT companies :
- “Top 20 accounts for 77.9% of total revenue.” If companies took 80% of their revenue, this means control of budgets and control of developers concentrated in a dozen companies. With these companies you will compete for developers.
- "An analysis of the total revenue of CNews100 in the industry section shows that in 2016 about a quarter of the orders its participants received from the public sector." In Russia, the state is one of the largest customers. This means that a quarter of developers in the country are working on government orders. It also means that a business in Russia with or without funds for investing in IT or has not yet seen the value of investing in IT. Both of these factors will give odds to a company that will competently invest in IT in the near future.
Another quote from the article
CNews100: The trillion ruble passed - thanks to the fall of the ruble "... in dollars the fall [of revenue] doubled - by 31.16% in 2015 compared to 15.32% in 2014". Conclusions worth making:
- In 2014, the ruble exchange rate fell by half and the dollar income of Russian IT companies fell exactly on that. This shows how much IT in Russia is closed domestically, i.e. earns only in rubles, and not in currency. The closeness of the market leads to the fact that within the country there are few world experts who simply have nothing to occupy.
- This state of affairs is beneficial for local customers and employers, because IT in Russia is cheap by world standards.
- Russian IT-products and services are not in demand in the global market. Apparently, the business starts not enough ambitious projects or does not bring projects and services to the world level. Both options have a negative impact on the level of personnel in the country.
- The two previous problems force service companies (outsourcers) to focus on the international market. Domestic customers become uncompetitive for money and interesting projects. This means that even finding a professional contractor is not easy.
- If you start an ambitious project, then you stand out against the background of typical tasks and attract strong developers.
It turns out that there are not many world-class products and services in Russia. The public sector does not show efficiency when ordering and developing software, so world-class expertise accumulates there slowly. This affects the quality of developers, wages and the development of the IT community. To communicate with world-class experts or involve these experts in the project, you will most likely have to travel outside the country.
More detailed figures and conclusions can be found in the RUSSOFT study. The thirteenth annual study of the Russian industry of export software development .
1.2 Actions of the Government of the Russian Federation
The Ministry of Communications further closes the development in the domestic market. In 2014, Nikolai Nikiforov said the
Ministry of Communications wants to increase the number of programmers in Russia from 350 thousand to 1 million , two quotes:
- “We are preparing a set of measures to support, step by step, year after year, the development and development of an entire industry of import-substituting software. This is a slow way, which will take three years, in some areas - 5-7 years . ” It seems to me a strange idea to invest in creating domestic software in the global IT market.
- "Now in Russia there are only 350 thousand highly qualified IT specialists, and the work of the ministry is aimed at seriously changing this indicator in the near future . " Three years have passed, in the yard in 2017, the situation with the developers has not changed. I, as a teacher with six years of experience in two universities on IT-specialties , I can say that so far nothing portends a breakthrough.
Oil poured into the fire is the fact that the state conducts an ambiguous course towards controlling the Internet inside the country. In more detail in the interview
Herman Klimenko: “We only have one big story left - this is de-anonymization” .
1.3 Developer Migration
The developers reasonably respond to the situation described by migration from the country. Not massive, but continuous and stable.
A little about the migration of IT professionals :
- The motivation for moving completely coincided with the reasons for moving within the Russian Federation: wages (54%), work by profession (47%), interesting projects and career prospects (43%). We have already considered why in Russia it is not always possible to fulfill these two needs.
- The most popular migration destinations were the USA (13.5%) and Germany (11.4%), followed by Australia (9.2%), Canada (8.1%), Great Britain (7.6%) and Spain ( 5.4%). Countries with a stable economy, the presence of world IT-leaders, large commercial budgets for IT-products.
- The most attractive regions for relocation within the country were named: Moscow (29.2%), St. Petersburg (27.7%) and Krasnodar Krai (11.3%). Inside the country there is also a migration from the regions to the capitals. Further from the capital, developers migrate to the West. We get a typical let Region → [Capital] → West. For business owners, this creates a challenge - retaining the developers in the company. Next, consider how to do it.
Russian IT companies open branches in Europe and the USA so that developers remain in the company, but work in a comfortable country. In addition, the aim is to reduce the risk due to sanctions and the unstable situation in the country. For details, see the article about exporting
Luxoft programmers. It
transported 536 engineers from Russia and Ukraine and interviews with JetBrains CEO. JetBrains
head: programmers have a bad image .
My company , for example, allows developers to work from anywhere in the world, we already have examples of relocations.
I hope the situation with the internal IT-market has become clear. This situation is not pessimistic and shows opportunities for entrepreneurs.
1.4 IT market in general
In general, IT is currently characterized by:
- Maximum openness, minimum bureaucracy. IT companies are trying to clean up what prevents developers from creating: they create comfortable offices , refuse a dress code, remove unnecessary bureaucracy.
- The result depends on the level of developers. Only strong IT people make cool products. Unfortunately,
monkeys middle-level developers will not write a complex project . Read more in the article "People as nonlinear and the most important components in creating software"
Companies are conditionally divided into purely technical and classic business with departments, including the IT department. Pure technical companies are distinguished by the fact that technology creates the key business value and developers are at the helm. Such companies benefit from the classic business with the IT department in competitive competition in the market and in competition for personnel. There are several reasons for this:
- Technical culture above. The IT-company adapted engineering practices , is tracking the fashion for languages, platforms and architecture. New and effective quickly taken on board.
- New technologies. When around techies, it is easier to agree and justify the transition to a new technology, architecture or platform.
- Above the concentration of IT-like-minded people. In an environment where developers are surrounded by the same developers, professional growth is accelerating. In an ordinary company, a developer is “attached”, for example, to accounting, which he automates. For him, the customer and the interviewee are the accountant behind the wall, which comes in and tells which buttons to add.
See how one of the largest banks in the country formulates a call for developers
Meeting with Otkritie CIO Kirill Menshov : “Good news for those who like to tear patterns and destroy myths: an
IT specialist can find interesting work not only in a technology corporation ... ”.
If Discovery Bank has to explain to developers that there are ambitious tasks in the company, then other market participants should think about how to position themselves for developers in a new way.
2 Developer Attraction
We looked at the values ​​of the IT market and the problems that classic companies have with the IT department. On this basis, attracting strong developers can build on the following:
- Become an IT company. For example, the first deputy chairman of Sberbank in an interview at the RSC said that Sberbank is now IT companies with a banking license . In the transition from a classical to a technical company, it is most difficult to change the culture, more on this below.
- Start interesting projects. Interesting means large-scale and bold. Entrepreneurs should go further than buying CRM or workflow automation. In the section Modern IT capabilities with examples we will look at several projects that inspire me.
- Make projects on new technologies and approaches. Be modern. You should not force to work with FoxPro just because you believe in it. Give the developers a choice. I will tell you about how to make a choice in the section Choosing a platform and language for development .
- Be noticeable to developers. Inspire with company goals and talk about plans. For this, sponsorship at conferences, speaking at conferences, articles on Habr or on VC.ru is suitable .
- Invest in key competitive competence. If you bought and implemented 1C, then this did not change the balance of power in the market. Competitors will buy 1C, and you will be on an equal footing with them. Do projects that distinguish you in the market, such projects attract developers.
- If you have a poor but promising startup, offer a percentage of business and inspire. Offer developers a stock or stake in the business. This is a typical approach for IT startups.
2.1 Raise engineering culture
In the transition from a traditional company to a purely technical one, it is most difficult to change the culture.
If the organization is represented in the form of a pyramid, then the culture is a tight elastic around the pyramid. You move one of the parts of the pyramid, for example, make the processes more "flexible". The rubber band is tightened and, with time, gently returns the processes to their former place:

Read more about culture change approaches in the article
Culture is a rubber band around your organization .
3 Choosing a platform and language for development
Choosing a platform and programming language is a complex process that nonprofessionals should not do. But if you decide to sort it out and make the choice yourself, then below I will give recommendations on what to look for and tell you if this choice is true is so critical for the project.
3.1 Platform Selection
There are basic requirements that you can check when choosing a platform:
- Open source code. It is advisable that you get the source code of the platform along with the purchase of a license. You will not have the right to modify and sell this code, but IT specialists in the company will be able to better understand the platform's device.
- Support for various DBMS, queues, clouds, etc. A variety of supported tools will give you the opportunity to choose the right tool for a particular task. For example, if the platform works only with MSSQL or only with Oracle, then this should raise questions.
- A variety of ways to integrate. The platform will eventually be built into the company's infrastructure and will start receiving and sending data to others. Therefore, the flexibility of integration is critical. At a minimum, there should be support for REST API and asynchronous interactions through a message queue or push notification. Learn more about integration patterns in the Integration Patterns article : current tools and modern integration methods in the Clouds, iPaaS, Citizen Integrator and Why India’s Outsourcing Is Losing Money article.
- Community support code. Ideally, the source code of the platform should be laid out in Open Source and developed by the developer community. Such openness gives high development speed and less dependence on the vendor.
- The presence of a transparent SLA on those. support Without this item, the platform cannot be used in a real business, otherwise there is a high risk of being left alone with the problems of the chosen platform.
There is a set of more general principles:
- Specialization is important. For example, 1C should not be used to create a web project, as well as Perl should not be taken to automate accounting. Each tool is good for a specific task. Theoretically, we will implement hosting for images on SAP, but this will be against the nature of things, and you will spend extra efforts on development and support.
It also means that it is not worth investing money in writing boxed solutions. For example, BPM Online (1C, SAP, or another box) justifies attachments if you use out-of-box features. If the box does not have the necessary functions, then you will have to add them yourself. With this approach, the platform will not add value, but only tie the code that you yourself wrote to your engine. It is better to find a ready-made solution in another box and correctly integrate the system. - Consider functional and non-functional requirements. For example, if you need a response in a few milliseconds, then you should not take a CMS, because it is hard to optimize for speed. If you need to work on mobile devices, then look for products with native support for mobile browsers so that you do not have to solve problems with mobile through “crutches”.
- Choose with an expert. If you are not an IT professional with experience, most likely experienced vendors of IT products will be able to sell you something expensive and unnecessary. It will be difficult for you to distinguish marketing pitfalls from useful functions. Find someone who understands, and instruct him to choose a platform.
3.2 Choosing a programming language
You already know that finding talented developers is difficult. Therefore, in the first stage, I recommend choosing not the technology, but the expertise that is
available to you. Good developers will make a good product on any technology, and bad developers will fail with the best technology.
If you have competent PHP-developers who are ready to start the development of the Minimum Viable Product (MVP), then do the MVP in PHP. It does not matter that you are a fan of Java. Then you will find a team of Java programmers. Similarly, if developers know only mysql, and you have heard that postgresql is better - choose mysql, because right now you can do MVP on mysql and get feedback from the market faster. From the first earned money you rewrite the project on your favorite technology. In parallel, look for developers on technologies that you like best, but for now use what you have.
There is no correlation between the programming language and the success of the IT product. If you still want to choose a language, then use a set of factors described below.
Availability of developers on the market. It is checked very simply. Come on
hh.ru and look for a summary of the words PHP, Java, etc. Look at the number of open resumes. You will immediately notice that there are 94 120 developers on
JavaScript , and 420 on
Kotlin . The more developers available, the more chances to find normal candidates in reasonable time and reasonable money.
Popularity on stackoverflow. Go to
stackoverflow in the tags section . This is a popular database of questions and answers for developers. The larger the number next to the tag, the more popular it is. For example, 1 120 0000 questions were asked in C #, and only 700 in Lotus Notes. This means that when you select Lotus Notes, you are left alone with those. support, and when choosing C # you will find the answer to almost any question.
Popularity on TIOBE. The
TIOBE index is based on the popularity of search queries. In my opinion, it reflects the real state of affairs.
The popularity of the language in the community Open Source. Shows which languages ​​are written by developers who invest in the development of Open Source. Information is collected on the site
https://madnight.imtqy.com/githut.These four criteria are convenient for superficial assessment by a non-professional. Versatile analysis and language selection will be made only by an IT architect or an experienced developer. The selection takes into account the current infrastructure, upcoming tasks, development plan for the product and the company, etc.
When choosing a platform and choosing a programming language, I recommend finding an expert for advice. Here are four ways to find a good expert:
- Find the sites of major international and Russian conferences and contact the speakers. They willingly answer questions, checked on their own experience. For example, GOTO and AgileDays .
- Go to the professional community in the social. networks and connect with leaders or active participants. Most likely, these people do not care, they are ill for the profession, so there is a chance to involve them in solving their problems. For example, Software Architecture and Agile Russia .
- Do a search on networks with professional contacts like LinkedIn. Find the right person there, write to him in private messages and communicate. For example, I was so found more than once and attracted as a consultant.
- Trite - ask recommendations from colleagues who have gained positive experience when working with a particular company or person. A good IT person, like a good doctor, is carefully passed from hand to hand.
4 Methodologies for the management of IT projects
Approaches to the management of IT projects differ from project management in the material world:
- IT is intangible. If you build a nine-storey house, then at the end of construction it would not occur to anyone to push the fifth and sixth floors apart to put an aquarium between them. And in software products this happens all the time. The creation of IT products often start with a high degree of uncertainty. Usually you do not need to write an exhaustive technical task, and it suffices to describe the nearest small release and road map.
- IT is an intellectual work. Therefore, developers need to competently engage in the creation of an IT product. To start studying this topic, I recommend a book with a talking title How to feed cats. Manual for programmers who lead other programmers .
4.1 Balance between flexibility and orderliness
There are many different approaches to the management of IT-projects. For simplicity, I will divide all approaches into iterative-incremental and cascading.
The process of working in the style of a cascade model can be represented as follows:
- Before the start of the project, the target is chosen - a bag of money in the picture.
- Rails are laid before him - an analyst is done, a technical task is written, contracts are signed, etc.
- When the rails are laid, we start the project to work - the engine went to the goal.
- Change the goal is difficult. The engine is gaining inertia, it is difficult to stop it. If the target has changed, then shifting the rails is difficult and expensive.
The process of working in an iterative-incremental style can be represented as follows:
- Before the start of the project, the target is chosen - a small bag of money in the picture.
- An approximate trajectory is laid before it — an analyst is being made, for example, through this process .
- The work of the first iteration is planned, at the end of which the product increment is delivered - a present on the scheme.
- The product team sits on the homing missile and flies to the goal.
- After several deliveries, the project team can understand that you can get a bag of money of a larger size, if you change the direction of development - a big bag of money at the bottom of the picture. The trajectory is rebuilt and the following iterations follow a new trajectory.
- The increment is delivered after each iteration. Feedback is collected throughout the development process. The product team has a flexible architecture, high-quality code, and is ready to change a product an infinite number of times as it develops.

Both approaches have their pros and cons. None of the approaches can not be called universal. When choosing between approaches, the suitability of the approach can be assessed according to the scheme I drew from the book
Balancing Agility and Discipline: A Guide for the Perplexed . The closer the characteristics of your project to the center, the more “flexible” approach you need to choose:

Another possible criterion when choosing an approach to management is the current stage of the product life cycle. This was described in detail by Askhat Urazbayev in his speech
How to preserve business flexibility, Agile Days 2017 . At the stage of maturity, it is worthwhile to choose more formalized approaches, and at the stages of creation and growth more flexible:

4.2 Agile is a culture
There are many myths and legends around Agile. To begin, let's see why you should carefully look at this approach. I recommend to watch the video of
Gref about the fate of Russia and Agile approaches from IT - the oil age is over . Quotes from the video:
- “We made 27,000 platform changes in a year. Amazon makes 10,000 changes a day. We are late, long time to market »
- “Those who do not master Agile today will be losers tomorrow”
The whole “agile” is described in the
software development manifest . It consists of four values ​​and twelve principles. Pay attention to what is usually overlooked:
- The caption under the list of values: “That is, without denying the importance of what is on the right, we still appreciate more of what is on the left . ” This means that we need to take care of people and the quality of interaction between them, but also not forget to adjust the processes and use the right tools. In this process and tools play a smaller role than, for example, the quality of communication.
- The core principles of the Agile Manifesto are a list of principles that are integral to the manifesto.
Agile - a description of the cultural code. Working on Agile means that the company and business customers share the values ​​and principles described in the manifest. At the same time, it does not matter which management framework is chosen, it doesn’t matter whether the board with stickers is used or not.
Large companies in Russia and around the world are trying to implement Agile, but few succeed. The reason is that Agile is not a set of tools, but a culture that
changes hard . My practice of implementing Agile in companies and the practice of colleagues shows that only 3-10% of employees are ready to change their culture. The rest either do not want or are not capable of change. Therefore, if you decide to implement Agile, then the easiest way is to start from scratch. If this option is not possible, then look for and hire as many new people as possible who already share the values ​​and principles of agile development.
A frequent problem with a flexible approach is related to the accumulation of
technical debt due to constant changes in the code and the low level of developers. The alarming sign, if during development the speed of delivery of new functions slows down, something that already worked breaks down, and the developers claim that this is a common thing. In this case, read the article
Definitions of the failure of the IT-project is not too late.
Materials from which to start learning Agile:
5 Creation of an IT product
Before you create an IT product, select the purpose and approach for investing money:
- If there is ready - buy. To solve typical business problems that are not within your core competency, buy a turnkey solution. For example, if you have a courier company and you learn to optimize logistics, you do not need to create your own accounting system. It is better to buy 1C for accounting, and invest money and effort in logistics.
- Give to outsource secondary. For example, routine automation tasks.If the finished system out of the box does not suit you or you need to implement it, then order this work at an outsource. Remember that if you bought a cool CRM, then this is not a competitive advantage, because any player on the market will buy this CRM.
- Create a unique, something that will separate you from competitors. For example, a powerful real-time offer management system that will make customers happy and you will be rich.
If you have reached point 3 and understood what exactly you want to invest money, then now you need to cheaply check the idea and calculate the economy.5.1 Kill the idea cheaply
Each of us has a lot of good ideas for a new IT product. It creates the feeling that the world will be happy to receive an IT product that is drawn in our head.Maybe it will happen. And maybe we are wrong, and no one will pay for a future product. To quickly check the idea and not lose money on hallucinations, I recommend to study the book Business from scratch. Lean Startup method for quick testing of ideas and selection of a business model . I will briefly describe the steps to be taken:- «» . , . . , Dropbox , : «To avoid the risk of waking up after years of development with a product nobody wanted, Drew did something unexpectedly easy: he made a video». , .
- . .
- . , . , MVP, . , , , .
, . « », Assassin's Creed. , . , , .
5.2
, . , , . , .
, .
HSE{sun}: : .
5.3 Growth hacking
IT- , .
Growth hacking — . «» , .
, Airbnb. . Airbnb .
Airbnb: The Growth Story You Didn't Know .
Growth hacking , ,
VC.ru .
5.4
I recommend starting the process of creating a product by examining its value and points of interaction with the end user. In our company, this process consists of three stages :- Impact Mapping - a map of goals and business hypotheses.
- Customer Journey Mapping - a map of user contacts with the system, artifacts and barriers.
- User Story Mapping is a two-dimensional map plan for implementing custom scripts.
— . .
.
. , .
:
, Agile Days 2016 .
5.5
. , , .
. — - / , «»:

, «» - . , , , . , IT- :

6 IT-
To understand what architecture is in fashion and why it happened, it’s worth seeing how business requirements and IT offer evolved:- At first there were many small independent systems. Until the end of the 80s, the approach was prevalent to do a separate program for each task. There were many such programs, they were loosely connected. At some point, the business realized that the overhead with this approach is too high.
- Then there were big ERP. These systems incorporated business functions and provided a “single window” for business. For example, you put SAP on the enterprise, and users work in the same program. Nothing more to buy and put is not necessary. This approach took the main place in the design of systems for a couple of decades. With the development of clouds, the DevOps culture and the short release culture, it is understood that huge monoliths cannot grow fast enough. Often they slow down business.
- The idea of ​​microservices is developing now. This approach retains the idea of ​​a “single window”, but splits the server part into small independent services.
Why you should look at the microservice architecture:- . (, , ...) . .
- . - . bus factor .
- . , , .
- . -, . , «».

, , ,
Microsoft Dev School — , PaaS - , Agile Days 2017 .
7 IT
IT . . , :
- Amazon , . Amazon . Why Amazon's Anticipatory Shipping Is Pure Genius .
- Uber Microsoft Cognitive Services . Uber boosts platform security with the Face API, part of Microsoft Cognitive Services .
- . . « », « ». 50 100%. .
- Siemens .
- AI . , 90 .
. , .