Very often we ask ourselves two questions: who is to blame and what to do. In Russia, these are perhaps the most popular questions, to which everyone tries to give their own original answer. I decided to keep this tradition in the light of considering the issues of application development.

Who is to blame?

No matter how good and useful the developer thinks his program turned out to be, he faces constant difficulties emanating from users.

No Users

Photo: Игорь Вишняков.

Users must first be found. How so? The developer tried, made the program, debugged it, screwed in various features, did not sleep at night and did his best project in the whole wide world. But there are no users. And if there is, then they are in no hurry to pay for the program. Of course, if the program was created at the specific request of a particular person or organization, then there is no such problem, but if you want to have a regular income that does not directly depend on the number of hours spent at the keyboard, then sooner or later you will want to create a universal program, in which hundreds and thousands (and better – millions) of users all over the Earth need. And now, when your ingenious product is ready, it turns out that you need the services of a marketer and abundant injections into advertising…

Disgruntled Users

But then the downloads and installations began, and a dull gray rain began of monotonous questions: “How to do this? How to do that? But I can’t do it …” At first, you answer them yourself, but soberly assessing your capabilities , create a forum with advanced users who do this work for you. And if they are not, then new costs are required to pay for the services of technical support specialists…

Vandal Users

As the number of users grows, it turns out that not all of them are white and fluffy. Some of them start pressing all the buttons in a row, enter incredible settings, download an incredible amount of data, and then send messages that the program has died. Only you wanted to sit quietly on your laurels, but no – you either need to do testing yourself, sorting out bug reports, or hire testers. And once you’ve found and fixed 90% of the bugs (and sometimes before), the most dangerous users are found:

Dreamers

They act in good faith to make the world (and your program in particular) a better place. To do this, they offer various, in their opinion, the necessary improvements. And you again rush to storm the fortress called “The best program in the world”, applying ingenious algorithms and adding new components. And immediately you get an increase in the ranks of dissatisfied users and vandal users.

For the sake of fairness, it should be noted that at the first stage (lack of users), dreamers play a positive role, since they help you in promoting the product to the market, making it more functional and valuable. But at some point, the project may lose its integrity and harmony, and you yourself will hardly understand what it can do and what it cannot…

What to do?

There is no universal solution or nobody knows it yet. It is for this reason that various useful books about project management, software design and testing techniques periodically appear, and the number of various specialists involved in the production process is growing rapidly. All this is understandable when it comes to large companies or enterprises. But what about a novice developer who does not have a team and who is forced to cope with everything alone?

Universal Soldier

So that the brains do not boil, you will have to sleep in an ice bath 🙂

You will have to master related specialties, one way or another related to the full cycle of software life: project manager, tester, technical writer, marketer. Even if your project is not related to web technologies, you will have to master web design, layout or use of CMS. And this despite the fact that at the same time you will constantly have to deepen your knowledge of the main profile. I don’t know how an ordinary person can cope with this, but in any case it will be a compromise between the completeness of knowledge in the subject and the breadth of areas of knowledge.

Coding automation

Tools should make your job as easy as possible. Everything that can be automated should be automated: creating the user interface, creating and modifying the application data structure, updating versions, and so on. This does not increase the functionality of the system or its value in the eyes of users, but it does give you a chance to maintain control over the production process with minimum effort and maximum quality. Consider such work as a long-term investment.

Test automation

At the implementation stage of a project, coding takes about 20% of the time, the rest is spent on testing. Perhaps, at the first iteration, the proportions will be different, but with the increase in the complexity of the functionality and the volume of the source code, the time to check the system will increase. And when the number of internal relationships between components exceeds a certain critical level, one manual testing of the added feature is no longer enough. Use various types of automated testing, and if possible, build elements of self-testing into the system.

Documentation automation

Project documentation is the most unpopular topic among developers. Looking at their ideal code, they reason: why document something? After all, everything is clear here! In six months, they can change their minds, but time will be lost. Self-documenting code is not a panacea, although it does make it easier to find bugs and improve. We need systems that automate the process of documenting the project. Both internal documentation and user documentation are required.

Team game

As soon as you get tired of being a universal soldier (or maybe it will happen right away, at the stage of situation analysis), then the only chance for the success of your enterprise will be the creation of your own team, in which there will be a strict division of roles and a high level of competence in each direction.

Summary

Although I’ve listed several areas in the “what to do” section, the first thing I want to draw readers’ attention to is the documentation process. And here’s why.

Absence of users is often caused by a lack of information about a software product: it requires the creation of various documents that would describe its advantages, its capabilities, and so on. This description can be one of the sections of the user manual, which can be quoted on forums, public pages, social networks and other places where the program is promoted.

Dissatisfied users will practically disappear or communication with them will be as comfortable as possible if you have a comprehensive user manual at hand, which will include not only a descriptive part of the interface, but also examples of using the program.

The number of vandal users directly depends on the quality of testing. Test cases can also be considered as part of the documentation, but it all depends on the testing technologies used.

Dreamers can also be kept in check by clearly defining the section of the documentation devoted to the scope of the software product and its capabilities. But do not forget about the positive role of dreamers: they are often the ones who write those parts of the documentation that reflect the developers’ plans to improve the project.

Thus, my options for questions and answers will be:

  • Who is to blame?Developers!
  • What to do?Documentation!

Dr.Explain

For myself, I found a convenient documentation tool – dr.Explain. In one project, it contains all the information you need to create different views of the documentation: an online documentation website, a Windows Help file, a printable PDF, or a generic RTF for use in alternative documentation or data publishing.

Automating the image annotation process is one of my favorite features of this editor today. The ability to edit and format screenshots, an easy and thoughtful interface – all this will reduce the time of working on a project and automate the process of creating documentation. You can read more about this in my article “Image Annotation”.

Dr.Explain provides a wide range of content editing options. The editor supports text with various weights and font styles, annotated images, videos, tables, numbered and arbitrary lists, hyperlinks, macro variables, and special objects. A built-in spell checker with national dictionaries will help you rid the text of typos and errors.

Would you like to supply a manual with the software and make context-sensitive help available? You can easily link documentation to the program using Dr.Explain to create context-sensitive help. Dr.Explain supports the Help ID mechanism, automatically assigns and imports a help ID, and generates map files of help IDs.

An example of integrating help into My Visual Database projects is discussed in the article “Help!”.

Links

  • Dr.Explain is a program for quickly creating help files (help-files), help systems, on-line user manuals, manuals and documentation for software, products, technical and business systems.
  • My Visual Database 6.5 is a simple application development environment; without the help of specialists and programming skills, you will create an application for working with a database.
  • 10 best tools for automating software testing – an article by Y. Efimov about test automation tools, including free ones.
P.S. This article discusses only one of the possible answers to the eternal questions of programmers (and not only) what to do and who is to blame. In real life, there are many more options and not all of them are so unambiguous.
Principle of quantum uncertainty Chernyshevsky-Herzen. At the same time, you can only know one thing: either who is to blame, or what to do.

Leave a Reply

Your email address will not be published. Required fields are marked *