Bill Gates (or not with him) there is a saying:
“I will always look for a lazy person – he will find an easy way to solve the problem.”
And it seems that one can agree with her, but here it is necessary to clearly understand what “lazy” means here.
Obviously, the author of this quote did not want to say that a person waving his hand at everything and lying on the stove with his face in a pillow is the very person who is able to look for at least some way to solve a problem or do at least something useful. An explanation is needed here … – I think these words will do: “A good programmer is a Lazy programmer, but on the contrary, this is not always the case” (from Daniel Nations article). This is true, that’s exactly what a good programmer is lazy, and not lazy – good, this is one of the qualities good proger … And yet, how does laziness help? How can she help at all?
There are actually a lot of examples proving this … Here is one of them: Lazy (L) and non-lazy (N) programmers are asked to make a video player for the site. Programmer H goes and writes his player from scratch, while programmer L just googles ready-made solutions, looks to see if one of the solutions found is suitable for the project, and then screws it into his program. Bottom line: Programmer H spent a lot of time making a bicycle, and Programmer L, who was simply too lazy to make his decision, has a video player in the shortest possible time and its implementation is simpler and more proven. Yes, you can say that the programmer H has a video player that is much more closely adapted specifically to the customer’s site, and in some cases you will be right. But still, customers often do not need any special features for such an established functionality for any site, like a video player.
The conclusion from this is that if something has been done before you and done well, then why not just screw it into your project.
Yes, a good lazy programmer really wants to not work a lot here and now, but he also has the “skill of calculating future labor costs.” What I mean? – Let’s say he [программист] made a feature, made a video player, so that’s it, you can push to the master, as they say? Mmm, not always! He will probably write the documentation in the right places first. What for? – he’s lazy and hardly wants to now bother yourself with such a chore. However, as I said – “the skill of calculating future labor costs.” If now he does not write the documentation, then later his colleagues will ask how it generally works, what he will first need to get into his code (after a few months), deal with it, explain all this to his colleagues (perhaps not one once). He understands this in advance and therefore immediately writes docks, tk. this, in terms of labor, means that he only needs to explain it once in his head, write it out, and that’s all – he will not be disturbed anymore. Isn’t it good, isn’t it clever, isn’t lazily is it?
Well, that is, you understand now? – You also need to be lazy tactically and with an eye on the future.
Also, a lazy programmer automates everything in his path, as he is too lazy to do any routine work. Even more often, a lazy programmer searches for and uses tools created by others to automate routine tasks. The presence of such tools with him leads to the fact that he becomes able to do tasks even faster and without errors due to the human factor, because we all know how many mistakes a person can make when performing routine tasks with his hands.
A good programmer is created to automate, and the need for automation spurs laziness in a person …
What do we have as a result? A good lazy programmer is one who can tactically being lazy and avoiding labor costs as much as possible, which in the context of a programmer as any kind of engineer is still rather a plus, because engineering is aimed at optimizing the costs of the effort spent by people, as a result of which to do more with the same labor costs. Thus, I realized that “lazy” is not a very suitable word here … I would call such a programmer rather “effective“.
The main reason for writing this article is to formulate a conclusion about all the articles that I read in the course of studying the issue.
The second reason can be called the lack of good articles on this issue in runet, except that article by link can be called a good Russian-speaking, but in it the author still does not draw the conclusions that I made for myself as a result.
For the rest, I dug up thoughts from abroad: