Друзья! Мы все очень любим (или не любим) поговорить о шаблонах проектирования. Лично я их сильно недолюбливаю, т.к. большинство из них достаточно очевидны для более или менее опытного разработчика, а шаблонность
Но поговорим мы сегодня не о них, а о других шаблонах, а именно шаблонах поведения, наших людских паттернах, а скорее даже антипаттернах. Чтобы подлить масло в огонь хотел бы немного расшифровать название этого поста.
В повседневной жизни я стараюсь не употреблять слово «программист». Оно для меня несет негативный оттенок и сразу вспоминаются 90-е, когда кого только программистами не называли. Они и картриджи у принтеров меняли и бабушкам-бухгалтерам помогали их первый комп осваивать. Помните это нетленное «Ты же программист!»? В общем дискредитировало себя это слово.
Я как-то привык своих людей называть разработчиками (developers) и для меня программист — это эдакий антипод разработчика. Ну и с годами опыта я познал большое количество антипаттернов для хорошего разработчика, пользоваться которыми он должен как можно реже. Чем реже я их слышу, тем я счастливее. Итак, приступаем.
001. А у меня на компе работает
Эта фраза знакома всем, кто хотя бы несколько месяцев работает в индустрии и просто должна быть исключена из лексикона любого разработчика. Чувак, если ты отправляешь на тестирование код, который не работает у тебя на компе, то тебе не место в профессии! По определению у тебя на компе код всегда работает. Разве может быть иначе? А не работает он у тестировщика, клиента, да кого угодно, потому, что ты не учел какие-то нюансы, различия в окружении, данных, погоде на Марсе и твоя задача выяснить, что именно и исправить, а не пытаться сразу откосить и доказать свою невиновность. Нет ничего страшного в том, что ты чего-то не учел. В моей практике бывали случаи учесть которые мог бы только… Да никто не мог бы!
010. Какой мудакпользователь так (с)делает?
Чувак! Пользователи не мудаки. Это те люди, которые вынужденно или нет пользуются творением рук твоих и что самое интересное платят за это. Зарплата твоя откуда берется? Не знаешь? А я знаю. Тот самый Иннокентий Петрович, которого ты уже 3 раза назвал мудаком, заплатил нам за годовую подписку.
Наши любимые пользователи круче любых тестеров и выделывают такие финтеля, что все за голову берутся. Но это не их косяк, а наш. Раз сделали, значит мы им это позволили и нам отвечать за последствия и разбираться с ними. В практике мировой индустрии ПО есть не один случай, когда убежденность «Какой мудак так сделает?» приводила к убыткам в сотни тысяч долларов. Ну и кто в итоге оказался мудаком?
011. Тестеры нифига не протестировали! Чем они там ваще занимаются?
Чувак! Запомни раз и навсегда. Тестеры не отвечают за качество ПО. Все, что они делают — это измеряют его качество и говорят тебе высокое ли оно, достаточное, либо полная шняга. Отвечает за качество ПО в первую очередь его проектировщики и разработчики. Если ты замутил говнобилд и отдал тестерам, а они там промохали критическую багу и выпустили его в продакшен, то это в первую очередь твой косяк, а не их. Хотя им тоже прилетит за то, что не заметили. Твоя задача разрабатывать код так, как будто ты последний рубеж и за тобою только продакшн и миллионы пользователей. Не надо рассчитывать на то, что тестировщики отловят все баги и у тебя будет возможность их поправить. Никто кроме тебя твой код лучше не знает. Пиши тесты, задавай вопросы, устраняй крайние случаи и да прибудет с тобою сила! В мире немало компаний, где тестировщиков в привычном нам понимании вообще нет. И ничего, живут.
100. Какой идиот это писал?
Как не печально, но существует значительная, ненулевая вероятность того, что ответ на данный вопрос окажется таким: «Я? Ёпт!». Нет идеальных людей, все мы делаем ошибки, срезаем углы в условиях жестких ограничений, да и учимся мы писать идеальный код всю жизнь. Большинство нормальных разработчиков тянет поблевать, когда они видят свой собственный код в начале карьеры. И это нормально. Помни об этом и подумай в следующий раз прежде чем называть кого-либо идиотом. Разработка ПО — это командная игра и не стоит портить отношения в команде ради мелкой фигни. Лучше пообщайся с челом и объясни ему что не так в приватном разговоре. Если он адекватный, то будет только тебе благодарен. Либо ты прозреешь, что совсем не исключено.
101. Готово на 99%
Это просто классика. Победить это невозможно, но бороться надо. Чувак запомни. Когда я спрашиваю статус твоей задачи, в подавляющем большинстве случаев меня интересует ответ на единственный вопрос: «Когда задача будет завершена?». Через час, 2 часа, завтра к вечеру или в пятницу. Меня не очень интересуют интимные подробности твоих непростых взаимоотношений с очередным плагином к jQuery. И уж тем более не надо мне говорить про 99%. Как показывает моя практика 1% может растянуться и на час, и на день, и на неделю. Качественная детализация, планирование и оценка сроков выполнения задач одна из важнейших характеристик зрелого разработчика. Поэтому, когда твой тим-лид в следующий раз спросит тебя о готовности твоей задачи, ты ему четко ответишь «Через 3 часа будет готово» и, что самое важное, сдержишь это обещание. Если ты такую оценку дать не готов, то нужно четко и ясно объяснить почему, и правильно установить ожидания, чтобы никого не подвести.
110. Это невозможно!
Чувак. Во-первых, мы оба знаем, что это возможно. Нет таких задач в индустрии, которые не могла бы решить мотивированная команда или разработчик. Когда нам что-то действительно интересно и нужно, мы горы сворачиваем и делаем это. Билл Гейтс написал FAT пока летел на самолете из Нью-Йорка в Сиэттл (знаю, что байка). Если ты говоришь мне «Это невозможно», то это хорошо известный признак выраженной фрустрации, связанной с данной задачей. Самое главное в такой ситуации — это не пытаться придумывать надуманные аргументы и загонять проблемную ситуацию еще глубже. Так можно и до серьезного конфликта дойти. Вместо того, чтобы сказать «Это невозможно!» необходимо просто взять паузу, подумать, остыть, а затем сесть со своим тимлидом или руководителем и проговорить проблему. Если он у тебя адекватный, то решение возникшей проблемы будет найдено и только укрепит твою репутацию.
111. Я такую ерунду делать не буду.
По большому счету это вариация предыдущей проблемы. Как правило, данное высказывание означает, что тебе, чувак, просто не хочется и(или) не интересно делать то, что от тебя просят, либо у тебя есть свое собственное, сильно отличающееся мнение на то, как оно должно быть сделано. Если ты профессионал, то это означает, что тебе платят деньги за выполняемую работу. Если тебя не устраивает предложенная работа, то будь мужиком, не нуди и просто поменяй ее. И еще один важнейший момент. Ты не можешь всего знать и понимать. Иногда просто необходимо взять и сделать, как тебя просят. Тебе это может тысячу раз не нравиться, но тем не менее быть правильным решением. Зачастую, клиентским менеджерам, руководителям действительно виднее поскольку они значительно чаще тебя общаются с клиентами, сталкиваются с их проблемами и, как правило, в конечном итоге отвечают за их удовлетворенность.
Спасибо за внимание, с Новым Годом и надеюсь этот пост сделает мир чуть лучше!
P.S. Извините за немного резкий и фамильярный стиль изложения. Так надо.
P.P.S. Предлагайте свои паттерны в комментариях. Уверен, я еще не все познал.
Автор: vbougay