Владимир Бычко об управлении проектами

пиэм разъясняет, предостерегает, рекомендует

Категория: Разработка

Базовый чеклист для ревью кода

Ревью кода

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

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

Общее
Работает ли код? Выполняет ли он свои прямые обязанности, корректна ли логика, и т. д.
Легок ли код для понимания?
Соответствует ли код вашему стилю написания кода? Обычно это относится к расположению скобок, названиям переменных и функций, длинам строк, отступам, форматированию и комментариям.
Есть ли в ревью избыточный или повторяющийся код?
Является ли код независимым, насколько это возможно?
Можно ли избавиться от глобальных переменных или переместить их?
Есть ли закомментированный код?
У циклов есть установленная длина и корректные условия завершения?
Может ли что-то в коде быть заменено библиотечными функциями?
Может ли быть удалена часть кода, предназначенного для логгирования или отладки?

Безопасность
Все ли входные данные проверяются (на корректный тип, длину, формат, диапазон) и кодируются?
Обрабатываются ли ошибки при использовании сторонних утилит?
Выходные данные проверяются и кодируются (прим. пер.: например, от XSS)?
Обрабатываются ли неверные значения параметров?

Документация
Есть ли комментарии? Раскрывают ли они смысл кода?
Все ли функции прокомментированы?
Есть ли какое-то необычное поведение или описание пограничных случаев?
Использование и функционирование сторонних библиотек документировано?
Все ли структуры данных и единицы измерения описаны?
Есть ли незавершенный код? Если есть, должен ли он быть удален или помечен маркером типа «TODO»?

Тестирование
Является ли код тестируемым? Например, он не должен содержать слишком много зависимостей или скрывать их, тестовые фреймворки должны иметь возможность использовать методы кода, и т. д.
Есть ли тесты и если есть, то достаточны ли они? Например, они покрывают код в нужной мере.
Юнит-тесты на самом деле проверяют, что код предоставляет требуемую функциональность?
Все ли массивы проверяются на «выход за границы»?
Может ли любой тестирующий код заменен с использованием существующего API?

Источник

Конфликты между старыми и новыми сотрудниками.

noob

Управление конфликтами между ветеранами и новичками строится на трёх компонентах: отборе, информировании и наставничестве.
 
 

Предотвращение

Методы предотвращения

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

Собеседование.

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

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

Особенности предыдущего опыта. Например, если сотрудник привык к детальным инструкциям, фиксированному рабочему дню и общению, в основном, через емейл переписку с фиксацией договорённостей, работать в атмосфере стартапа ему будет непросто. И наоборот, привыкший к «семейной» фирме, где чётких обязанностей нет, все делают всё, а емейл сообщение вместо личного разговора считают оскорблением, плохо впишется в чрезмерно стандартизированную структуру.

Подготовка коллектива.

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

Представляем коллективу. Во многих организациях сотрудника вообще, никак не представляют коллегам или ограничиваются соседями по кабинету. Помимо психологического эффекта через некоторое время возникнет другая проблема — если организация большая и у неё нет внутреннего портала с фотографиями сотрудников, новичку будет непросто. Нужно отнести документ Васе. А как выглядит Вася? Где он сидит?

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

Первые задачи.

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

Особенно важно дать время на адаптацию новичку, являющемуся наёмным руководителем:

В одной дистрибьюторской компании часто менялись руководители отдела продаж. Генеральный директор с лёту ставил довольно сложные и амбициозные задачи и требовал их выполнения в короткие сроки. Однако сделать это было непросто, поскольку рынок высококонкурентный (импортный алкоголь).

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

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

Такая ситуация продолжалась довольно долго, пока генеральный директор, проанализировав ее, понял, что лозунг «Если ты профессионал – тебе все равно с кем работать» неверен.

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

 
 

Активное противодействие

Методы борьбы

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

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

Переубеждение Переубеждаем.

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

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

Вовлечение Вовлекаем.

Берём самых опытных «старичков» и прикрепляем к каждому «новичка» в качестве стажёра. Было: «Понанимали не пойми кого по объявлениям», стало: «У меня есть стажёр. Я крут».

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

Геймификация Геймифицируем.

