📜 ⬆️ ⬇️

Agil in our opinion, or something about Russian innovations in software

When they say that Made in Russia innovations are only controversial projects like the Yo-Mobile of the Cherepanov steam locomotive, definitely undeniable, like space rockets and other half-and completely incomplete military products, or bare ideas for export - do not believe. We have something to brag about and I am proud of it.

Over the past XX-eleven years, my company has grown from a small-sized mushroom mushroom to the tops of IDC ratings and the upper-right corner of Gartner's "magic square". Beautiful office on the main street of the country, Elephant Dali at the reception, almost 3 thousand people in the state, 30+ offices around the world ... and other praises. But this is not about it.

Why did it happen? Many reasons. For example, my constant principle: to try, try and not be afraid of mistakes. And also - an affiliate program, work with retailers, online companies, capitals and provinces - there was a lot of things there, but this is not on this topic.
')
All of the above is secondary (forgive me those who bear this service). Primarily, our technologies and products (in the sense, just software, not “software + everything else”). Because if there is software - everything else can be customized. If there is no main thing - the goods - then everything else does not make sense to build. Otherwise, the business (sales) will be either one-time or corrupt, which disgusts me categorically and fatally.



So, software. What can you be proud of here? There is something! I will tell you, dear habravchane, about the "Six".

Most recently, we celebrated the eight-year anniversary of the release of the revolutionary (for its time) sixth version of KAV (Kaspersky Anti-Virus, I mean), a product that broke (literally) the home antivirus market in 2006-2009. Which brought together super-inventive technologies: proactive blocking of viruses, usability and minimum resource consumption (yes, it is with the Six that we no longer slow down). I leave the breakthrough methods of working with global retailers, online and marketing companies aside, this is a topic for another conversation. Figs with him, next time.

Briefly on technology:
- the built-in object environment for parsing arbitrarily complex objects and extending the functionality of the antivirus with new components “on the fly”;
- detection and blocking of malware without signatures, according to their behavior in the system;
- replenishment of the anti-virus database when an unknown virus is detected (this is where all the anti-virus clouds started from!);
- system detection and treatment of rootkits;
- optimized and accelerated anti-virus scanning;
- for a snack - a speedy and compact update of the application, in which only changed fragments of the file are loaded.

Thanks to all this, the “Six” turned out to be fundamentally better than previous versions. Fundamentally better than previous versions of our products, and for years ahead of all the home products of our main competitors. And not the main competitors, too. This product caught viruses like Pokryshkin Messerschmitt, being at the same time very compact, inconspicuous and fast in all good meanings of these words. True, it was developed for a very long time, almost three years, and with great adventures. We think to put their description in Hollywood Mosfilm, and here I simply confess that to create this project we had to invent our own version of the agile-methods based on SCRUM, fire the technical director, hire a new one and also fire, and put a fifth version of the product under the knife ... victory was not easy and thorny.

Under the knife

What did two directors and one product go to the block? It was 12 years ago, the year 2002. Who remembers those times? Windows XP has just been released (by the way, remember the old woman, “all the best, and thanks for the fish”), 1 GHz is quite cool, another 5 (five!) Years before the iPhone, but on the antivirus front, the popularity of the Internet becomes more fun with each in the afternoon There are all new types of virus (Melissa, RedCode, Slammer all), and anti-virus companies are forced to increase the functionality of the product. Inside the antivirus should be a network firewall (or a firewall if you like more words from German), a constantly running file monitor, and dozens of other functions. Our “four” could not cope with such a load (“Kaspersky slows down” - this is exactly from there, from that era), and we, after saying good-bye to the technical director of the “four”, hired a new one. That he made us a modern antivirus that catches everything and everyone. And it does not slow down, an infection! So that the new correct director will recruit the right people, choose the right organizational structure, the right method of project management, the right quality control - well, you understand. He had to do everything. We (the company) for this have provided all possible resources - human and financial. The main thing is to do !!! The rest - we earn.

