Честные Ожидания Вашего Технического Директора



Я ваш новый технический директор.

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

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



Мы профессионалы?
Это главный вопрос.

Я скажу вам, чего я от вас жду, и это определит ответ на вопрос, профессионалы ли мы.

Нам нужно быть ими.

Слишком долго, годами мы были далеки от профессионализма.

Мы были кофеманами, которых не волновали свидания (шучу, это было бы глупо).

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

Осмотрите эту комнату и посчитайте, сколько программного обеспечения здесь работает. Смартфоны и ноутбуки даже считать не придется.

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

всем этим управляет программное обеспечение.

Нагрев и охлаждение воздуха, качество усиления голоса через микрофон и его записи – все контролируется программным обеспечением.

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

Итак, мой вопрос: сколько раз в день вы доверяете свою жизнь книге, написанной 22-летним программистом в 3 часа ночи? Ответ слишком велик.

На определенном этапе произойдет событие (возможно, оно уже произошло, но я надеюсь, что нет).

Событие, которое будет очень серьезным.

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

Мы все станем государственными служащими, и это не может быть хорошим поворотом для отрасли, поскольку все вдруг станут государственными служащими.



я жду
Прежде всего, прежде всего, я рассчитываю на то, что мы ни хрена не выкатим.

Почему необходимо это говорить? Потому что мы выкатили дерьмо.

И смысл профессиональной разработки программного обеспечения в том, что сегодня она заканчивается.

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

Люди, которые нас наняли, не могут прочитать наш код. Они не знают, что мы там делаем; они не могут посмотреть на то, что мы пишем, и оценить, хорошо это или нет. Все, что они могут нам сказать, это: «Нам это нужно к четвергу».

И мы единственные, кто знает, что мы на самом деле внедряем.

Именно мы, а не кто-либо другой, должны гордиться тем, что мы делаем.

Кто проводит на работе 8 часов в день, а затем идет домой и ему нужно принять душ, потому что он провел день, разгребая конюшню? Заявляю вам, что это непрофессиональное поведение.

Я заявляю, что мы все должны иметь возможность каждый вечер говорить себе: «Видит Бог, я сегодня проделал отличную работу.

Я соблюдал дисциплину, писал хороший код, и благодаря этому бизнес будет хорошо работать».

Мы все должны вернуться домой, гордясь плодами нашего труда.



Я ожидаю, что мы всегда будем готовы.

Я имею в виду, что когда бизнес захочет развернуться, мы будем готовы.

Никаких задержек.

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

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

Если у вас «период ожидания», то… степень непрофессионализма… это вам не кисель! Код не обязательно должен стабилизироваться, он просто должен быть стабильным.

Я ожидаю, что вы всегда будете готовы к развертыванию.

Хорошо, может быть, я дам тебе неделю.

Допустим, я говорю «Развернуть!», а вы говорите «Хорошо, к пятнице все будет сделано».

Я не хочу слышать «месяц» или «шесть месяцев».

Я хочу, чтобы ты был готов.



Стабильная производительность
Я ожидаю, что ваша продуктивность останется стабильной.

Я не хочу, чтобы вы сначала работали быстро, а потом замедлялись.

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

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

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

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

Вероятно, это означает, что вам не следует создавать беспорядок, потому что, когда в проекте беспорядок, он замедляется, но я оставлю это на ваше усмотрение.

Я хочу, чтобы производительность была стабильно высокой.



Мне нужна дешевая адаптивность.

И под этим я подразумеваю тривиальную ситуацию: когда бизнес хочет внести изменения, вы говорите: «Конечно! Нет проблем, мы внесем свой вклад, и нет, вам не придется отдавать почку, чтобы позволить себе это».

Почему? То, что мы делаем, называется «Программное обеспечение».

Первое слово Soft — предполагается, что оно будет мягким.

И почему мы называем код Программным обеспечением? Ожидается, что это будет легко изменить.

И ваша обязанность — поддерживать его в таком состоянии.

Я не хочу, чтобы мне сказали, что наш продукт не соответствует моим новым требованиям.

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

Я ожидаю от вас постоянного улучшения.

Улучшения кода, процессов, производительности.

Если вы видите грязный код, я хочу, чтобы вы его почистили, а не боялись.

Если вы видите плохой процесс, его нужно исправить.

Я ожидаю постоянного улучшения, а не какого-то закостенелого поведения, которое ничего не улучшает. Улучшать! Постоянно.



Бесстрашная компетентность
Например, вы открыли код на экране и ваша первая мысль: «О боги!», а вторая мысль: «Нет, я не буду этого трогать», потому что вы знаете, что если вы залезете в него, то вы обязательно что-нибудь сломаешь, и если ты это сломаешь, оно станет твоим.

Таким образом, вы просто закрыли его совершенно некомпетентно и испуганно.

Совершенно непрофессионально и безответственно трусливо.

Если я чего-то и ожидаю, так это определенно не такого поведения.

Мне нужна бесстрашная компетентность.