Соревнование. Чем выше результаты у стажёра, тем весомей премия у тандема. Также покрывает цель повышения качества внутреннего обучения (появляется реальная мотивация учить максимально грамотно).

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

Мотивация отдыхом

motivation

Один из фундаментальных законов Паркинсона гласит: «Работа занимает всё отведённое для неё время». Автор приводит в качестве примера свою бабушку и задачу по отправке рождественских открыток. Если выделить ей на это день, эта работа займёт день. Если неделю — то и неделю.

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

Работники на окладе.

Тут возможны два варианта. Либо человек ленив и выполняет работу медленно, либо он хорош и работает в комфортном для себя темпе. Они вообще, мотивируются иначе — интересными задачами, комфортными условиями труда и проч. Тем не менее, торопиться некуда — рабочий день всё равно, имеет фиксированную продолжительность.

Работники с переменной частью:

Основной подводный камень в том, что очень мало людей готовы надрываться ради дополнительных 5-8 тыс. рублей к премии. Они просто выбирают комфортный темп и работают в нём.

Но есть и третья категория работников. Два представителя этой категории сегодня привезли и собрали для меня небольшой комод. Эти люди работают на себя и берут столько заказов, сколько считают нужным. Чем больше заказов выполнили, тем больше заработали. Но тут есть принципиальный момент. Предположим, с каждой доставки-сборки каждый из пары зарабатывает 1000 рублей чистой прибыли. Сделав за день три-четыре заказа, они могут отправиться домой с чистой совестью. Поэтому они замотивированы действовать максимально быстро и безошибочно — если комод будет собран плохо, я его не приму и придётся переделывать, а это потери времени. Хорошо работают, заразы. Не видел такого ни в магазине, ни в банке, ни в каком-либо офисе.

Но, это чистые «сдельщики», скажете вы. А как быть с постоянными работниками? А вот так:

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

Я проанализировал ситуацию и выяснил, что пик работ у большинства сотрудников совпадал с сезоном охоты, рыбалки, сбора грибов и ягод. И тогда предложил создать «дикую бригаду». Собрал добровольцев среди техников и объяснил: стандартный план по ремонту – пять самолетов в месяц, я увеличиваю план на 40 %, то есть ставлю в него семь самолетов, и если он выполняется, то до конца месяца техники на работу могут не выходить и посвятить оставшиеся дни охоте и рыбалке.

Бригада за 12 дней отремонтировала семь самолетов так, что специалисты не нашли ни одной технической неисправности или брака. Оставшиеся дни люди занимались своими делами.

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

Владимир Яковлев,
Председатель совета директоров и владелец компании «Абсолют», Архангельск

 
 
Такой вот малоизвестный, но ломовой приём. Ради 5-6 тыс. прибавки к премии далеко не каждый готов работать максимально быстро и безошибочно, а вот за возможность сделать как можно быстрее ограниченный объём работ и отправиться домой, можно и постараться.

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

Матрица взаимных ожиданий.

Expect the unexpected

Частая проблема — сотрудники отдела убеждены, что коллеги из соседнего отдела не делают то, что от них требуется. Сотрудники соседнего отдела, в свою очередь, понятия не имеют, что от них требуется именно это. Болезнь особенно характерна для крупных компаний. Для диагностики проблемы руководителю (особенно, если они пришёл «снаружи») надлежит составить следующую таблицу:

Ожидания разработки Ожидания тестирования Ожидания внедрения
Обязательства разработки Олли Мяяття:
Осси Вяанянен:
Лассе Кукконен:
Сами Сало:
Теему Селянне:
Олли Йокинен:
Обязательства тестирования Яркко Иммонен:
Петри Контиола:
Лаури Корпико:
Сами Сало:
Теему Селянне:
Олли Йокинен:
Обязательства внедрения Яркко Иммонен:
Петри Контиола:
Лаури Корпико:
Олли Мяяття:
Осси Вяанянен:
Лассе Кукконен:

 
В примере три отдела — разработка, тестирование, внедрение. В каждом работает по три сотрудника:
Разработка: Яркко Иммонен, Петри Контиола, Лаури Корпико.
Тестирование: Олли Мяяття, Осси Вяанянен, Ласси Кукконен.
Внедрение: Сами Сало, Теему Селянне, Олли Йокинен.
 
