Все начинается с привычек. Создание привычек – это естественный этап становления профессионалом, так как бо́льшая часть нашей повседневной рутины зависит именно от привычек. Мы просыпаемся, идем на работу и выполняем рутинные действия, обычно не задумываясь, что делаем. Если ты хочешь изменить свою жизнь, то тебе нужно начать с изменения своих привычек. Конечно, проще сказать, чем сделать. Очень сложно избавиться от плохих привычек, но и новые сформировать не так просто.
Если ты хочешь стать профессионалом, то тебе следует сформировать привычки профессионала. Однажды мне выпал шанс работать в команде, следовавшей принципам Scrum. Мы должны были проводить ежедневные планерки, где рассказывали о прогрессе работы и о том, что мы планируем делать дальше. И был в нашей команде один разработчик, который всегда записывал то, что он собирается сказать. В отличие от других разработчиков он подготавливал свою речь к каждой планерке. Это привычка профессионала.
Еще одна привычка, по которой можно отличить профессионала от любителя, – это навык тайм-менеджмента. Как ты управляешь своим временем? Ты знаешь, как правильно планировать задачи и время? Можешь ли ты верно оценить время, которое придется потратить на рутинные задачи? Возьми в привычку составлять план на следующий день – так ты сможешь гораздо эффективнее организовывать свое время. Профессионал всегда знает, что он должен сделать за день, а также он понимает, сколько времени займет та или иная задача.
Мы рассмотрели лишь два примера привычек, которые необходимы каждому профессиональному разработчику. Тебе придется самому решить, какие привычки развивать, чтобы задать собственный стандарт профессионализма; однако эти две очень критичны, потому что они устанавливают последовательность, а последовательность делает тебя надежным человеком. Если тебе хочется прочитать на эту тему хорошую книгу, то советую тебе «Силу привычки»[2] Чарльза Дахигга.
Будучи разработчиком ПО, ты столкнешься с трудностями – техническими и этическими. Если ты хочешь стать профессионалом, то тебе нужно научиться принимать правильные решения в обоих случаях. Технические задачи будут более объективными – существуют проверенные способы их решения. Очень легко доказать, что одно решение лучше другого. Но решить этические вопросы намного труднее – здесь не существует единственного верного решения.
Одна из труднейших этических проблем – принятие решений, которые станут правильными для клиента, при этом эти решения будут угрожать собственной стабильности.
Один из моих любимых разработчиков и авторов Боб Мартин написал превосходную статью о том, как сказать «нет» (http://simpleprogrammer. com/ss-no). Боб сравнивает разработчика с врачом. Он рассказывает об абсурдных ситуациях, когда пациент указывает врачу, как поступить лучше. Например, пациент говорит, что у него болит рука, так что ее нужно ампутировать. Конечно же, врач на такие «советы» скажет «нет». Но разработчики, оказавшись в такой ситуации, чаще всего говорят «да» и удаляют участок кода, боясь гнева начальника.
Профессионал должен знать, когда уместно сказать «нет» даже своему работодателю. Как говорит Боб Мартин, каждый профессионал имеет собственные принципы, которые не должны нарушаться ни при каких обстоятельствах. Тебя могут даже уволить, но это та цена, которую ты должен заплатить за звание «профессионала». Конечно, это может быть очень болезненно, но привычка делать то, что кажется тебе правильным, вскоре окупится. К тому же ты сможешь спокойно спать по ночам.
Иногда профессионалам нужно принять действительно трудное решение о приоритетных направлениях их работы. Непрофессиональные разработчики тратят много времени на работу над уже созданными продуктами, так как они не могут решить, над чем работать дальше. Возможно, они просят других людей определить приоритеты за них. Профессионал оценивает работу, которую нужно выполнить, сам определяет приоритеты и берется за дело.
ЛОВУШКА: ЧТО ДЕЛАТЬ, ЕСЛИ Я НЕ МОГУ СКАЗАТЬ «НЕТ»?
Очень легко давать советы другим, сидя в удобном кресле и ничем не рискуя. Но не каждый человек может и хочет рисковать своей работой. Я понимаю, что, возможно, ты находишься в такой ситуации, когда нельзя отказать, потому что этот отказ может сильно отразиться на твоем будущем.
Мой совет такой: делай то, что от тебя требуется, но постарайся не попадать в такую ситуацию снова. Очень легко попасть в эту ловушку, когда тебе срочно нужна работа; однако если ты попадешь в такую ситуацию, то ты сильно ограничишь свои возможности, а у других людей будет над тобой огромная власть.
Если ты находишься в подобной ситуации, постарайся выбраться из нее как можно быстрее. Накопи немного денег – так ты не будешь сильно волноваться, если потеряешь работу. Или сразу займись поиском нового места, где тебе не придется принимать много этических решений или где твое мнение будет цениться.
Если у тебя нет других вариантов и приходится делать то, что от тебя требует начальство, то постарайся хотя бы быть на равных или поставь себя в положение, где ты будешь иметь какое-то преимущество.
Как профессионал, ты постоянно должен повышать качество своей работы. Конечно, у тебя не всегда получится выполнять работу так качественно, как ты этого хочешь, но со временем ты сможешь достичь своих стандартов. Многие разработчики совершают одну большую ошибку: они понижают стандарты качества, вместо того чтобы развиваться и достигать чего-то нового.
Очень важно качественно выполнять всю работу, а не только какие-то «важные» ее части. Настоящий профессионал обладает высокими стандартами во всех областях своей работы, так как профессионал знает, что, как сказал Ти Харв Экер в своей книге «Думай как миллионер»[3], «как вы делаете что-то определенное, так вы делаете все». Если ты будешь занижать стандарты качества в одной области, то заметишь, что стандарты упали и в других. Если ты начинаешь идти на компромиссы с совестью, то остановиться будет очень трудно.
Не забывай пользоваться своими сильными сторонами. Конечно, ты можешь поработать над слабыми, но полезнее всего задействовать сильные стороны. Профессионал всегда трезво оценивает собственные сильные и слабые стороны.
Благодаря постоянному саморазвитию профессионалы могут соответствовать своим высоким стандартам. Если ты хочешь стать профессионалом, тебе нужно постоянно улучшать собственные навыки и изучать что-то новое. Убедись, что у тебя есть готовый план, которому ты можешь следовать и улучшать свои навыки. Так ты сможешь выполнять работу более качественно. Никогда не останавливайся на достигнутом – всегда двигайся вперед и старайся стать лучшей версией себя.
• Как ты думаешь, можно ли назвать тебя профессионалом? Обоснуй свой ответ.
• Расскажи о своих привычках. Понаблюдай за собой и определи максимальное количество привычек. Составь список привычек и раздели их на две категории: хорошие и плохие. Подумай, какие хорошие привычки можно было бы развить. Составь план развития этих привычек.
• Что думают о тебе другие? Попроси двух или трех человек, которые хорошо тебя знают, перечислить две хорошие и две плохие привычки. Не принимай их мнение за истину; но чтобы ты мог оценить себя, тебе нужно знать мнение других людей о тебе.
• Когда в последний раз тебе приходилось говорить «нет»? Если ты никогда не попадал в такую ситуацию, подумай, что бы ты делал в подобной ситуации. Например, твой начальник просит тебя сделать что-то, что тебе кажется неправильным. Твоя реакция?
12Налаживаем контакт с коллегами и боссом
Тебе может показаться странным, что в наше время в названии главы я использую слово «босс» вместо «менеджер». Что ж, на это есть веская причина – и во многом это связано с тем, о чем мы будем говорить в этой главе.
Знаешь, один из важнейших аспектов работы программиста – общение с другими людьми, а не написание кода. Мы обсуждали это ранее в главе 4, однако сейчас я хочу дать тебе несколько практических советов по работе с людьми, с которыми тебе придется общаться бо́льшую часть времени: твой босс и коллеги.
То, как ты ведешь себя с этими двумя группами, сильно влияет на твою работу. Ты можешь ощущать комфорт (ты чувствуешь себя уютно и спокойно, находясь в рабочей среде; ты также активно продвигаешься по карьерной лестнице), но твое окружение на работе может превратить твою жизнь в настоящий ад (общение с людьми, которых ты ненавидишь, перспективы быть на одной должности множество лет; тебе кажется, что работа в этом месте не приведет ни к чему хорошему).
Я знаю, что ты до сих пор удивляешься, почему я использую слово «босс» вместо «менеджер». Не хочу, чтобы ты начинал листать главу в поисках ответа, поэтому скажу правду сейчас.
Одна из главных проблем, с которыми сталкиваются разработчики ПО, – непонимание иерархической цепочки и коммерческого аспекта бизнеса. На самом деле с этими проблемами сталкиваются не только разработчики ПО, но именно в нашей среде эта проблема только усугубляется.
Это может быть связано с тем, что хоть многие из разработчиков ПО и неконфликтные личности, но если в одном месте собирается множество умных людей с разными идеями, то они вряд ли придут к согласию. Встречи затягиваются, прогресс тормозится, так как все ждут, когда остальные члены группы придут к единому мнению. Разработка, действующая по принципу консенсуса, часто превращается в разработку, действующую по принципу компромисса. Как ты понимаешь, компромисс редко становится хорошим решением для большинства проблем.
Кто-то должен взять на себя ответственность и стать главным. Мы можем называть таких людей менеджерами, но не забывай, что если человек принимает тебя на работу, увольняет или указывает, что именно делать, то этот человек – твой босс, а не менеджер.