Я хочу, чтобы вы посмотрели этому коду в глаза и сказали: «Я изменю тебя, я тебя приберу».

И вам следует применять все необходимые инструменты, чтобы не бояться кода.

Например, я использую тесты.

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

Квинтэссенция безответственности – это создание системы, которую вы вдруг боитесь изменить.

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



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

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

Сами эти слова — грязь.

Эта старая идея: «Единственный способ сделать что-то быстро — это устроить большой беспорядок».

Кто тебя этому научил? Точно не мама.

Нельзя работать быстро и наводить беспорядок.

Нет, вы думаете, что работаете быстро, потому что так кажется, но на самом деле это не так, и вы это знаете.

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

Единственный способ работать быстро — поддерживать максимально высокое качество.

Многие ли из вас склонны работать медленнее, имея дело с плохим кодом? Приходит ваш начальник и говорит: «Мне это нужно к четвергу.

Делай, что хочешь, но мне это нужно к четвергу.

Знаете ли вы, что делать в такой ситуации? Вам нужно сесть и написать лучший код, который вы можете.

Любой тест, который вам нужен.

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

Когда нет стресса, вы можете делать все, что хотите, но то, что вы делаете в чрезвычайной ситуации, показывает, во что вы действительно верите.

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

Если вы считаете, что тесты ускоряют разработку, в экстренном случае вы напишете их еще больше.



Мы не будем винить в этом QA
Задача QA — не находить ваши ошибки.

На самом деле QA вообще ничего не должен найти.

Я ожидаю, что вы выпустите код без дефектов, и когда QA завершит свои тесты, они вернут отчет с надписью «Ничего не найдено».

Они должны задаться вопросом, почему у них вообще есть работа.

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

«Как оно туда попалоЭ» QA — это не ваш слуга, который ищет за вас ошибки, он не отладчик.

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

Я могу внедрить продукт в любой день, просто назовите его.

А если получится, то это другой вопрос.

Это то, что мы делаем с QA. Мы отправляем им продукт, зная, что он не работает, и используем их как способ отсрочить срок.



Автоматизация
Я ожидаю много-много автоматизации.

Ваши тесты.

Мне не нужны ручные тесты, и я не понимаю, зачем люди вообще тестируют вручную.

Смотри картинку на экране .

Это руки QA-менеджера в крупной компании.

Документ, который он держит, представляет собой оглавление его плана ручного тестирования.

Существует 80 тысяч ручных тестов, и он отправляет их каждые шесть месяцев в Индию, где их выполняет армия тестировщиков, и все это стоит миллионы долларов… по крайней мере, так было в 2008 году.

Причина, по которой он находится на слайде, заключается в том, что сейчас 2008 год и происходит кризис.

И он вручает мне этот документ со словами «Мой начальник сократил бюджет на ручное тестирование вдвое».

Вот он меня спрашивает, какую половину тестов мне выбросить? Я сказал ему: «Это не имеет значения.

Вы никогда не будете уверены, что половина системы работает».

Ручное тестирование всегда заканчивается так, как должно.

Потому что по мере того, как система становится все больше и больше, нам нужно все больше и больше испытаний, и она становится все дороже и в конечном итоге становится статьей в бюджете финансового директора, а он смотрит на нее и говорит: «Ну.

ну, это глупый.

" И он прав.

, Это глупо.

Автоматизируйте! Автоматизируйте свои тесты, пока не стало слишком поздно.



Нет хрупкости
Я ожидаю, что ничто не будет хрупким.

Я устал слышать о таких частях системы.

«Мы не можем трогать этот модуль, каждый раз, когда мы это делаем, он ломается в 7 местах.

Никто не должен его трогать, иначе клиент обречен», — нет, мне это не нужно.

Я хочу, чтобы вы перестали бояться своего кода, любой его части и вели себя, наконец, как профессионалы.



Мы поддерживаем друг друга
Мы команда.

Команды поддерживают друг друга.

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

Я не хочу, чтобы у кода был конкретный владелец.

Вы должны поделиться этим.

Я хочу, чтобы вы смогли заменить друг друга.

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

Представьте себе корабль в море.

Нам нужно вести себя точно так же.

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

Непрофессионально иметь в команде одного сотрудника, который останавливает весь проект, если уходит в отпуск.

Другой вопрос, как вы это сделаете.

Не знаю, может, тебе стоит попробовать парное программирование.

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



Честная оценка времени
Я знаю, что всегда есть проблемы с оценкой времени.

Это вещи, которые возлагают на вас ответственность.

Кто-то может сказать «это недопустимо, нам нужно быстрее», но разработчикам этого не скажут. От вас требуется честная оценка, но какая она? Дата — ложь.

Если вы называете дату, вы лжете, вы не можете уложиться в эту дату, она слишком точна.

Я хочу услышать диапазон.

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

Я ожидаю услышать дальность, и когда на тебя начнут давить вопросами типа «Есть ли способ ехать быстрееЭ» Я ожидаю услышать «Нет».



Скажи "нет
Ведь из всех задач профессионала эта самая важная.