Таблица расшаривается на всю компанию. Это важный момент — заполнить её должны не только руководители подразделений, но и сотрудники. Каждый сотрудник пишет, что именно он ожидает от других отделов.
 
 
После заполнения может получиться следующее:

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

Осси Вяанянен:
Передаваемый код должен быть покрыт модульными тестами.

Лассе Кукконен:
Передаваемый код должен содержать комментарии.
Сами Сало:
Соблюдение сроков разработки, предоставление пояснительной записки.

Теему Селянне:
Быстрое исправление дефектов, обнаруженных заказчиком.

Олли Йокинен:
Умение проводить доработки, взаимодействуя с внедренцем напрямую.

Обязательства тестирования Яркко Иммонен:
Своевременное предоставление тестовых планов.

Петри Контиола:
Участие в выработке варианта реализации.


Лаури Корпико:
Своевременно давать фидбек по протестированной доработке.
Сами Сало:
Передавать только доработки, не содержащие дефектов.

Теему Селянне:
Не затягивать тестирование.

Олли Йокинен:
Умение быстро выявлять причины дефектов, найденных заказчиком.

Обязательства внедрения Яркко Иммонен:
Предоставление грамотных ТЗ.


Петри Контиола:
Своевременные ответы на вопросы в процессе разработки.

Лаури Корпико:
Быстрые темпы приёмки.
Олли Мяяття:
Внедренец, обращающийся с возможным дефектом, должен предоставить грамотное описание этого дефекта.

Осси Вяанянен:
Внедренецы должны принимать участие в регрессионных тестах.

Лассе Кукконен:
Внедренцы должны обеспечивать обратную связь после передачи протестированной доработки.

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

Отдел Обязательство Показатель План
Разработка Основной поток перед сдачей на тест работает на компьютере разработчика без ошибок. Количество замечаний тестировщика но ошибкам в основном потоке в доработках, сданных на тест. (Фиксируется в задаче на тестирование). Количество замечаний по ошибкам в основном потоке за месяц/Количество доработок за месяц не более 0,3.

Пример:
10 доработок в месяц, 5 ошибок. Факт = 5/10 = 0,5, план не выполнен.
10 доработок в месяц, 2 ошибки. Факт = 2/10 = 0,2, план выполнен.
Передаваемый код должен быть покрыт модульными тестами. Процент покрытия процедур модульными тестами. (Фиксируется в задаче на тестирование) Среднее покрытие процедур модульными тестами не ниже 90 % в месяц.
Доработки должны сдаваться в срок. Разница между датой дедлайна и датой передачи доработки заказчику (Фиксируется автоматически по закрытию задачи на сдачу заказчику) Среднее отклонение фактических дат от плановых не выше корня квадратного от среднего количества плановых дней на доработку.

Пример:
В среднем, 9 дней на доработку по плану. Среднее отклонение от плана: 2 дня. sqrt(9)=3; 3 меньше 2, план выполнен.

Дефекты, пришедшие от клиента должны закрываться максимально быстро. Среднее время закрытия дефекта. (Фиксируется в дефекте) Среднее время закрытия дефектов с признаком «дефект от клиента» не больше 2 рабочих дней.
Тестирование Своевременно предоставлять тестовые планы. При передаче требований в работу, к задаче на разработку должна быть прикреплена ссылка на тестовый план. Процент покрытия передаваемых доработок тестовыми планами не ниже 95 %
Передавать внедренцам только доработки, не содержащие дефектов в основных и альтернативных потоках. Количество дефектов от клиента на протестированные данным тестировщиком доработки. Отношение количества дефектов от клиента на доработки данного тестировщика к количеству переданных доработок не выше 0,3

Пример:
10 доработок в месяц, 5 ошибок. Факт = 5/10 = 0,5, план не выполнен.
10 доработок в месяц, 2 ошибки. Факт = 2/10 = 0,2, план выполнен.
Тестирование должно проводиться максимально оперативно. Среднее отклонение фактических дат от плановых. Среднее отклонение фактических дат от плановых не выше корня квадратного от среднего количества плановых дней на доработку.

Пример:
В среднем, 9 дней на тестирование по плану. Среднее отклонение от плана: 2 дня. sqrt(9)=3; 3 меньше 2, план выполнен.

