Unfortunately, we are no longer developing or supporting the CppCat static code analyzer. Please read here for details.
This article was originally published (in Russian) at the website towave.ru and was translated and republished at our blog by the editors' permission.
There are quite a lot of articles on the Internet about the strategies of promoting websites, web-services and mobile applications. They are so numerous one may think that nobody develops "ordinary" applications anymore and therefore they don't need any promotion. But this is just an illusion. In connection with this subject, I'd like to share with you my own experience in this area.
Figure 1 - Evgeniy Ryzhkov
There are just six of us in the OOO "Program Verification Systems" company. Although we are situated in the provincial city of Tula, we have nothing to do with pryanik gingerbread, samovars or weapons, as one might conclude from established stereotypes. Our job is to develop, promote and sell programmers' tools.
The type of tools we work on is called static code analyzers. A static code analyzer is a program that "reviews" the source code written by programmers and picks out fragments that are likely to be errors. The output of an analyzer is a list of diagnostic messages reporting potential bugs. The programmer's task is to study this list, exclude "false positives" from it and fix genuine errors. What makes such tools valuable is that the sooner an error is found in the source code, the cheaper it is to fix this error.. Roughly speaking, fixing a bug will cost you almost nothing if it is found at the coding stage. If a bug is found after the code has been passed to the testers, fixing it will cost some money because they will have to run the testing cycle all over again. And if a bug is found in a final product that is already in use, fixing it will cost you quite a lot, for you will have to issue a public update, carry out some user support activity, and so on. That's why static analysis tools are used when developing software products with large budgets.
For a long time we have had only one software product - PVS-Studio. In the beginning of January 2014, we released a new product - CppCat. The specifics of our target audience (programmers) sets quite stern restrictions on the choice of available strategies for product promotion. It is a general rule that one should understand the specifics and needs of one's target audience when choosing product promotion methods. We are happy to say that we are 100% lucky with our users - many businesses can only dream of such smart and adequate customers. On the average, out of 100 letters sent to our technical support service, only 1-2 letters are inadequate. Most users ask highly competent questions, report genuine issues and defects in our own product and sometimes even give valuable recommendations on how to fix them. Such are the virtues of our customers.
But these advantages are also a source of the disadvantages of our target audience. No one else treats any advertisement with so much skepticism as programmers do. Absolutely no one of them will ever bite a bait of the "Buy our product, and everything will be alright" fashion. Banner ads? Show me a programmer who is not familiar with AdBlock. Contextual ads? When searching for something through a search service, a programmer will only click on a contextual ad if he's drunk and having problems aiming with the cursor.
However, we have discovered some methods and strategies during all these years of work. They are really useful and I'd like to tell you about them.
First of all, programmers are quite fond of reading articles. An advertisement nicely "wrapped" in an interesting technical article won't put them off. So if you can write articles showing your tool in a good light, it could be a useful promotion method. But be sure to never write something like, "Our product is so awesome, so very beautiful!" It took us quite a while before we found - or rather accidentally discovered - our own format. At some point, we started checking various well-known open-source projects with our analyzer. Those were projects like the Chromium browser, the Miranda IM messenger or the Doom/Quake game engines. It is very important to understand and accept the fact that bugs can be found in any code, whatever tough are the professionals who wrote it. So there are no reasons why you can't find errors in code by Google. In those articles, we would discuss 5-10 bugs found in each project we had checked and at the end of the article we would just mention that all those bugs had been found with our tool and invite the readers to try it on their own code if they wish. Programmers willingly read such articles - after all, isn't it interesting to learn about flops made by the developers working for worldwide known companies? And just along the way they get to discover our tools, which they will then download and try.
Another very important aspect, also discovered by chance, is a recognizable and funny mascot. PVS-Studio's mascot is a unicorn with a rainbow; CppCat's is evidently a cat with the "C++" inscription on its belly.
Figure 2 - Logos of PVS-Studio (left) and CppCat (right)
We made a number of drawings of these mascots in various postures (about 10 images for each character). Now we use those images in almost every article to attract readers' attention.
Numerous articles tell you to pick a name for your product wisely. But for some reason we have always failed to follow this advice. Take the company's name, for instance - could anything like that ever occur to anyone sensible? The same is with the names of some of our earlier products... When working on CppCat, we decided we should try to find an adequate name for a new product. First, it should mention the C++ language. Second, we exploited the common stereotype that programmers are fond of cats. If you wander about the cppcat.com website and scroll down the pages, you'll see cats almost everywhere.
Getting back to articles being the main method of promoting programmers' tools, I need to mention one thing. It's not enough to write an interesting article. There are two other important tasks beside that:
I should mention here that 85% of our sales are done in the USA and Europe and only 10% are in Russia. That's why we need to publish all our materials and promote our tools in the English segment of the Internet first of all. The best websites to publish articles for programmers are codeproject.com, codeguru.com, go4expert.com and the like. However, regularly publishing articles at these sites is not an easy task.
First, those guys will always try to get you to publish your articles as advertising - usually in a special section. As I already said, programmers ignore ads. Second, even if you manage to arrange the publishing of your article in the common (non-advertisement) section, there is always a risk to lose contacts with the editors and therefore the access to the website for future publications. For example, it was the case when we at some moment became unable to publish articles in the common section of the software.intel.com website - the editor who had been supervising our articles moved to another job and we didn't manage to establish a new contact. So what I want to point out is that the problem of publishing your articles at all those sites is not a technical one. The problem is about obtaining the permission to publish the articles at appropriate sites and constantly keeping in touch with the respective administrators of those sites. We find it so important that we are actually seeking an employee for this particular job. Unfortunately, we haven't found a good candidate yet. On one hand, such a person should be quite familiar with the specifics of programming to be able to pick suitable sites. On the other hand, he/she must possess good skills of communicating with website administrators to be able to maintain constant relations.
Besides having your articles published at a good place, you need to make sure that someone actually reads it, that is, attract traffic to your materials. And again one needs to understand the specific character of our articles. We do appreciate that we can publish them not only at our own website but at others too. But no one can guarantee that you publication will be read by thousands of people. It is often useful to "pump target traffic" to a freshly published text with the help of nice social bookmarking sites like reddit.com. A site like this is in fact a collection of user-published links with attractive titles. Once a link is published, users vote for or against it (i.e. mark it either with a plus or minus). If the link manages to get a high score, it ascends to the top and you may expect thousands of visits in a few hours. Seems pretty simple.
However, the issue is that your link might never reach the top if it gets a few downvotes during the first minutes after having been published, so the whole painful process of publicating (not to mention the process of writing) the article might appear to have been in vain, for no one will read it. And even a good article may well catch a few downvotes for any reason. That's why it is especially crucial to give some "push" to your link - for example ask your friends and acquaintances to vote for it. But we are not the only smart guys here, of course, and reddit-like sites will ban you for voting for your own articles - even if you vote from different accounts. Long story short, attracting traffic is a very complicated yet very efficient task. We also want to hire a special man to do this job, but there's no one suitable around yet.
To sum it up, I'd like to answer the question, "So how do you promote your programmers' tools?"
If we were to be more successful with the points 3 and 4, we would significantly enhance our sales and business in general, so these tasks are very important for us.