And ... fuck there! After a year and a half (or two), almost all the developments had to be put into the basket. The new technical director created ... to put it mildly, a system that is not quite suitable for the requirements of a commercial software product. Management techniques were copied from soft-outsourcing, and the technical architecture of the product was built according to the canons of corporate client-server applications. All this, excuse me, Herota didn’t meet the requirements for a commercial home anti-virus. Moreover, the prototype of the "five" was cumbersome and slow; the number of errors did not decrease as it was debugged! We started talking with our old programmers, to find out their opinion. They say: the wrong architecture. It turns out the house of cards. It corrected - it fell apart. Therefore, to bring the project in its current state did not make sense. We had to break and rebuild.

The benefits of Czech beer and object approach

Although we did not know about it, we already had a solution to the problem: the architecture suitable for creating an antivirus was already developed. She worked in the "corner" of the fourth version, filtering web traffic. We thought of it in Prague in 1998 (yeah, we were looking for a cheaper place to brainstorm in the Moscow region, but the Moscow region turned out to be expensive, unlike Prague), but so far we hired a person who started programming it - Andrei Duhvalov - while he did something wrote, came XXI century.

"Prague" (as the architecture was called) was written mainly for parsing complex malicious objects. Detect virio "in the carcass" (even polymorphic) - the engine of 1992 was already able to do this. But getting the “carcass” from any object on the computer (for example, from a Word document inside the archive inside the mail database) was a very difficult task. Prague could do this. But in order to “teach” it to this, it was necessary to build such a powerful potential in functionality that it would be enough for something more than the anti-virus engine. Those who used “Prague” in KAV 4.0 praised her very much, and once I had a Main Question.

As we all know very well from the educational course of the preparatory group of any kindergarten - half of the solution to any problem is the correct formulation of the Main Question. If you correctly asked the Main Question, then half the budget has already mastered the tasks already completed.

So, the main question! I asked Petrovich and Graf (Andrey Dukvalov and Aleksey De Monderik, the first programmer of the LC) and is it possible to make the whole product at Prague? The count said something like: “Impossible,“ Prague ”was created for other purposes,” but Petrovich said nothing, but the next morning he came with several sheets of paper. And he said: "Listen, and I wrote some juke-cases on Prague here."

The count looked and said: "Well, let's go talk." Then they came to me and said that we could try to drive all our cattle through this particular quagmire.

A little more about Prague

I'm not sure that each of us will get pleasure from digging into the "ford". And then jeans to wash away from the received sensations is generally a matter of very hard hands (google “mad mud road / trip / hike). Therefore, here is a small essay, which, by the way, does not belong to my “pen”, but exactly coincides with my worldview.

Any specific details about the "Prague"
Due to the fact that Windows and the Internet have greatly diversified the world of threats, and in addition to the usual virus in files, a lot of new things have appeared on computers, we needed an object-based approach for the antivirus engine. That is, the engine must understand that any object on the computer is a certain hierarchy, and be able to go deep into this tree as deep as it takes to find and analyze potentially dangerous code there. It would seem that the PLO was popular in the nineties, the tools must be complete! In fact, nothing ready came up to us. First, the construction of objects and all manipulations with them must occur in runtime. Not every object environment retains its “objectivity” at the post-compilation stages. Secondly, the antivirus should build and destroy objects very quickly and in large quantities, while saving memory. On this demand all hopeful options fell down. As a result, the idea arose to create from scratch our own object-oriented environment. Duhvalov worked with this idea for more than a year and programmed it in the form of a flexible architecture that was easily integrated into the product. Objects could perform almost any function, so apart from parsing the hierarchy of objects in search of viria, on the "Prague" it was possible to extend the functionality of the engine with plugins. In fact, it was based on a very compact core that controlled memory, property inheritance, and message exchange between objects. Very simple API allowed to use "Prague" where it is useful. In addition, it was ready for multithreading and multiplatform, which the old engine did not know how. The main disadvantage of the architecture was one - in multithreaded applications, the objects were difficult to debug, and a lot of time was spent on developing it. I even had to write my own exception tracing toolkit. But it was thanks to "Prague" in the "Six" that there were so many new features that were easy to build.


Our scrum

Started the development of "Six" literally a handful of psychos. In a good, truly my understanding of the term "crazy!". Architecture - "Prague". The challenge is ambitious. We want to make the best product, and that's it! The main idea is to catch all the world, not to slow down, to be pleasant to the touch. And visually, too, to be "oh!". How to approach this large-scale development?