Внедрение Приёмка должна проводиться максимально быстро. Среднее количество дней между сдачей заказчику доработки и подтверждением приёмки. Среднее время приёмки — не более двух недель.
Внедренец, обращающийся с возможным дефектом, должен представить грамотное описание этого дефекта. Количество возвратов дефекта тестировщиком внедренцу. Отношение количества возвращённых на доописание дефектов к общему количеству дефектов от внедренцев не выше 0,3
Внедренецы должны участвовать в регрессионных тестированиях. Количество участий данного внедренца в регтестах за квартал. Среднее количество участий сотрудников отдела внедрения в регтестах не ниже 3 в квартал.

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

Подобный подход способен решить массу внутренних проблем и конфликтов.

Рычаги власти в бизнесе

respect my authoritah

Рычагов или источников власти ровно пять. Вот они:
 
 

Правовая власть

Правовая власть, «уставщина»

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

Задействуете исключительно этот рычаг — получите «итальянскую забастовку». Правильное решение — обсуждать регламенты с сотрудниками на этапе написания. Основная цель — сделать так, чтобы каждый понимал, зачем нужен тот или иной пункт инструкции.

 
 

Поощрительная власть

Поощрительная власть, «пряники».

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

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

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

 
 

Принудительная власть

Принудительная власть, «кнуты».

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

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

Страх — плохой инструмент в бизнесе. Он сужает горизонт до «туннеля» — как бы не нарваться на наказание. Некоторые сотрудники в подобных условиях склонны скрывать правду о негативных инцидентах и сдавать приукрашенные отчёты.

 
 

Экспертная власть

Компетентная власть, «эксперт».

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

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

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

 
 

Харизматическая власть

Харизматическая власть, «батяня».

Есть руководители, под началом которых просто приятно трудиться из-за совокупности их личностных качеств и харизмы. «Юлия Анатольевна — наше солнышко», — говорят про таких руководителей.

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

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


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

Куриный суп

Куриный суп

Очень простое и вкусное блюдо, в бытность школотою употреблял его ежедневно. Смущал один момент — в нём вечно плавало некоторое количество варёного лука. Если вы, как и я, не любите варёный репчатый лук, его артефакты очень легко исключаются без потери вкуса.
 
 
Ингредиенты:
 
    Соль, специи по вкусу.
    Картошка.
    Морковь.
    Луковица.
    Вермишель.
    Курица (лучше филе).
    Зелень.
    Яйцо.
    Зубец чеснока.
 
 
Процесс:

01 Разморозить курицу. Лучше, если это будет филе — потом не придётся отделять мясо от костей и хрящей. Не стоит забывать, что мясо ни в коем случае не следует размораживать в горячей воде и лучше не размораживать в холодной — вкус портится. Размораживайте при комнатной температуре, если есть время.
 
 
02 Налить воду в небольшую кастрюлю, не забыть оставить место для выкипания, чтобы не изгваздать плиту.
 
 
03 В воду закинуть курицу, несколько лавровых листов, половинку луковицы и морковку. Включить газ, кипятить минут десять.
 
 
04 Пока кипит бульон, очистить, вымыть, мелко порезать картошку и подготовить вермишель.
 
 
05 При помощи сита или дуршлага слить бульон в миску. Вынуть из дуршлага курицу и отложить в сторонку. Луковицу, морковку и лавровый лист можно выбросить, они своё дело уже сделали.
 
 
06 Перелить бульон из миски обратно в кастрюлю. Закинуть туда нарезанную картошку и вермишель, добавить специи и соль, поставить кипятиться дальше. Закинуть в кастрюлю яйцо.
 
 
07 Пока картошка, вермишель и яйцо варятся в бульоне, отделить куриное мясо от костей, посолить, приправить специями, отложить на тарелке в сторонку.
 
 
08 Не забыть, что яйцо сварится вкрутую за десять-двенадцать минут, картошке и вермишели нужно больше времени. Вовремя изъять яйцо и немедленно положить под струю холодной воды на две минуты.
Очистить яйцо (после охлаждения это будет секундным делом), разрезать на две части, посолить, одну половинку съесть, вторую отложить в сторонку к курице.
 
 
09 Как только картошка и вермишель доварятся (определяется пробованием), выключить газ и оставить настояться минут на десять под крышкой.
 
 
10 Положить в глубокую тарелку курицу, половинку яйца, добавить мелко порезанный зубец чеснока и вылить туда же содержимое кастрюли. Перемешать и посыпать сверху какой-нибудь зеленью.
 
 

