Каждая компания любит продавать себя на основе своей «инженерной культуры», однако существует бесконечное количество способов ведения бизнеса и отдела разработки. Это большая область разногласий, поскольку она очень субъективна и часто выходит из-под контроля людей (поскольку обычно это может зависеть от партнерства между бизнесом и разработчиками). Кроме того, легче всего обеспечить соблюдение, если это идет сверху вниз, снизу вверх не невозможно, только сложнее.
За эти годы я составил список того, что, на мой взгляд, составляет действительно отличную культуру разработчиков. Идеи исходят из моего личного опыта, а также от сообщества в виде книг, видео и т. Д.
Начиная с 4 основных (высших) идей, которые, как мне кажется, не подлежат обсуждению. Подпункты в этих разделах очень основаны на мнениях и похожи на реализацию. Разделить их по категориям было непросто, так как некоторые из них умещались сразу в несколько, но я сделал все возможное, чтобы их отсортировать. Возможно, не удастся получить все сразу, но я определенно чувствую, что чем больше вы ставите галочки, тем лучше.
tldr;
- Динамическая среда
- Открытость
- Дисциплинированный
- Удовлетворяет и мотивирует
1. Динамическая среда
- усердно работать над ретроспективным улучшением плохих процессов или систем, поддерживать их гибкость (например, обработка технического долга, действительно устаревшие структуры)
- держитесь подальше от «страха перед неудачей»
- открыт для использования новых технологий или концепций для творческого решения проблем
- поощрял регулярные обсуждения (обмен знаниями и общение)
- бизнес в целом активен и открыт для поиска инноваций
- «Эгалитарный» в том смысле, что каждый может работать над чем угодно или разговаривать с кем угодно (в определенных пределах, но обычно проявление инициативы приветствуется)
- команда время от времени участвует в хак-днях или экспериментирует
- «Смените контроль на масштаб и инновации»
- не просто следите за своими конкурентами
2. Открытость
- препятствовать ненужному разделению людей или информации
- четкое общение (если нужно принять серьезное решение, его не следует принимать в секрете)
- явное доверие к инженерии
- поощрять сотрудничество по большим идеям / решениям
- усилия, чтобы стили и архитектура кода были четко документированы и постоянно обновлялись
- похвала за владение (за исправление / функцию / выпуск)
- дружелюбная и общительная рабочая среда
- цели / ценности компании, понятные каждому, и то, как их работа связана с этим
- люди чувствуют, что могут быть честными, особенно в случае ошибки / ошибки или пробела в знаниях
3. Дисциплинированный
- «Падение объема, а не качество», качество всегда превыше всего, никогда не падает
- Испытания приветствуются и уважаются
- никаких произвольных сроков (паника в последнюю минуту должна быть исключением, а не нормой)
- автономные кросс-функциональные команды
- функции включают проектирование на раннем этапе, координируемое менеджером продукта / проекта
- «На основе данных», решения, подкрепленные метриками (т. Е. Бережливое производство)
- должны соответствовать вашей собственной практике (например, если вы решили использовать «функциональный стиль», сделайте это)
4. Удовлетворение и мотивация
- «Расширение прав и возможностей, а не контроль», то есть определенный уровень свободы
- карьерный рост, зарплата и обзоры результатов
- решения, основанные на заслугах, а не на авторитете
- обучение на рабочем месте принято
- код или выпущенные функции имеют явную выгоду для пользователей
- «Доволен» пока
- «Мотивирован» на будущее
В целом, есть несколько факторов, которые, на мой взгляд, приводят к высокой инженерной культуре, что, в свою очередь, приводит к высокому удовлетворению и мотивации. Я чувствую, что это то, что я буду постоянно пересматривать и над чем работать. Надеюсь, вы согласны с некоторыми из них, даже если это всего лишь принципы высшего уровня.
Если вы можете придумать что-нибудь еще, пожалуйста, не стесняйтесь комментировать, хотелось бы услышать мнение других по этому поводу.