For a handful of psychos, CMM and other fashionable already then not fashionable design techniques are not very suitable. A decade ago, agile techniques were not mainstream, and the whole topic had to be dug up, studied in detail by ourselves. As a result, after reading a few books and humbling, they took a heavily overlapped SCRUM as a development technique.



From the scrambled they took the main thing in the organization of the process: short iterations between builds, the developers sit together and constantly communicate, everyone cares about everything. True, the role system was not at all Scramov's, but it worked well for us:



In the entire history of roles, it is important to remember that the number of roles and people is in no way connected. One role can be distributed across several people, with each team member playing several roles.

Well, the Count said well: “Everyone had an area where he was cool, but at the same time 50 percent was just about anything else. Mike could write drivers if suddenly Sobko did not come, interface specialists could pick up work on the core, and vice versa. Instead of Max Yudanov, I could draw something, and Kohl Grebennikov sometimes painted the skins. ”


Nikolai Grebennikov and the table of functions of the first beta version

And of course, each role is important at its stage of the project. At the start, the first violin is played by the architect. The inventor is most important in the middle of development, when specific functions are invented and programmed. And in the end all the power must be given to the manager, so that he brought the product not to perfection, but to release in a specific period. You can bring to perfection endlessly.

About timing

The problem of timing and todo lists was with us when developing the “Six”, and it was very serious. On the one hand, there was no fixed TZ, and product requirements changed many times during the course of development. We prototyped, discussed, wrote lists of requirements and functions, wrote the most important thing on yellow pieces of paper, stuck them to the monitor, forgot, remembered, and so on. From alpha to tech release, it’s already five blocks! On the other hand, as a result, the product includes many functions that we did not initially think about at all, and which made it revolutionary. Here, of course, our forum played a big role.

Although from September 2003 to March 2006, while the “Six” was being done, a lot of new tasks appeared in it, and the team grew to almost thirty people, it was one thing that the dedicated team didn’t have enough. This is beta testing. The product is new from and to, written from scratch. The product is complex, so a huge amount of testing is required. For the first time, the approach of regular assemblies was applied, that is, first weekly, then daily. As a result, we argued, argued, and decided on forum testing. Thanks to several thousand members of the forum, KAV6 was very well tested! All developers are very actively communicating with testers on the forum. “Five hundred people were very active. They were waiting for a new build, they put it every night, ”recalls Kolya Grebennikov, the former KAV 6.0 project manager. He sat on the forum for many hours every night and sometimes even fell asleep right above the keyboard. However, we all sat in the evenings, because the enthusiasm was hoo. Burning eyes, a boiling pot of ideas - the best time in life!

Yes, returning to the forum - he helped us and prevented us. Helped to produce a great product, prevented to meet the deadlines :) According to the results of forum testing, we had a huge list of improvements, but at some point we had to close it for addition. Grebennikov swore to me to release before the end of the first quarter of 2006. And they did it at 18:30 on March 31!

Success

What did you fight for and what did you get? Got a real bomb. The list of patents and unique technologies is impressive. But the wrapper of this all turned out great too. Very compact by the standards of 2006 installer. Quick work. A beautiful interface with skins - users even painted an antivirus window to their own taste. With Six, we just rushed to the Western markets, Symantec just went crazy when American magazines started giving us golden stars. And everywhere, in all the journals we received the highest marks. And not only in magazines, the top sales of antivirus programs from Amazon and other stores turned green immediately. All this is due to the correct architecture chosen for the product. And it was succeeded to embody it in a product thanks to development process which was well adapted for a small team of crazy enthusiasts.

Here!

Instead of conclusion

In the book on SCRUM, which we then read, I read one interesting rule that I remember and which I apply not only in development. If something interferes with the development, it must be eliminated first. Everything. Point! No matter what it is. As a result, if something is required by the developer, it is necessary to give it to him immediately. On the first day, when the project started, I ask: what do you need in the first place? "Coffee maker" - answered Petrovich. The next day they had an expensive, smart coffee machine.


Project mascot and in combination the first in LK coffee machine. Already does not work: (

The project turned out!

And the last. Recently, we had to part with one of the key, the most important people of the "Six". Nikolai Grebennikov has gone his own way, the company continues to go its own way. This is a technical essay I dedicate to Nikolai Grebennikov, who has been with me for 10 years, with whom we turned mountains, and whom I will always remember until I die.

Evgeny Kaspersky

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


All Articles