Социальный капитал

Компании, отличающиеся подлинно дружественной атмосферой, традиционно отличаются и крайне низкой текучкой.

Особенно грустно, когда дружественная атмосфера губится руководством. Разберём типичные причины. Исследования, проведенные IBM Institute for Business Value, эти самые причины выявили:
 
 
 

Постоянное рабочее место

Отсутствие постоянных рабочих мест.

Система, при которой у сотрудников нет постоянных рабочих мест в офисе. Куда сел, там и работаешь. Стильно, модно, молодёжно, экономит офисное пространство. К сожалению, у этого подхода больше минусов, чем плюсов. Есть тонкий момент — многим людям очень важно персонализировать рабочее место, делать его «своим».

У меня всегда лежит на столе маленькая металлическая машинка Roadnet Technologies, а на стене висит распечатка слоупока на костылях с подписью «Архитектура комплекса». У соседа сзади — шарики для медитации. У соседа справа — три чебурашки. Ну, вы поняли. Эти милые мелочи крайне важны.

С другой стороны, сотрудников время от времени нужно пересаживать. Нечасто, раз в год достаточно. Это, как раз, способствует наращиванию социальных связей. В питерской компании i-Free столы имеют специальные легко перемещаемые тумбочки, максимально упрощающие «переезды».
 
 
 

Рефакторинг бизнес-процессов

Рефакторинг бизнес-процессов.

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

Минус — он же плюс. Если подойти к вопросу со всей тщательностью, можно напротив, атмосферу улучшить.
 
 
 

Харизматичный лидер

Харизматичный лидер, возведенный в ранг суперзвезды.

Он подчиняет своим интересам всю организацию и нарушает сложившиеся нормы взаимопомощи и справедливости. А как же Стив Джобс, спросите вы? Стив Джобс уникален.

Вы знали, что самые страшные провалы, сопровождаемые многомиллиардными убытками, сокращениями, а в ряде случаев и гибелью компаний, были допущены опытнейшими, образованнейшими, успешнейшими, харизматичнейшими лидерами? Не знали? Читайте «Why Smart Executives Fail» Сидни Финкельштейна, она станет для вас откровением.

Семь привычек потрясающе неудачливых людей
 
 
 

Лицемерие руководителей

Лицемерие руководителей.

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

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

Невозможность и её преодоление

Это невозможно

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

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

А причина одна — некоторые разработчики ленятся. Или не хотят решать «неприятную» задачу. Они же люди.

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

Меч короля Артура, правдивая история

В связи с блокировкой lostfilm.tv вспомнился отличный эпизод плохого сериала «Камелот». Это очень плохой сериал. Неудачный подбор актёров, слабоватый сценарий, никудышная операторская работа. Артур похож на кривозубого додика, Мерлин — на ушлого скинхеда. Хорошо, что этот сериал закончился.

Однако четвёртый эпизод мне кое-чем запомнился. В нём рассказывается, как Мерлин получил великий меч Экскалибур и вручил его Артуру.

— Вот твой меч.
— Он прекрасен. Ему нужно имя.
— У него есть имя. Когда я нашёл Калибура, он уже был мёртв. Я проехал много миль, пока не набрёл на озеро, окружённое туманом. Я почти потерял надежду, когда вдруг прямо из тумана раздался голос женщины, звавший меня, подобно Сирене. Сквозь воды озера она протянула руку, державшую меч и сказала, что это — меч короля. Экскалибур.

Мерлин вручает Артуру меч
 
 
Чёрта лысого, хреном по всей моське. Понты для приезжих. Эта история не имеет никакого отношения к тому, что произошло в действительности.
 
 
Мерлин нашёл Калибура. Тот давно ушёл на покой, более не воевал, а ковал мечи. Сначала Калибур отнекивался, говорил, что куёт уникальное оружие, для того, чтобы сковать меч короля, он должен его увидеть. Узнать рост, вес, объём мышц, размах, манеру сражаться.

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

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

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

