Я не знаю как это сделать! Честно-честно

    Это статья о простом приеме мотивации молодого специалиста. Если коротко: сильный специалист признается, что не знает как решить задачу, чтобы мотивировать новичка. О паре случаев из жизни под катом.

    Сам я на эту удочку попался случайно и безо всякого умысла коллеги.

    Я пришел работать perl-программистом в одну известную сетевую игру. Хотя до этого работал системным аналитиком, в т.ч. по высоконагруженным системам. Но системные аналитики в геймдеве исторически не востребованы. А мне хотелось посмотреть на игру, в которой я сам зависал, «изнутри».

    Мои профессиональные данные на собеседовании обсуждались чисто формально. Я был знаком с ведущим программистом и главным локомотивом проекта. Назовём его $М.

    В том числе, мы с ним часто общались на профессиональные темы. Поэтому на собеседовании $М, в основном, рассказывал какие соискатели приходили до меня, и как они талантливо фейлили тесты. На единственный вопрос заданный мне по теме, я сказал, что сложные регэкспы зло, а люди, дающие их на собеседовании, провокаторы. Эта же задача решается двумя сплитами с простыми регэкспами. $М это вполне устроило.

    Вот разговор с руководством затянулся. Большую часть времени меня пугали, какой сложный человек $М и как мне тяжело будет с ним работать. Я дипломатично кивал и улыбался (вспоминал истории рассказанные $М, они действительно были забавны). Объяснять же очевидные для меня и (для $М) вещи людям, не разбирающимся в программистских тараканах, было не совсем этично.

    Тараканы у $М были очень крупные, но для меня безопасные. Просто $М терпеть не мог два типа людей: тех кто мешал ему работать и людей некомпетентных. Притом вторых сильнее: они физически вызвали у него такую же реакцию, как у меня звук пенопласта по стеклу.

    И было почему: $М был (и, я уверен, остался) реально крут. Я могу вспомнить только одного человека, с ним сравнимого. А по скорости мышления и объёму контролируемого кода $М до сих пор мой top-1. Его работоспособности можно было удивляться. Но самое главное, что меня восхищало – его отношение к поставленной задаче.

    В этом он напоминал легендарного Кота моего знакомого. Легендарность была завоевана в отношении к Еде. Кот никогда не играл с Едой, не ходил вокруг Еды с загадочным видом, не относил Еду в удобное место. Он просто подбегал к Еде по кратчайшей траектории и начинал есть с ближайшего к нему краю. При этом если Еда была живой, то алгоритм не менялся. Еду ели с той части тела, за которою поймали. Не заморачиваясь, что Еда пищит и вырывается. Если всю Еду за один раз съесть не получалось, то Кот просто засыпал с Едой во рту и, проснувшись, незамедлительно процесс с того же места.

    $М работал именно так. Он мог отвлечься недолго перед работой, но дальше… Ну, вы поняли.

    Игрушка, над которой мы работали, была известна не только заоблачными ценами на донат и огромным дружным комюнити. Но и адскими лагами. Спроси посреди ночи любого игрока: с чем у него ассоциируется число 503 – ответ будет предсказуем: Service Unavailable. Я как спец по нагруженным системам, ессно, поинтересовался, нет ли какого известного узкого места. К моему удивлению оно было.

    От предыдущего разработчика осталась система шаблонов, построенная с runtime-парсером на RegExp. Как она тормозила можно себе представить. Как она тормозила в FCGI, можно себе представить, понимая как работает FCGI (или другая асинхронная система).

    Вот тогда я и услышал фразу: и «я не знаю, что тут можно сделать». От $М.

    Меня это завело. Но задача предсказуемо не решалась в лоб. Формат шаблонов заметно отличался от гототовых библиотек и просто написать конвертер на тех же регэкспах, не прокатывало. А шаблонов было под две сотни. И все их перебивать руками грустно. В итоге, решили прикрутить Template Toolkit к наиболее уязвимому месту — странице инфы об персонаже. Имевшей адский шаблон и кушавшей 25% ресурсов серверов. А в дальнейшем перепилить шаблоны по ходу пьесы.

    Тут я как раз подхватил жесткую ангину, не успев толком войти в тему. Валяясь дома, я взял старый парсер и отломав от него хвост, приделал новый. Теперь он не собирал страницу, а превращал её в синтаксическое дерево. Естественно, это обеспечивало полную совместимость. Теперь при старте FCGI или первом обращении к шаблону мы получали дерево. А для необходимости рендера, скармливали дерево и данные процедуре, которая работала в 7 раз быстрее изначальной катавасии (на среднем шаблоне). Дальнейшим шагом было написание компилятора дерева в perl-код, что дало производительность ещё в 6 раз большую. Процесс обслуживающий многострадальный inf.pl затерялся во втором десятке top'а.

    Если задать вопрос: мог ли $М решить эту задачу сам? Думаю да. Просто его больше интересовала боёвка игры. И «я не знаю, что можно сделать» было оправданием нежелания разбираться в скучных для него вещах. В принципе, задача чисто инженерная, а я как аналитик просто знал, как ее решить. Когда $М был бы вынужден отвлечься от обдумывания глобальной переделки магии в игре и вгружаться в скучные шаблоны. Было еще несколько инженерных задач, где я высказывал идею, а $М реализовывал их буквально за время пока я ходил покурить.

    В любом случае мне было приятно решить «нереальную» задачу, а $М оттого, что в команде появился хороший программист (и что ему не надо решать «вспомогательные задачи»).

    На этом можно было закончить историю. Если бы не «$В».

    $В сидел рядом с $М и мешал смотреть в окно. Потому, что если $М поворачивал к окну голову, то при этом он видел $В. А это несказанно портило $М настроение. Нельзя сказать, что $В был ужасающе некомпетентен. Чего у него нельзя было отнять, так это желание сделать работу хорошо.

    Из-за этого он работал крайне медленно, заморачиваясь на мелких деталях и бесподобно лажая в главном. Обычно $В поручали работу, которую руководство считало нужной, а $М бесполезной или вредной. $В не знал осечек. Он находил простые, надежные и в тоже время неожиданные способы уронить сервер, или организовать глобальную дыру в безопасности. В крайнем случае, просто сделать что-то почти стабильно работающее на тестовом сервере и стабильно не работающее на продакшене.

    Ситуацию усугубляло то, что $В был флегматик. Глаза у него почти никогда не горели. Работать он начинал только после пары перекуров и нескольких волевых попыток обреченно собраться с мыслями. Также он безропотно сносил как издевательские разносы $М, так и мои попытки доходчиво объяснить ему косяки.

    Но, в один прекрасный день, объясняя ему простое (для меня) возможное решение поставленной задачи, я посмотрел в начинающие мутнеть глаза и решил схулиганить. Заявив: да, вот такой есть алгоритм, но я не представляю, как его тут можно применить.

    Сработало. Хотя $В привычно ушел курить и собираться с мыслями, но поступь его была твердой. Вернулся он раньше обычного и работал более целеустремленно. А главное, на насмешки $М ( следовавшие почти каждый раз когда $М случайно поворачивался к окну) $В лишь загадочно улыбался.

    Тем временем, у меня начались разногласия с владельцами компании не связанные с программированием. В итоге я уволился.

    Через некоторое время мы снова работали с $М в одной компании. И как-то разговор зашёл про $В. О котором, $М отозвался с реальным уважением, мол, взялся за ум и вообще молодец. Хотя то, что $В молодец я уже знал и сам. $В вытащил проект, которым занимался (околоигровая блогосфера) на весьма приличный уровень. Хотя и $М и я считали это проект мертворождённым.

    Не знаю, повлияло ли на $В мое «признание». Или просто «пришло время» раскрыться. Но я помню свои ощущения от фразы «я не знаю, как это сделать». И пусть я хвастун, но мне кажется, что это сработала именно моя уловка.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 33

      +6
      Знаем мы этот проект.
      А статья шикарная. Читал на одном дыхании.
        0
        «как решить задачу, что бы мотивировать новичка.» «чтобы» пишется слитно!
      +1
      БК?
        +7


        Спасибо, интересная статья. Многое объясняет!
          +3
          Спасибо за статью! К сожалению прием работает не всегда, иногда попадаются крепкие ребята
            +14
            Просто программист В. мешал работать вам, а сам он начал работать когда ушли те кто мешал работать ему.
              0
              Не исключено. Любая картина мира субъективна и стремиться к эгоцентризму)

              Хотя мы и занимались разными проектами.
                +1
                Вы, кстати, кем себя ощущаете, холериком? У флегматиков и так всё всегда в равновесии.
            • UFO just landed and posted this here
                +2
                Если называть вещи своими именами, вы применили к В. психологическую манипуляцию и испытали от этого чувство власти над другим человеком и большое удовлетворение. Непонятно только, зачем нужно было писать об этом на Хабр. Предлагаете руководителям в сфере IT взять на вооружение подобные манипулятивные приёмы?
                  +10
                  Вроде бы как да, именно это и предлагает.
                    –1
                    тссс… не палите контору)
                    0
                    Это очень хороший прием.
                    +11
                    Вы открыли для себя применение типичной женской уловки в новой сфере! Имхо.
                      0
                      Эххх, веселые были времена ж)
                        0
                        Мы манипулировали как могли
                        0
                        Сто процентов БК, даже двести.
                          +2
                          Может у В. просто появилась мотивация, когда вы все уволились из компании?
                          Может ему предложили должность М. и он «загорелся»?
                            0
                            В. уволился раньше М… Насколько я знаю перешёл он удачно)
                            –5
                            Я могу комментировать? o_O
                              –5
                              test
                                +5
                                То ли клоунада, то ли гадюшник, то ли одно посреди другого.
                                  –3
                                  Поставил под x64 win7, запустил — закрывается без слов :) Запуск под админом — на секунду появляется синее окошко и так же без слов исчезает. В трее тоже.
                                    –3
                                    Браво, минусяторы! Мой пост несёт мысль о том, что при краше должна throw'иться хоть какая-то ошибка, и, желательно не как у MS — «Неизвестная ошибка» или там «390485367»
                                      +3
                                      сударь, вы упоролись? гляньте название темы
                                    +5
                                    Да там один гадюшник был однако. Статейный А. просто не может терпеть людей больше знающих чем он сам. И переводил качество в кол-во. Ну и автор просто симпатизирует А., отрицая мнение с другой стороны. Тему психологического анализа автора, можно описывать и дальше, исходя из его статьи. Ведь большинству надо, чтобы их погладили по головке и похвалили.
                                    Статья однобока и не раскрыта, вообще не понятно, что она на хабре забыла, ей лучше в гигтаймсе.
                                      0
                                      Знаете, топик не о том, где был гадюшник и клоунадство.

                                      Кстати, А. в истории нет. Есть я, В. и М… Там были ещё персонажи, но на эту историю они не влияли. Хотя были свидетелями некоторых моментов. Кстати, один из них отписался в комментариях.

                                      Опять же. Не скрываю, что данная история моя и только моя интерпретация некоторых событий, которые могли иметь место в определённом времени/пространстве. Насколько она верная — не знаю, два случая — не достаточны для статистически достоверной выборки;) Поэтому статья носит не научный, а скорее развлекательный характер.

                                      Кстати, что меня больше всего удивляет — где комментарий: «О! Так у меня же такой же кот!»?
                                      +1
                                      многострадальный info.pl

                                      inf.pl же, без о
                                        0
                                        Вы нашли пасхалку:) При финальной вычитке обнаружил очепятку (статью набирал на телефоне в метро, а прогнозирование такое прогнозирование).

                                        Но решил не трогать, для непосвящённых — более понятно, а посвященные… был интерес, догадаются ли)

                                        Поправил текст)
                                        +1
                                        Типичная армейская отмаза!
                                          +1
                                          На самом деле почти всем людям, которые так говорят, просто лень этим заниматься. И благих помыслов «обучить» коллег у них нет
                                            0
                                            Как же это просто присвоить/примазаться к чужому успеху не пошевелив и пальцем…

                                            Only users with full accounts can post comments. Log in, please.