PVS-Studio, CppCat. Conversation with Andrei Karpov, Technical Director of these projects

This article will focus not on all kinds of technical details related to the products, but on the positioning of the product on the market on a particular platform, a little about the company, etc.
In many articles about the company's products in the comments, you can find questions about supporting a platform such as Linux. This question is also raised here and a comprehensive answer is received.
Andrey Karpov Andrey2008 , technical director of PVS-Studio and CppCat projects, answers my questions . Andrey also shares some discussions about the programming language, products of other companies and interaction with these same companies.
Preamble
If you observe the development of a programmer, you can sometimes notice some pattern. At the beginning of the journey, the future developer studies some literature, asks something on the forums. At a certain point, for a step forward, he gets a kick under the back with a question like: “Have you tried to open a debugger for yourself?” Having discovered this one of the many, but at the same time, basic tools, the developer continues his path of improvement. At a certain point, he comes to an idea or is told to him that you can speed up your work by reducing the time to search for errors, if you look for them at the initial stages using a static code analyzer, and not look for errors already in the finished product, setting WinDbg on it and practicing all kinds of sophisticated application debugging. At this point, a review of the available funds on the market, both paid and free, begins. This review may include this material.
We are talking ...
I followed the link to “My Circle” indicated in Andrey’s profile. Judging by the information read, the company is not big. Maybe this is its plus ... This is usually a minimum of bureaucracy, greater involvement in the process, more creative work, etc. Small companies have their own charm in comparison with large ones. There is a good article about the positive aspects of small business .
Andrei, please tell us a little about the company: how many employees are currently in the company, how many are involved in the development of the company's products directly and a little more that you consider necessary to outline in general terms?
Andrew:Yes, we are a small company. Of course, we want to become big and rich. But this desire is being fulfilled slowly. So to speak. We are satisfied with what we have, but really, really want more. Perspectives are visible, but they resist so that we reach them.
There are obvious advantages: a relaxed atmosphere and the absence of the need to adapt, for example, to the customer or the release date, invented by the marketing department. Very quick response to user emails. Of course, over time, the company can grow fat and acquire bureaucracy. But for now, our decisions and actions are swift. We have repeatedly surprised the user by providing him with a distribution kit on the same day that he wrote to us about the detected error.
Now 4 people are directly involved in the development and promotion of PVS-Studio / CppCat. Further I find it difficult to count. Employees or part-time, such as an accountant, or perform work remotely. I recall the term "half miner".
Some company practices show that one of the successes of the company is that they are focused primarily on the product, on its quality, and, as it were, on what I would like to have for myself. Tell me, the company uses its products to develop its own products, i.e. When developing a new version of PVS-Studio, the same PVS-Studio, but a stable selling version, is used to find problems? Could you give some interesting examples when the product helped in finding problem spots in the development version?
Andrew:I believe that PVS-Studio and CppCat are very high-quality products. We can make and lay out the distribution kit almost any day. We use a very large number of automated tests of various levels and types. If the corrected version has passed all the tests, then it can be safely issued to users.
Unfortunately, all the beauty and reliability of the internal code sometimes falls apart due to the effects of a hostile environment. As a result, the whole impression of the product deteriorates. It seems that we are not to blame, but our product does not work. I can give just an infinite number of examples. The first thing that comes to mind:
- A third-party tool spoils something in the Visual Studio environment. As a result, you have to create a crutch to work around the problem or come to terms and answer “sorry, we can’t do anything”. One such example is “Description of the Intel Parallel Studio Service Pack 1 Integration Error in Visual Studio 2005/2008 . ”
- Visual Studio COM interfaces for project information may throw an exception unexpectedly. Apparently, the environment at this unfortunate moment is busy with something else. Calls have to be wrapped in a cycle for their repeated repetition. Dances with a tambourine that do not always help.
- The developer has antivirus X and, according to corporate policy, he does not have rights to change his settings. This antivirus “holds” some temporary files for some time, and the analyzer cannot delete them. As a result, the analyzer “craps” into the project folder.
- Miscellaneous can be remembered. For example, you can look here , here and here .
However, our readers are waiting for me to show the errors that PVS-Studio found in itself. I have been repeatedly asked to write an article about this. Unfortunately, I still can’t accumulate enough examples of errors. To be honest, I just forget to write them out when they are detected by incremental analysis. I saw, corrected and went further on the algorithm to think. The next day I remembered that it would be nice to write out such warnings. Yes, I don’t remember where and what happened.
But a couple of examples, I still show
Warning: V501 There are identical sub-expressions 'm_decl-> m_wiseType.m_pValue-> m_minValue' to the left and to the right of the '==' operator. vivawalker.cpp 382 error
Should be:
Warning: V547 Expression is always false. Probably the '||' operator should be used here. vivabasepreprocessor.cpp 428
Should be:
Warning: V656 Variables 'l', 'r' are initialized through the call to the same function. It's probably an error or un-optimized code. Consider inspecting the 'SafeSkipParentesis (pParentExpr)' expression. Check lines: 345, 346. functionselector.cpp 346
Correct:
bool VirtualValueSaver::IsNotZero() const
{
if (m_decl == nullptr)
return false;
return m_decl->m_wiseType.m_pValue != nullptr &&
m_decl->m_wiseType.m_pValue->m_isPrecisionBound &&
m_decl->m_wiseType.m_pValue->m_minValue ==
m_decl->m_wiseType.m_pValue->m_minValue &&
m_decl->m_wiseType.m_pValue->m_maxValue != 0;
}
Warning: V501 There are identical sub-expressions 'm_decl-> m_wiseType.m_pValue-> m_minValue' to the left and to the right of the '==' operator. vivawalker.cpp 382 error
Should be:
m_decl->m_wiseType.m_pValue->m_minValue ==
m_decl->m_wiseType.m_pValue->m_maxValue
static void FixSourceFileName(vstring &s,
const NormalizedFileOrDirectoryName &defaultname)
{
....
if (in[0] == '\\' && in[1] == '.' && in[1] == '\\')
{
in += 2;
continue;
}
....
}
Warning: V547 Expression is always false. Probably the '||' operator should be used here. vivabasepreprocessor.cpp 428
Should be:
if (in[0] == '\\' && in[1] == '.' && in[2] == '\\')
static void GetUseType(...)
{
....
if (kind == ntAssignExpr)
{
const Ptree *l = SafeSkipParentesis(pParentExpr);
const Ptree *r = SafeSkipParentesis(pParentExpr);
....
}
Warning: V656 Variables 'l', 'r' are initialized through the call to the same function. It's probably an error or un-optimized code. Consider inspecting the 'SafeSkipParentesis (pParentExpr)' expression. Check lines: 345, 346. functionselector.cpp 346
Correct:
const Ptree *l = SafeSkipParentesis(First(pParentExpr));
const Ptree *r = SafeSkipParentesis(Third(pParentExpr));
The article “Alternative PVS-Studio for $ 250” introduced a new product of the company - CppCat. At the very beginning, it is argued that the project was created almost "from scratch."
Many products have a kernel around which everything is built, as, for example, for antivirus software - this is its antivirus engine. As a rule, this is one core for several products of the company. Around this kernel, a whole system is being built of all kinds of logic, interface and all kinds of usefulness for the user (for example, the same report generation) - all this is a product that differs from other company products built on the same engine.
I would like to know PVS-Studio and CppCat - are products built on the same core? Should users expect the same quality of code analysis from the new product, as well as from the old in the segment in which it is oriented? If both products are built on the same core, then the user of a simplified and cheaper product gets some advantage in that he will receive the same bug fixes and innovations in the analyzer as the user of a complex product. Can this be said about CppCat?
Andrew: Yes, PVS-Studio and CppCat are built on the same core. But the interface has been redesigned very significantly.
From a general analysis point of view, they are very close. In CppCat, the most unsuccessful diagnostics are disabled, which caused a lot of noise. And not the fact that this is bad. It is better to fix 5 errors by viewing 10 messages than inattentively scrolling through the list of 100 warnings and correct only 2 errors.
Regarding the fact that CppCat will partially pull off PVS-Studio users. Yes, probably it will happen, but not in large quantities. Many of our users need specific functionality. Someone buys PVS-Studio because of 64-bit diagnostics, someone needs a modified metric “cyclomatic complexity” (non-public functionality). Someone is using MSBuild and so on.
Speaking of checking large projects in PVS-Studio and CppCat, could you give some indicative figures, for example, products were tested on projects with the number of subprojects, say, just over 500-700, the code of which in XXX MB can be collected on a machine with some specified configuration for such a time period?
Yes, it is quite possible that many projects are much smaller, but developers of large software systems might well be interested in such numbers.
Andrei: We did not specialize in collecting such statistics. Perhaps in the future this is worth doing. Now I can give the following numbers.
If you take the test kit for working with Visual Studio 2010, which includes the following projects:
- Camstudio
- CrashRpt
- Dosbox
- ffdshow
- IPP-Samples
- Logs
- Miranda
- Mongodb
- mpc-hc
- Shareaza_vc10
- STweet
- XUI-GUI Fraimework
- Zlib_IA64
Then they are all checked on my working machine in 55 minutes . The source code for these projects is about 320 megabytes .
Configuration:
- Intel Core i7-4770 (3.40 GHz, 4x256Kb + 8MB, EM64T, GPU), number of cores - 4, number of threads - 8;
- 16 gigabytes of memory (2 brackets: DDR3 8Gb Kingston PC10600, 1333 MHz);
- Everything related to the tests is located on the SSD.
CppCat pricing policy involves the purchase of a license for a fixed fee, but for a year. For some products, an annual license also has a place to be, but each year a company can release a new version of the product with the same license price. Are there or are thoughts about stimulating users with updates, new versions, etc.: all that would make the user more willing to purchase a product with annual use of it instead of buying a product for which you can pay once and use as much as you like , for example, until you realize that you need to purchase a new version?
Andrew:We consider it unacceptable to sell an “endless” license. It seems to us that we are close in spirit to antiviruses. The analyzer constantly learns to catch new errors, learns to maintain innovations in the C ++ language, supports new Visual Studio environments and new versions of Windows.
In a way, we’re selling a “bug prevention service”. This service constantly requires our investments and efforts. For this, honestly ask for the purchase of updates.
I foresee an objection: “But I do not need updates. I want to buy and use once as much as I want. ” This is stupid. It is strange to use an antivirus three years ago. Fresh antivirus will find many more viruses. So the new analyzer will find more errors than the old one. Anyone who asks for an “infinite analyzer” really didn't care about the number of errors in their code. He does not need an analyzer and you can not pay attention to it.
You offer to try CppCat for 7 days for free. It is not always possible for a developer with its download to appreciate the product in 5 days if he does it at the workplace in order to make proposals on the purchase of the product to his superiors.
There is a situation when the need for a product is determined by the management team without taking into account the opinions of employees (direct users of the product), but there are also situations where it is the expressed needs of employees that are the determining factor for the acquisition of a product.
Would you like to increase the term to a month and expand the target audience for advertising at the expense of direct users, programmers, who would make proposals to their management about buying?
Andrei: Regarding the extension of the term. Controversial moment. When the developer has 5 days, he remembers that he needs to try the tool. When he has a month, he will always be "once" or "lazy." Short term stimulates action.
Why don’t you implement some online service similar to online compilers with the goal of simply seeing how the analyzer responds to some piece of code?Or also an online service, sending to which some test project or even a real one, the user could take advantage of checking his project without installing the software on his workstation. Here you can organize some interesting model, of which there are already a lot for, for example, web development: to give some restriction on the project for free use and for the absence of these restrictions to offer to pay some fee. The fact that many refuse to install the software locally and go online is unlikely to me, because company security policies protecting their intellectual property will not be flooding their huge projects into an online resource. But quite possibly the audience of small projects would expand without paranoid protection of their mental work, and the resource could become a test one and, as a result, an advertising platform for the main products of the company. In addition, an interested developer could try the products both at work and at home, as there is no binding of the license (even trial) to the identifier of his workstation.
Andrew: We do not like any ideas related to online. Here is the line of reasoning.
There is a person who develops applications in the Visual Studio environment. What could be easier than running CppCat to analyze your project? A person either likes the result or not. If he likes, he can buy a tool. The online service here is like a fifth leg dog.
Fantasies on the topic of “uploading a project somewhere and checking it out” are very difficult to implement and the main thing is not clear why. The analyzer needs a project that can be compiled. Otherwise, he will not know what types mean what, what preprocessor directives are set, how to expand macros, and so on. This means that somewhere you will need to configure a full-fledged environment. This cannot be done automatically. You will have to force a person to fill in the libraries used in the project, to create a certain analogue of the project in the web system, so that the analyzer knows about the preprocessor directives and so on. It turns out that a person needs to create and maintain a “parallel project” somewhere in the clouds. And we all need to keep this charm somewhere and also support it.
The only thing you can use the online analyzer for is to experiment. But it’s better not to do it. Programmers have a very one-sided approach to such tests. I even wrote a note on this subject: “Myths about static analysis. The fifth myth - you can make a small program to evaluate the tool . " A person can easily draw a negative conclusion based on one, two examples. So let him better check his real project and find errors in it.
CppCat is proposed for use with some versions of MS Visual Studio, which defines its use platform - Windows and a whole class of applications - desktop software. Yes, Windows exists both for workstations and for servers, but if you look at all kinds of publications about some large web resource or a newly built cluster, then, basically, you can see a lot of information about Linux on the server software segment. You may notice that the successes of Windows on the server segment are similar to the successes of Linux on the desktop segment. Among the desktop applications for Windows, C ++ has more and more competitors; on the server software segment, C ++ also does not lack competition.I would like to know your position regarding the release of products for Linux and the penetration of the server software market.
There was an interesting article about attempts to sell your software on Google and, as an example of the usefulness of your products, checking the Chrome browser. Are there any new developments in this matter? Are you considering the possibility of cooperation with large companies in promoting your products on the server software market, taking into account the release of versions for * nix platforms? There are also domestic players: Yandex, Mail.ru, etc.
Andrew:At first, I wanted to write something in the spirit: “We do not have a Linux version and are not expected. The reason you can consider our incompetence, laziness and tyranny. Just leave him alone please us. " Then I decided that I would just ask to remove Linux-related questions from the interview. But then a colleague asked: “Why am I saying that there is no Linux version when it is currently running in his virtual machine?” I realized that we still need to give a detailed answer on this topic.
We are a small and independent company. We do not have feeds from other parent organizations or government grants. We can very easily cease to exist if we begin to do stupid things. It is enough for expenses to exceed revenues within 3 months and you can close it. One of such stupid actions could be to inflate the infrastructure in order to implement the "Linux version".
Programmers stubbornly do not want to understand and realize that a compiled executable file is not the same as a software product. It sounds corny, but really people do not notice the difference in the size of an elephant.
We have an assembly under the command-line version of the analyzer under openSUSE 13.1. It starts and even displays warnings. But we do not have a “Linux version”. We do not have such a software product and are not expected in the foreseeable future.
Fortunately, I and Evgeniy EvgeniyRyzhkov combine not only programmers, but also managers. Otherwise, we, as a company, would have long disappeared. We can foresee how technical enthusiasm can ruin everything.
Recall what our software product is made up of:
- Operating system support. Well, with this, everything is relatively simple. We took and compiled the program. But remember that for this we will need at least virtual machines and the complexity of assembly systems and preparation of releases.
- Compiler and system library support. This is where the difficulties begin. Do not think that a C ++ program is just a text file that can be analyzed the same everywhere. Each compiler and system libraries are simply teeming with all sorts of non-standard extensions. Support for these features is an imperceptible, but very large amount of work. The fact that the '__restrict' keyword is used 10,000 times less often than the 'for' operator does not mean at all that it may not be supported. Many programmers are unaware of such things as _Bool, __w64, __noop, __int3264, __if_exists, 123.0fi, __uuidof, __based, __LPREFIX, __builtin_offsetof, __volatile__ and so on and so on and so forth.
- Diagnostic rules. Each system has its own data model, its libraries and other nuances. If you want to give good diagnostics, you need to know the features of the system functions. For example, in PVS-Studio / CppCat there is a huge table that tells you how to use this or that function incorrectly and what you can expect from it. It says: suspiciously if the function '_wcsicmp_l' matches the first and second actual argument. Now the file "functions_info.cpp" takes more than 800 kilobytes and we still have to work and work on its completion. If we want to go to other systems, we need to take into account the corresponding system functions and greatly replenish the table. This is a terribly time-consuming task.
- Documentation. The documentation must be seriously reworked. We must remember that now the PDF file with the documentation for PVS-Studio contains 250 pages and is constantly growing.
- Integration with development environments. It’s one thing to print something to the console, and quite another to make the tool convenient. On Windows, the priority is obvious - you need to integrate with Visual Studio. In the Linux world, everything is more diverse. It is necessary to support several of the most common editors. Even if not in the form of plug-ins, but still you need to be able to display information in a format suitable for them so that navigation can be carried out.
- Distribution kit.
- Testing. The most killer item. We have many varieties of automatic tests. The main system is a set of regression tests showing differences in diagnostics. In total, more than 100 open-source projects are used for this. The complete test takes many hours. If we want to learn a new operating system, we must create a new, more complex, portable testing system. We must find at least 50 new open-source projects that can be assembled in this system. You also need to learn how to run unit tests in the new operating system, and so on.
- Support. Support becomes more complicated, as you will have to have on hand various virtual machines and people who are ready to understand the problems specific to this system.
And now the most important thing. By Unix / Linux version, everyone understands their own operating system. It is very important! From the fact that there is a package for system X, the user of system Y is neither warm nor cold. For him, we still do not have a “Linux version”. This means that you need to make a version for at least five different most common systems (but you will still be dissatisfied).
Accordingly, all that is described above must be multiplied by the number of supported systems. For example, multiply this by 5 and imagine the amount of work.
At the same time, infrastructure costs immediately increase tremendously. We need programmers. Yes, even just to support the zoo of virtual machines and regression tests, we need a special system administrator. It will be necessary to create a complex infrastructure, where different virtual machines run for tests in turn. In addition, since the tests must pass at least overnight, apparently you will need several computers at once or a powerful server.
New programmers, system administrators, computers, servers, virtual machines, an additional cable, so that the electric network does not burn out, I will remove an additional room for the server.
Unfortunately, what I described was not understood by 90% of programmers and laughed. He was going to pull some wire ...
A simple programmer never ran to look for an electrician when trouble. It just has an extra day off. The programmer never went through the circles of bureaucratic hell, trying to stretch the wire from the electric booth. Of course, I cited the wire as an example. There will be no wire, so something else.
We will not pull it in the foreseeable future.
Can you talk about interactions with domestic software companies? For example, with companies such as Kaspersky Lab, Acronis, and so on.
Andrew: So far, there has been no communication with these and similar companies. I don’t even know what to recall. There was a fleeting conversation with Yandex. I think you can tell, since no NDA was signed.
Yandex shortly before the IPO decided to strengthen itself a bit by acquiring some startups. At least we got the impression. They eagerly communicated with different teams. We talked with us. But it did not work out.
The question was asked: "How much money and to whom does your startup owe?" To which we honestly answered: “Nobody and not at all. Startup brings us money and we are in the black. ” They were surprised and lost interest. This is clear. It’s much easier and more profitable to redeem losing startups and thereby get good employees.
We suggested that they simply buy PVS-Studio, but that did not arouse interest either. According to rumors, Yandex currently uses the Coverity static analyzer.


What can you say about the Cppcheck product? Are there any ideas, plans for a similar commercial product for Linux with some chips?
Andrew: Cppcheck is a good tool to get familiar with the static analysis methodology. You can even run on
going project. That is, just on a set of some files. Of course, the quality of the analysis suffers from this, but it is very simple to try.
About Linux, I already answered. No, we do not plan.
In October last 2013, the article “PVS-Studio. Countdown of prices in the opposite direction ” , in which the conceived experiment with pricing individually was announced. I would like to know about the results of this experiment. Is it completed or ongoing? Have you found interesting pricing options?
Andrew:The experiment continues. It’s too early to draw conclusions. There has become more communication with potential users, but it is not clear whether it will be possible to earn more money. We have a very long sales cycle. PVS-Studio is often sold six months later, or even a year after the first contact in the mail.
The article also describes the option when companies buy one license, and the whole team uses it, citing completely legitimate arguments. In my opinion, this situation should gradually disappear. It’s still “some kind of savings on matches”; it’s the same as buying one debugger for a small development team. It is inconvenient.
Do you think that over time, small companies that may currently do this will become more conscious and you will have fewer barriers to distributing licenses for a “single developer”?
Andrew: The situation with the purchase of one license for the team was one of the reasons for the creation of CppCat. Previously, we defended ourselves against the use of single licenses for working with large projects and increasing prices. PVS-Studio has become intended only for medium and large projects. Unfortunately, with this we lost really small teams and individual developers.
CppCat corrects this situation. Even a cost-saving team can afford to buy a tool for $ 250 and test their project. If checking on a single machine is not enough, then let them acquire more licenses for other developers.
By the way, precisely for this reason we do not like the idea of making a “floating” license. People say that they need a “floating” license in order to conveniently work either on a laptop, then on a work computer, or on a home computer. But in fact, this will come down again to the fact that one license will be on several computers and they will use it as they want. We do not want and will not invent and create a complex system that monitors so that they do not use the same license at the same time.
Anyway, everyone who talks about a floating license falsely pretend to be paupers. Judge for yourself. So, in addition to the working computer, a person also has his own home computer with a laptop. Everywhere installed paid software needed to work. He needed these computers for a reason, and for work. A man is ready to work at home and on the road. All this is advisable only with good income. And at the same time, people are greedy to spend an additional $ 250- $ 500 dollars to purchase additional licenses. It’s not even serious to discuss.
By the way, I remembered one similar moment. In the old days, Kaspersky Anti-Virus (KAV) did not have a license for 3 PCs. It was necessary to buy a license for 2 PCs and another license for 1 PC. Or something like that. I already forgot the details. At the forum, the man was indignant: “I want a license for 3 PCs at once. It should be cheaper than if I bought 2 and 1. I don’t have enough money for this. ” To which he was rightly remarked: “If you have found money for the purchase of THREE computers, then you must also find money for the purchase of an antivirus.”
This article also describes the reason for creating a code analyzer and bringing it to a commercial product. The product is aimed at C ++ developers.
Concerning C ++, “revealing” articles often pop up, sometimes emphasizing in one-sided way and enclosing some pitfalls of C ++ - in general, there is a certain trend of “scolding C ++”. For me, C ++ is a favorite, main and only programming language; maybe this will seem strange to someone ...
What do you think are the prospects for this programming language in the target audience that your flagship products are aimed at? C ++, Windows, desktop software - all taken together is a very risky target audience. Is the risk justified?
Andrew:For me, the answer is obvious. So many large and small projects have been written in C ++ that there is no need to speak of a significant reduction in the role of this language in the next 20 years. Just look at such a large project as Chromium, and it’s immediately clear that programmers will not run away from the C ++ language in the near future.
Chromium appeared recently and for its creation it was possible to make a choice among many innovative languages. But due to the need to use hundreds of third-party libraries in C / C ++, this is unrealistic. Too much has been gained in C / C ++. In general, the situation with this language is the same as with FORTRAN or COBOL. Even worse.
Programs in FORTRAN / COBOL are still widely used. For example, Intel makes more money from selling the FORTRAN compiler than from selling Intel C ++. And programmers for COBOL are now the highest paid programmers.
Just articles about these languages are almost never written. Therefore, it seems that they left the stage. They write articles about tools and languages that promote. What about FORTRAN or COBOL to write. They are not so bad.
Can you say something about competing products and the benefits of your products? What shortcomings in competitors have you seen that you were able to solve in your products? Perhaps you saw some strong points in competing products, which at the same time turned out to be their weak point, which was also closed by one of your products?
Andrew: A difficult topic. If only because no one gives us even a trial version :).
We consider our main advantage the simplicity of the trial version and the fact that we easily make contact on technical issues. I think it’s not easy to beg a large company to change or implement something in its tool. And most importantly, it can take months of time. We have many issues resolved within a few days.
To summarize
What can be said at the end of our conversation? The company that creates the products discussed in this article is a small business that provides very interesting software products. On the way to small business, one of the key problems is the mandatory need for strict accounting of funds. Which sometimes makes it impossible to bring to life and test on consumers seemingly breakthrough ideas. This issue can of course be resolved, for example, by attracting “other people's money” (loans, investors, etc.). But in order to decide on such an attraction, perhaps it’s worth repeatedly thinking, having weighed all the pros and cons.
There is a very positive point - the company exists and is profitable! At the same time, it can find the strength to launch new products on the market, in this case it is CppCat. This product has many interesting aspects in its positioning. And even to the main question of any business: “Why should a consumer buy this product?”, There is already a good answer in the article “Overview of the CppCat Static Analyzer” , which provides very specific figures in favor of the product, based on the materials of the trial use of the product.
At the same time, this product is aimed only at Windows. Regarding Linux, questions do not cease to be asked by the product development team. It may well be that Andrei and his colleagues should pay more attention to these questions. Sometimes the consumer does not know what he would like, and can only give suggestions for improving current products. In this case, the company can release something new on the market and thereby conquer it with a positive response from the target audience. Andrey’s counterarguments regarding Linux seemed to me in that vein. It may well not be worth firing a gun at the sparrow with all the costs indicated by Andrei, but simply finding funds to temporarily attract an analyst who will analyze the situation and give food for thought about making a decision on the release of this version. There is a known rule that 20% of something brings 80% of the profit. But, unfortunately, the world is changing, and maybe fortunately, there is some great polarization of it and this rule is already becoming 10/90. It may well turn out that according to the analyst’s data, the 90% of the company's efforts will yield only 10% of the profit, but it may well be the other way round, the release of a product for Linux for the company will be a breakthrough idea that will make it possible to fulfill the company's dreams. I think that Andrei and colleagues should think about the analytics of this issue. Or simply as much as possible "frame" the information that their specialization is Windows applications. And what is better to have a good reputation, confirmed by the financial response of consumers in one sector, than to take a big step in the other direction and lose everything. some of its large polarization occurs and this rule is already becoming 10/90. It may well turn out that according to the analyst’s data, the 90% of the company's efforts will yield only 10% of the profit, but it may well be the other way round, the release of a product for Linux for the company will be a breakthrough idea that will make it possible to fulfill the company's dreams. I think that Andrei and colleagues should think about the analytics of this issue. Or simply as much as possible "frame" the information that their specialization is Windows applications. And what is better to have a good reputation, confirmed by the financial response of consumers in one sector, than to take a big step in the other direction and lose everything. some of its large polarization occurs and this rule is already becoming 10/90. It may well turn out that according to the analyst’s data, the 90% of the company's efforts will yield only 10% of the profit, but it may well be the other way round, the release of a product for Linux for the company will be a breakthrough idea that will make it possible to fulfill the company's dreams. I think that Andrei and colleagues should think about the analytics of this issue. Or simply as much as possible "frame" the information that their specialization is Windows applications. And what is better to have a good reputation, confirmed by the financial response of consumers in one sector, than to take a big step in the other direction and lose everything. but it may well be the other way around, the release of a product for Linux for the company will be a breakthrough idea that will make it possible to fulfill the company's dreams. I think that Andrei and colleagues should think about the analytics of this issue. Or simply as much as possible "frame" the information that their specialization is Windows applications. And what is better to have a good reputation, confirmed by the financial response of consumers in one sector, than to take a big step in the other direction and lose everything. but it may well be the other way around, the release of a product for Linux for the company will be a breakthrough idea that will make it possible to fulfill the company's dreams. I think that Andrei and colleagues should think about the analytics of this issue. Or simply as much as possible "frame" the information that their specialization is Windows applications. And what is better to have a good reputation, confirmed by the financial response of consumers in one sector, than to take a big step in the other direction and lose everything.
While reading a blog about C ++ on Habr, to which I sometimes write, I noticed a tendency that developers are more and more interested in the issue of static code analysis. As an example of this we can cite the fact that at the time of writing this material in the C ++ blog there were two articles in a row about static code analysis with testing of the corresponding analyzers (about CppCat and Cppcheck) This means that C ++ products are becoming more complicated, and the time for developers is more expensive - and all this can be taken as a positive trend for the development of software for static code analysis, so that it can be assigned a routine for finding errors as a cheaper tool than developers, specialists of the quality control department, etc. This may be a positive moment for companies developing such software.
In this connection I want to wish the CppCat and PVS-Studio development team every success. I want to say thank you to Andrey for kindly providing detailed answers. Andrei was also grateful for the opportunity to finally mobilize and state many of his thoughts, including giving a few examples when their product helped to improve the quality of their product, which, according to him, was asked to be told more than once.
Thank you all for your attention, and Andrey for the interview!
Unfortunately, we no longer develop or support the CppCat project. You can read about the reasons here . |