📜 ⬆️ ⬇️

I do not know how to do that! Honestly

This is an article about the simple reception of a young specialist motivation. In short: a strong specialist admits that he doesn’t know how to solve a problem in order to motivate a beginner. About a couple of cases of life under the cut.

I myself caught this bait by chance and without any intent of a colleague.

I came to work as a perl programmer in one well-known network game. Although before that he worked as a systems analyst, incl. on highly loaded systems. But system analysts in gamedev are not historically in demand. And I wanted to look at the game in which I myself was hanging out, “from the inside.

My professional data on the interview was discussed formally. I was familiar with the lead programmer and the main locomotive of the project. Call it $ M.
')
In particular, we often talked to him on professional topics. Therefore, at the interview, $ M, basically, told which applicants came before me, and how talented they were with the tests. To the only question asked me about the topic, I said that difficult regexps are evil, and the people who give them at the interview are provocateurs. The same problem is solved by two splits with simple regexps. $ M is quite satisfied.

Here is a conversation with the leadership dragged on. Most of the time, they scared me, what a difficult person $ M would be and how hard it would be for me to work with him. I nodded diplomatically and smiled (remembered the stories told by $ M, they were really funny). It was not entirely ethical to explain things that were obvious to me and (for $ M) to people who were not versed in programmer cockroaches.

The $ M cockroaches were very large, but safe for me. Simply, $ M could not tolerate two types of people: those who prevented him from working and incompetent people. Moreover, the second is stronger: they physically caused the same reaction in him as I did with the sound of foam plastic on the glass.

And it was why: $ M was (and, I am sure, stayed) really cool. I can only remember one person comparable to him. And in terms of the speed of thinking and the amount of controlled $ M code, so far my top-1. His performance could be surprised. But the most important thing that fascinated me was his attitude to the task.

In this he reminded me of my friend’s legendary Kota. Legend has been won in relation to Food. The cat never played with Food, did not go around Food with a mysterious look, did not carry Food in a convenient place. He simply ran up to Food along the shortest path and began to eat from the edge closest to him. Moreover, if the food was alive, the algorithm did not change. The food was eaten from that part of the body that was caught. Without bothering that Food beeps and breaks out. If all the Food at one time did not work, the Cat simply fell asleep with the Food in the mouth and, upon waking up, immediately the process from the same place.

$ M worked just like that. He could be distracted for a short while before work, but then ... Well, you understood.

The toy we worked on was known not only for exorbitant donat prices and a huge friendly community. But hellish lags. Ask any player in the middle of the night: with which he associates the number 503 - the answer will be predictable: Service Unavailable. I, as a specialist in loaded systems, essno, asked if there is any known bottleneck. To my surprise it was.

From the previous developer there is a template system built with a RegExp runtime parser. As she braked you can imagine. As she braked in FCGI, you can imagine, understanding how FCGI (or other asynchronous system) works.

It was then that I heard the phrase: “ I don’t know what can be done here .” From $ M

It got me. But the task was not predictably solved in the forehead. The format of the templates was noticeably different from the ready-made libraries and just writing a converter on the same regexp did not roll. And there were two hundred templates. And to interrupt them all with my hands is sad. In the end, we decided to fasten the Template Toolkit to the most vulnerable point - the information page about the character. Had a hellish pattern and ate 25% of server resources. And in the future to cut patterns in the course of the play.

Then I just picked up a tough sore throat, not having time to really enter the topic. Lying around at home, I took the old parser and broke off the tail from it, attached a new one. Now he did not collect the page, but turned it into a syntactic tree. Naturally, this ensured full compatibility. Now at the start of FCGI or the first access to the template, we received a tree. And for the need to render, fed the tree and the data procedure, which worked 7 times faster than the initial confusion (on the average template). The next step was to write the tree compiler in the perl-code, which gave the performance 6 times more. The process serving the long-suffering inf.pl was lost in the second ten of the top.

If you ask the question: could $ M solve this problem by himself? I think yes. He was just more interested in the game boev. And “I don’t know what can be done” was an excuse for not wanting to understand boring things for him. In principle, the task is purely engineering, and I, as an analyst, simply knew how to solve it. When $ M would be forced to distract from thinking about the global reworking of magic in the game and enter into boring patterns. There were a few engineering tasks where I expressed the idea, and $ M implemented them literally in the time when I went to smoke.

In any case, I was pleased to solve the “unreal” task, and $ M because a good programmer appeared in the team (and that he didn’t need to solve “auxiliary tasks”).

This could finish the story. If not for "$ B".

$ B was sitting next to $ M and made it difficult to look out the window. Because if $ M turned his head to the window, then at the same time he saw $ V. And this ineffably spoiled the $ M mood. This is not to say that $ B was terribly incompetent. What could not be taken away from him was the desire to do the job well.

Because of this, he worked extremely slowly, zamorachivayas on small details and incredibly fake in the main thing. Usually, $ B was assigned work that the management considered necessary, and $ M was useless or harmful. $ B did not know misfires. He found simple, reliable and at the same time unexpected ways to drop the server, or to create a global security hole. In a pinch, just do something almost stably working on a test server and stably not working on production.

The situation was aggravated by the fact that $ B was phlegmatic. His eyes almost never burned. He began to work only after a couple of smoke breaks and several volitional attempts to hopelessly collect his thoughts. He also meekly demolished both mocking delays of $ M, and my attempts to intelligibly explain to him the shoals.

But, one day, explaining to him a simple (for me) possible solution of the problem, I looked into the eyes that were beginning to get dull and decided to fool around. Saying: yes, there is such an algorithm, but I have no idea how to apply it here .

It worked. Although $ B habitually quit smoking and collecting his thoughts, but his step was solid. He returned earlier than usual and worked more purposefully. And most importantly, at the mockery of $ M (that followed almost every time when $ M accidentally turned to the window) $ B just mysteriously smiled.

In the meantime, I started having disagreements with the owners of the company not related to programming. In the end, I quit.

After a while, we again worked with $ M in one company. And somehow the conversation turned to $ B. About which, $ M responded with real respect, they say, took up the mind and generally well done. Although the fact that $ As a young man I already knew myself. $ B pulled a project that he was engaged in (around the game blogosphere) to a very decent level. Although both $ M and I considered this project stillborn.

I don’t know if $ in my “confession” influenced me. Or simply “the time has come” to open up. But I remember my feelings from the phrase " I do not know how to do it." And even if I am a boaster, it seems to me that it was my trick that worked.

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


All Articles