About resource development pipeline

    For a long time I wanted to somehow write down my thoughts on how to better organize pipeline content and its checks.

    In large projects, when the speed of content development and its quality is comparable in importance to the reliability of the code and its stability, and in volume significantly exceeds it, building a good content development pipeline becomes an extremely important event.
    At the same time, the main thing is to decide for yourself what the correct and good pipeline is.
    On the one hand, it is necessary to give content producers flexible and convenient tools, and on the other hand, constantly monitor that the flexibility does not develop into chaos. Unfortunately, too often faced with situations where an attempt to give out a microscope, led to the fact that they began to hammer in nails without ordering a hammer.
    At first I thought that it was necessary to somehow restrict access to the microscope so that those who could not use it could not pick it up, and then I realized that this was a completely wrong approach. It is much easier to write a few tests that the tool is used correctly and to catch the wrong use cases, explaining how to do it correctly. And this is the only way to fix the root cause of the error, which is not at all that the nail was hammered with a microscope. In the end, the goal of hammering a nail is fulfilled and it doesn’t matter how exactly, it’s a pity that just the time was spent silly. The cause of the error is in the head of the one who did not think to order a hammer and it is it that must be caught and corrected. To teach a person to work correctly.
    Any prohibitive measures are useless, if you do not provide a convenient channel for human thought, then first, it will accumulate in front of your dams, it will rot and this rotten meat will burst and after a while break through and flood either the whole project or a decent part of it.
    Because a person always follows the simplest scenario, a huge amount of effort must be put into ensuring that the correct scenario for using the functional is also the most convenient. It is clear that there are always technologically complex moments that will not go anywhere, but at the same time it is necessary that even there, the right path be the most convenient.
    Pay particular attention to people's complaints about the inconvenience of using the right script. The fact of the complaint indicates that the feeling of a wonderful employee is already identical to yours and it protests against inconvenience on the right track and resists hacks and workarounds. We must respond to such complaints as quickly as possible, because the right way of thinking is our greatest value and it is at risk.
    Here it is necessary to pay attention that one of the cornerstones of this system is that the correction of errors should have a higher priority than the creation of new features and content. Otherwise, all your checkers, builds catching strange situations will not make people think correctly. After all, it is the correction of a mistake, by the correct use of a feature - to read - the correct understanding of a feature in the brain of a content creator - is our most desired result. It is important that little time passes and the person does not forget what and why he was doing. Otherwise, the concept of right and wrong in his brain will not bind firmly.
    Of course, this system must constantly evolve with the project. If possible, finding the next enchanting “crossing of a microscope, a hammer and a lawn mower” should be carefully added to the tests. Of course, in an ideal world, you need to think over all this while the feature is still in development, but in the real world it almost does not work out. Unfortunately (((.
    It is also worth noting that you should not get involved in the complexity of checks, because It is always worthwhile to understand that the design may change and some of the restrictions will need to be removed. Therefore, it is better to have a lot of small trivial checks that are easy to rewrite, supplement, or turn off if necessary, than a few mega cool, complex checks that you yourself won’t understand in a month without reading the description tolmud. Do you need it? Understand, or rather remember that you then still have to explain the logic of this error to a person who makes content, who is often never a technical specialist. It is desirable that the fact of the failure of the verification almost unambiguously indicate an error. Do not forget, our goal is the heads of our employees, who also want to do everything right, simply do not always immediately understand how. Simple checks are easy to convey to their understanding.
    Are you scared that one mistake will give rise to a bunch of failed tests? In vain! The more tests fail, the deeper the error is made, the more important it is. This is wonderful, when looking at the report, you can immediately assess the scale of the disaster, without reading the details.
    To this, of course, it is worth adding a ruthless war with duplication. This is one of the worst enemies of all IT. To copy a house in the real world, and add a couple of groves to it, in the real world is tantamount to building a new house. In IT, unfortunately this is a matter of a few clicks. As a result, then it turns out that the foundation of this house is poorly designed and needs to be redone. As a result, only the original is often redone, and copies continue to carry all the bugs until they are found separately. A terrible but unfortunately regular situation. If it’s possible to somehow pick it up with the code, then automatically it is very difficult to do this with the data.
    The only thing that can be done easily is to eliminate duplication between data fields. Fortunately, you can do this in your own brain. Further, finding potential functional dependencies, one must either immediately exterminate them, or do procedures that will implement these functional dependencies. Those. declaring one of the fields as the source, we rigidly rewrite the values ​​in the dependent ones, even if someone tries to set them to another value with their hands, marking the change as done automatically. Usually a person seeing that automation is resetting his value, realizes that he is wrong and does everything as expected.
    To gouging and lovers always do their own do not want to learn, the system should be ruthless. Their heads are fatal errors in the system and it is better to get rid of them. Therefore, their cries about the Iron Curtain and the prohibition of creativity should not be especially listen. Creative is the ability to make beautifully in the specified framework, and not generally as my left heel wants.


    The correct pipeline must be convenient for proper use and aggressive towards the wrong.
    Simple checks, simple and understandable tools, simple interfaces, they themselves tell people how to do it right.
    Incorrect use is suppressed as softly as possible, but without alternative. Walking around should be extremely difficult. Remember, a person will always go where it is easier, so invite him to the right path, making it difficult for the wrong ones.

    Also popular now: