В разработке — каждый сам за себя. Но иногда это приводит в тупик

в 14:16, , рубрики: Карьера в IT-индустрии, парное программирование, Программирование, Совершенный код, управление персоналом

В разработке — каждый сам за себя. Но иногда это приводит в тупик - 1

Я чёртовы сутки просидел над таской. Нужно было спроектировать самостоятельный модуль, а людям с тяжелой формой перфекционизма нельзя давать задачи на проектирование.

У меня была неделя — целая бесконечность, которой мне не хватило. Снова и снова я перебирал в голове варианты использования того, что должен сделать, но картинка идеального модуля не клеилась. Всегда находился кейс, который хорошо показывал: такой дизайн — говно. Я думал, играл на гитаре, пробовал писать, тупил в монитор, гуглил, играл с детьми, снова думал — голова всегда была занята дурацким модулем.

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

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

Говорят, разработка — коллективный труд. Я бы сказал по-другому: в разработке коллективное все, кроме самой разработки. Коллективный результат, коллективные обсуждения, синкапы, где вы проговариваете планы. Но сам процесс работы над кодом — просто солипсически изолированный от остальных людей.

Когда задачи распределены (а описание задачи — это 1% от дела), каждый сам за себя. Ты продумываешь свой код один, пишешь его один — причем не дай бог кому заглянуть в твой монитор в этот момент. Ты выбираешься из своей головы в люди, когда у тебя уже есть, что им показать. Вы обсуждаете, а потом снова изолируетесь в своих одиночествах.

Показать неготовый набросок — катастрофа. Как будто тебя увидят не просто голым, а без кожи, без черепа. Увидят все твои обычные несовершенные мысли, которые еще не оформились в умные решения.

То есть “коллективная работа” это не какой-то десятимозговый организм, где все вместе, все в десять раз быстрее, лучше, и купаются в синергии. Коллективная работа — это все та же работа в одиночестве, просто с ритуалом скидывания наделанного в одиночестве в общую кучу.

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

Чтобы чувствовать себя частью команды, надо приносить коллективу результаты, рассказывать о них и слушать. Это всегда путь тысяч компромиссов. А с компромиссами у меня большие проблемы.

Вот один из худших — если хочешь работать хорошо, иногда нужно писать плохой код, чтобы успевать за сроками. Я попробовал, и не смог. Не знаю, болезнь это, издержки чсв или что-то ещё, но я просто не могу закоммитить то, что считаю говном. С одной стороны, вроде это и не проблема. Качество моих решений создаёт мне репутацию парня, который работает оправданно долго. Мне никогда не дают таски, которые горят. потому что я сразу начну «трахать всем мозг». Меня спрашивают, почему так долго, я доходчиво объясняю, какие проблемы я пытался решить, почему это не тривиально, и почему важно было сделать это по-настоящему качественно. Меня не слушают, но верят.

Почему-то так важно, чтобы люди думали — совершенны не только мои результаты, но и мои мысли. А если кто-то увидит мой процесс мышления в сыром коде, то меня сразу разоблачат.

Конечно, я слишком часто оказывался в ситуациях, когда мне не хватало понимания или мозгов, что бы сделать таск идеально. Но я всегда считал, что помощи просят только слабаки. Это тоже часть самообмана. Якобы чтобы стать достойным коллектива, надо уметь быть абсолютно самостоятельным.

Другими словами — чтобы я чувствовал себя полноценным, мне хочется одновременно быть и в коллективе, и одиночкой внутри него. Чувствуете противоречие? Я тоже, но ничего не могу поделать. И путь обмана и самообмана всегда казался мне приятнее пути компромиссов.

У меня есть друг, тоже разработчик. Мы никогда не работали на одной работе, у нас совершенно перпендикулярные стеки, но мы очень много обсуждали программирование. Работая на примерно одинаковых должностях мы очень любили встретиться, и поврать друг другу вдоволь, как круто мы всех разносим на своих работах.