Кстати, именно из-за нее тебя наняли.

Сказать «Нет».

Вы можете не верить этому, вы можете думать, что вас наняли, чтобы сказать «Да».

Но любой может сказать «да».

Собаки, например, очень хорошо в этом разбираются.

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

И это знание дает вам силу сказать «Нет».

Когда следует сказать «Нет»? Это самая сложная задача, стоящая перед вами, профессионалы, и одновременно самая важная.

Не стоит говорить «Нет» просто так: «Ты мне не нравишься, так что нет».

Чего вам действительно никогда не следует делать, так это говорить «Да», когда ответ «Нет», потому что это ложь, и вы не делаете то, для чего вас наняли.

Конечно, отказ провоцирует негатив, этого и следовало ожидать.

Бизнес хочет прогресса, для него это важно.

Глупо ожидать, что они поблагодарят вас за отказ, но отказы так же важны, как и согласие.

Потому что бизнес в конечном итоге оценит ситуацию и скажет: «Хм, хорошо, что эти ребята сказали «нет».

Мы могли бы потратить миллионы долларов, если бы они согласились».

Вы все видели мертвые проекты, где кто-то говорил «да», хотя следовало сказать «нет».

Чего еще ты никогда не можешь сказать? Предположим, к вам приходят с просьбой «хотя бы попробовать».

Правильный ответ – «нет».

И это не просто так.

Если бы вы согласились, это означало бы, что вы держите что-то про запас.

Что-то вроде серебряной пули в кармане.

И вы не сказали об этом менеджеру.

Вот и получается, что он наконец выжимает из тебя «я попробую» и уверен, что сейчас ты вытащишь из кармана эту самую пулю.

Но правда в том, что у вас его нет. Вы не сделаете ничего по-другому, не измените свой подход. Ничего вообще не изменится.

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

Вы не сделаете ничего по-другому, просто сказав: «Я попробую».

Единственное, что ты изменил, это то, что ты солгал.

Потому что, когда вы соглашались попробовать, на самом деле вы пытались сказать: «Уходи, ты мне надоел и я не хочу больше об этом говорить».



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

Одной из наиболее важных обязанностей разработчика программного обеспечения является обучение.

Мы — отрасль, растущая с огромной скоростью.

Новые языки каждые пару лет, новые процессы постоянно.

Мы движемся с сумасшедшей скоростью, и тот, кто хоть немного отстанет, может никогда не догнать.

Языки приходят волнами, и искусство профессионального разработчика — оставаться на их вершине.

Возможно, вы знаете Руби на данный момент. Бросаешь, не пройдет и 5 лет. Будет что-то другое.

Так что вам нужно с нетерпением ждать следующей волны.

Closure или Scala, может быть, F#, кто знает. Наступит момент и вам придется перепрыгнуть на следующую волну и продолжить на ней держаться.

Мы все должны постоянно и агрессивно обучаться.

Если вы ожидаете, что ваш работодатель сделает это, вам не повезло.

Если вы ждете, пока люди купят вам книги и отправят на конференции, вы уже отстаете от графика.

Вам нужно быстро учиться.

Вы идете к врачу и надеетесь, что ваш врач сидит вечером дома, читает много медицинских журналов, а не приходит домой с большой бутылкой скотча и не взорвет себе голову в течение следующих 4 или 8 часов.

Вы надеетесь, что оно развивается.

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

И это все относится и к вам.

Будьте готовы тратить на свою карьеру дополнительно 20 часов в неделю.

Этим занимаются профессионалы.

К работникам это не относится.



Наставничество
Тренируйте друг друга.

В нашей отрасли ужасная проблема с образованием.

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

Они учат их языкам, нотации, алгоритмам.

Возможно, они там над проектами работают. Вы можете себе представить эти проекты? Молодые ребята, студенты.

Как они делают проекты? В 3 часа ночи после пивной вечеринки так учатся.

Потом они оказываются в офисе, и с чего бы им менять свое поведение.

В институте все было прекрасно.

Никто ничего с этим не делает. Необходимо превратить этих ребят в профессионалов, и это наша ответственность.

Наша задача — посеять семена профессионализма, чтобы отрасль могла их пожать.

Те из вас, кто работает в этой отрасли более 15 лет, должны преподавать.

Учите молодежь, что и как именно делать.

Какие правила существуют, что такое хороший и плохой код. То же самое и с поведением.

Это то, чего я ожидаю от всех.

Сейчас часто возникают проблемы с обучением.

Как я могу убедить своих коллег принять участие в TDD? Ни за что.

Придерживайтесь этого сами.

Как заставить их вести себя как профессионалы.

Ни в коем случае, веди себя как профессионал.

Это личное решение.

Сделайте это сами, и другие могут сказать: «Хм, у него в голове хорошие мысли.

Может быть, мне стоит поступить так же, как он».

А могут и не говорить, это их личное дело.

Но решение за вами.

Спасибо за внимание Теги: #Роберт Мартин #технический директор #ожидания #программирование

Вместе с данным постом часто просматривают: