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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Интересные факты об истории Китайской лунной программы и космической миссии «Чанъэ-4»

Многое скрыто за заборами полигонов и стенами лабораторий Китайской академии космических технологий при реализации лунных научно-исследовательских космических программ, но часть информации потом все равно любезно предоставляется в открытый доступ.В продолжении этой публикации. Ранее опубликованные материалы о «Чанъэ-4»: Краткая Китайская история ...

Путеводитель по программе JPoint 2019

Благо, всего месяц остался до JPoint 2019 — международной Java-конференции, которая пройдёт в начале апреля в Москве. Последний месяц зимы подходит к концу, и просыпается здоровое желание сходить на какую-нибудь большую Java-конференцию. Программа почти стабилизировалась, и настало время раскрыть все ...