Мерлин знакомится с Экскалибур

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

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

Калибур сделал меч
 
 
Мерлин и Калибур чистят друг другу хлебалушки. Калибур хватает меч со стойки и собирается прикончить волшебника. Мерлин бьёт чем-то вроде «подчинённого вакуума», отбрасывая Калибура прямо в огонь с кузнечными мехами. Кузнец сгорает заживо.

Мерлин сжигает Калибура

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

Мерлин идёт по льду

Лёд-9
 
 
Девочка теряет равновесие и падает в воду с мечом, но не выпускает из рук. Мерлин спешит изо всех сил, он хочет спасти и девочку и оружие, но она идёт под воду.
Наконец, ей удаётся пойти наверх и протянуть руку, так и не выпустившую оружие. Только вот лёд кристаллизуется угрожающе быстро.
 
 
Рука с мечом выглядела так:
Рука с Экскалибуром
Мерлин пытается решить проблему
 
 
Вот этим зрелищем пришлось Мерлину заплатить за меч короля:
Последнее зрелище

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

Полезная бюрократия

Бюрократ за столом
 

Глубинная причина возникновения дурной бюрократии

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

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

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

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

 
 

Основной признак истого бюрократа.

У такого сотрудника есть несколько характерных черт. Самая яркая — неукротимое желание доказать (в первую очередь, самому себе) собственную нужность. Для этого он генерирует и спускает вниз огромное количество детальных регламентов и инструкций, чтобы создать видимость работы и получить желаемое чувство удовлетворения.

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

Подробнее о дурной бюрократии читайте в книге «Законы Паркинсона».

Но есть и другая форма бюрократии.

 
 

Правила полезной бюрократии.

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

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

 
 
 

Кейс.

 

Вводная

В организации принят следующий порядок обработки запросов на изменение: регистрация, приоритезация, оценка аналитиком, согласование оценки, написание/корректировка требований, передача в работу, актуализация требований, сдача заказчику.

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

Цель достигнута? Да. Функционал работает так, как надо, правку провели очень быстро (там десяток строк кода, не больше). Всё было бы хорошо, если бы эти два специалиста существовали в вакууме, где кроме них и продукта никого нет.

Затраты — пять минут на разговор, двадцать минут на правку и заливку.

 
 

Последствия.

Спустя восемь месяцев на данный кусок функционала прилетает дефект. Тестировщик анализирует код и отвечает, что это не дефект, всё работает корректно. Менеджер проекта читает документацию по функционалу и понимает, что алгоритм, на который прилетел дефект, не описан в документации. У него на проекте есть кусок кода, который делает непонятно, что.

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

Менеджер продукта идёт в отдел разработки, эмпирически вычисляет программиста, который мог такое запилить и садится к нему на уши. Анализируются процедуры, ищется код, делаются попытки восстановить цепочку событий. Удаётся выяснить, что восемь месяцев назад была правка, но она была как бы сама по себе. К ней не привязан дефект, нет никакой резолюции. Код анализируется, делаются предположения, как он работает. Менеджер продукта правит требования и снабжает менеджера проекта актуальной документацией.

Потери на абсолютно бессмысленную работу — около 6 человекочасов всех участников.

 
 

Как надо.

Было бы немножко сложнее. Нужно было создать дефект на требования. Кусок функционала сейчас работает согласно требованиям, но требования неполны, упустили важный алгоритм. Менеджер продукта видит дефект на требования, хватается за голову, правит документацию, создаёт задачу и кидает её разработчику в очередь. Разработчик, когда до задачи доходит очередь, вносит правку, ассоциируя набор изменений с задачей. Тестировщик получает задачу на проверку уже автоматически и проводит проверку. Доработка сдаётся инициатору. Требования полны, в системе существуют явные артефакты корректировки.

Затраты на «бюрократию». Две минуты на регистрацию дефекта, пять минут на разговор с менеджером продукта, пять минут на правку требований, пять минут на постановку задачи, двадцать минут на правку и заливку разработчиком, сорок минут на тест и сдачу. Чуть больше часа против шести с лишним часов потерь при коррекции «по-быстрому».

 
 
Грамотно организованная бюрократия экономит время, предотвращая потери в будущем.