📜 ⬆️ ⬇️

Cycling phobia

Hello, my name is Dmitry Karlovsky, and I am a professional cyclist. In my entire career, I made a bunch of bicycles: large and small, fast and comfortable, curves and straight. Therefore, it’s pretty crazy for me to see intelligent programmers making large and complex applications, but connecting the next leftpad to the project instead of writing a few simple lines with their own hands. All because of the programmers and self-sustaining fear of bicycles in production.


Why was I angry before? I just did not have a bike.


Evolution of the programmer


For simplicity, we select 3 conditional groups of programmers. Conditional, because between them there is no clear boundary, and the same person in different areas can belong to different groups.


Newbie



Specialist



Professional



Causes of fear


Having traced the evolution of a programmer, it is easy to notice that at first he has little skills, but no fear, and as skills are acquired, the fear of bicycles appears and increases. To cope with this fear, you need to make out its causes.


I can not do better


Newbies and the truth can not. He should focus his efforts on explaining the essence and importance of the problems that he sees with his fresh eyes, to more experienced colleagues and library developers.


A specialist will most likely get no worse if he understands the issues well and consults with other specialists and professionals.


A professional is able to do better in most cases, since he is already well versed in the subject and even has the skill of comprehensive analysis. Unfortunately, he usually has no one to consult with, for there are few other professionals, and they deal with other topics. And experts are not enough outlook.


No one will repair defects


Usually the author of the bike is well motivated to repair the defects in his brainchild. But sooner or later this motivation passes, if he does it during off-hours. And then a third-party library, it would seem, allows you to save resources, because its support is done by other people who don’t have to pay. But it is not possible to influence them, and therefore, in order to have time to deadline, you will have to roll up your sleeves and repair the defect on your own, and then punch your patch into the main repository for a long time without any guarantee of success.


There will be nobody to improve and develop


There is the same situation as with defects. But if it is usually clear to all with defects that they need to be repaired, here’s a look at the direction of development is different for everyone. The third-party developer will develop his library where he needs it, not you. With the speed that is convenient to him, not you. So if a specific development vector is required, then your bike gives you control and predictability - two qualities that are much more important for management than time and money costs.


I can't use it anywhere else.


If you want to use a bicycle outside the company, then you will have to develop it either in your free time, or to agree on opening source codes, which is usually more difficult, but quite possible. After all, the company gets PR for free among potential employees, as well as free beta testers (and even contributors, but you should not count on this) in the person of other bicycle users.


Time and money will be wasted.


Here, first of all, it is worth comparing with alternatives. If they are not, then there is no choice - will have to cut. If there are alternatives, then it’s worth comparing in terms of money and time:



It is also worthwhile to separately assess the cost of switching from a third-party solution to a bicycle, if it suddenly turns out that one of the restrictions is more unacceptable. It often happens that it is more profitable to introduce a third-party solution now, and then quickly transfer it to your bike, when (and if) you need it, than now to waste time on cycling.


This assessment helps both to understand whether the game is worth the candle and to explain to management why they should write their own and not take someone else's (or vice versa).


I will be cursed as I cursed my predecessor


It is doubtful that the bike has a significant share of the project. So they will curse more for the rest of the code. So the bike should be done at least as good. And even better, so that no one has a desire to replace it with a third-party library or with another bicycle. For this you need:


  1. The presence of a clear, important for the project benefits.
  2. A simple interface to use, so you don’t have to do your wrappers around.
  3. Flexible API to not have to cut a new bike with a slight change in requirements.
  4. Good test coverage, which allows you to shine less in bug reports and relive refactorings well.
  5. Exhaustive documentation, so that you do not need to search for the author of a bicycle in order to understand how to ride it.

I don't want to take responsibility


This is normal if you don't give a damn about the project you are working on. If you do not really care what you devote a third of your time per day, you will have to defend your point of view. And the higher your status, the more responsive it is to approach what you say. After all, your voice depends not only on how you will work, but on how others will work, and where the project as a whole will roll.


Recommendations


I hope I managed to show the baseless fears of bicycles. The closer you are to professionalism, the more ambitious bikes you can take on. It is better to start with smaller bicycles that have fewer risks, but give a lot of experience in this field. And with this portfolio to take on more and more cool and interesting things. It is only important not to forget that a true professional not only does cool things, but also knows when to abandon their creation. Therefore, always carry out an analysis, which will give you confidence that you are doing everything right, and the management will be on your side, and those who come after you will understand what kind of bicycle it is, why it is there, and why it was impossible otherwise.


Well, to help you with the analysis of third-party libraries, I wrote an application for the evening , allowing you to estimate the time for not solving the problems of projects on GitHub . The larger the number, the worse the project with support, and the longer you have to wait for the solution to your problem. For example: a comparison of Angular, VueJS, React and of course $ mol , on which this bike was written. Keep in mind that the last link is one-time, since pumping out all the open problems of Angulyar eats away all the limits of the GitHub, which eloquently shows that his maintenders cannot cope with the support of the monster that they spawned.


')

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


All Articles