Тот момент, когда тебя впервые называют Senior — охеренный, он случился у нас одновременно. Болтая, мы высмеивали своих коллег (иногда выдуманных), потому что наша с ним дружба всегда содержала очень высокий градус конкуренции и взаимного уважения. Нельзя было просто так прийти и сказать: «Антоха, а вот сегодня я по-настоящему облажался». Мы два самозванца, которые раздувают свою самооценку до астрономических масштабов, чтобы спастись от своей никчёмности.

Но когда моя неделя на проектирование модуля подошла к концу, от никчемности было уже не спастись.

Мне в скайп позвонил Антоха. Хотел обсудить, как круто он сегодня нахамил ПМу, которая не понимает, как устроена разработка. Видимо, я был в таком отчаянии, что самооценка не сработала. Я просто пошарил экран, открыл описание таски, и спросил: «Как мне это сделать?». Это было мощное нарушение негласного контракта нашей дружбы, но Антоха просто сказал: “открывай IDE”.

Код надо было писать на C#, с которым он никогда не работал, поэтому в голове промелькнуло — потрачу кучу времени бестолку. Лучше уж поспать, и на синке сказать, что эстимейт был неверный, буду работать дальше. В IDE был как раз открыт текстовый файл, где я описал последний вариант дизайна модуля. И Антоха сразу — «Я бы назвал эту штуку вот так.». Охереть можно, название подошло идеально.

Он начал задавать вопросы — почему тут так, это что такое, как эти вещи связаны. Работа закипела. Мы много спорили в процессе, но это как интерактивное код ревью, причем такое, которое делается на совесть (когда не просто указываешь на проблемы, но и предлагаешь решение). Мы быстро ушли от псевдокода. Солюшн, фолдеры, интерфейсы, дока, имплементации, IoC. Модуль не получался идеальным, он получался хорошим, а тот факт, что так считал не я один — легко побеждал мой перфекционизм.

Мы сделали недельную работу за несколько часов. Не закрывая скайп, я довольный вбивал git commit, push. Вместе написали дескрипшн к пулл реквесту. Я сказал, что для меня было честью работать вместе, и ушёл спать.

На следующий день я стал всё это обдумывать, и понял, что произошло какое-то дерьмо. Антоха не знает C#, никогда не работал с дотнетом, но работал со мной на равных, если не лучше. Получается он что, засранец, лучше меня что-ли?

Сразу захотелось поделать его работу вместе с ним, чтобы в очередной раз проверить себя. Но как такое предложить, я не знал. Решил подождать, вдруг сам попросит, втайне начав изучать его стек. И он попросил. Пошарил экран, показал, где застрял. Я сразу увидел несколько вариантов решений. Начали обсуждать, он принялся кодить. Быстро и круто. Из меня js-ник, как из гофера дженерик, но я действительно ему помог. Хрен его знает, как это устроено, но с тех пор, всегда, когда я пишу код — у меня в голове воображаемый Антоха, который мне помогает. Ты невольно примеряешь манеру мышления своего партнёра, а уметь мыслить по-разному — очень ценное качество разработчика.

Есть, правда, одна проблема. Дурацкие NDA. Я её игнорирую, потому что верю, что Антоха не понесётся выкладывать подсмотренный IMessageReceiver в свой инстаграм.


Я долго думал, почему это работает, и решил, что тут дело не в свежем взгляде. Каждый разработчик подходит к задачам по-своему. Есть вещи, которые человек с моей манерой мышления решает за минуту, а есть такие, где мой мозг просто загоняет себя в безвыходный лабиринт из неверных решений.

Но та концепция командной работы, которая есть сейчас — не работает. Когда тебе страшно быть слабым звеном, страшно осознавать, что твой вклад меньше, чем у других. Что если ты в чем-то слаб — команда тебя выкинет.

Я слышал у сценаристов, которые сидят вместе и толпой на ходу сочиняют сюжеты, есть термин “эмоциональная оголенность”. Это состояние, когда люди вообще не боятся думать сырые мысли вслух и публично, а чужие мысли, звучат как свои. Так вот, если найдёте себе партнера, с которым сможете работать так же легко, как с собой, считайте, что все ваши профессиональные проблемы решены.

Сильнейшее лекарство от всех сомнений и профессиональных болячек — когда кто-то относится к твоей неидеальности нормально.

Автор: Philipp Ranzhin

Источник

* - обязательные к заполнению поля