Делай как вGoogle
Скачать 5.77 Mb.
|
Boston Farnham Sebastopol Tokyo Beijing Титус Винтерс, Том Маншрек, Хайрам Райт 2021 Делай как в Разработка программного обеспечения Boston Farnham Sebastopol Tokyo Beijing Титус Винтерс, Том Маншрек, Хайрам Райт 2021 Делай как в Разработка программного обеспечения ББК 32.973.2-018 УДК 004.4 В50 Винтерс Титус, Маншрек Том, Райт Хайрам В50 Делай как в Google. Разработка программного обеспечения. — СПб.: Питер, 2021. — 544 с.: ил. — (Серия «Бестселлеры O’Reilly»). ISBN 978-5-4461-1774-1 Современные программисты должны не только эффективно программировать, но и знать надлежа- щие инженерные практики, позволяющие сделать кодовую базу стабильной и качественной. В чем же разница между программированием и программной инженерией? Как разработчик может управлять живой кодовой базой, которая развивается и реагирует на меняющиеся требования на всем протяжении своего существования? Основываясь на опыте Google, инженеры-программисты Титус Винтерс и Хай- рам Райт вместе с Томом Маншреком делают откровенный и проницательный анализ того, как ведущие мировые практики создают и поддерживают ПО. Речь идет об уникальной инженерной культуре, про- цессах и инструментах Google, а также о том, как эти аспекты влияют на эффективность разработки. Вы изучите фундаментальные принципы, которые компании разработчиков ПО должны учитывать при проектировании, разработке архитектуры, написании и сопровождении кода. 16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.) ББК 32.973.2-018 УДК 004.4 Права на издание получены по соглашению с O’Reilly. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. ISBN 978-1492082798 англ. Authorized Russian translation of the English edition of Software Engineering at Google ISBN 9781492082798 © 2020 Google, LLC. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same. ISBN 978-5-4461-1774-1 © Перевод на русский язык ООО Издательство «Питер», 2021 © Издание на русском языке, оформление ООО Издательство «Питер», 2021 © Серия «Бестселлеры O’Reilly», 2021 Краткое содержание Предисловие ..................................................................................................................................14 Вступление ......................................................................................................................................15 Часть I. Тезисы ................................................................................................................ 21 Глава 1. Что такое программная инженерия? ....................................................................................................22 Часть II. Культура ........................................................................................................... 43 Глава 2. Успешная работа в команде ......................................................................................................................44 Глава 3. Обмен знаниями .............................................................................................................................................59 Глава 4. Инженерия равенства .................................................................................................................................82 Глава 5. Как стать лидером в команде ...................................................................................................................93 Глава 6. Масштабируемое лидерство ................................................................................................................. 116 Глава 7. Оценка продуктивности инженеров ................................................................................................. 132 Часть III. Процессы .......................................................................................................147 Глава 8. Правила и руководства по стилю ........................................................................................................ 148 Глава 9. Код-ревью ....................................................................................................................................................... 169 Глава 10. Документация ............................................................................................................................................ 186 Глава 11. Основы тестирования ............................................................................................................................ 206 Глава 12. Юнит-тестирование ................................................................................................................................. 231 Глава 13. Тестирование с дублерами .................................................................................................................. 256 Глава 14. Крупномасштабное тестирование ................................................................................................... 279 Глава 15. Устаревание ................................................................................................................................................ 308 Часть IV. Инструменты ................................................................................................321 Глава 16. Управление версиями и ветвями ...................................................................................................... 322 Глава 17. Code Search ................................................................................................................................................. 346 Глава 18. Системы и философия сборки............................................................................................................ 366 Глава 19. Critique: инструмент обзора кода в Google .................................................................................. 394 Глава 20. Статический анализ ................................................................................................................................. 411 Глава 21. Управление зависимостями ................................................................................................................ 424 Глава 22. Крупномасштабные изменения ......................................................................................................... 452 Глава 23. Непрерывная интеграция .................................................................................................................... 472 Глава 24. Непрерывная поставка .......................................................................................................................... 497 Глава 25. Вычисления как услуга .......................................................................................................................... 509 Часть V. Заключение ....................................................................................................539 Послесловие .................................................................................................................................540 Об авторах ....................................................................................................................................542 Об обложке ...................................................................................................................................543 Оглавление Предисловие ......................................................................................................... 14 Вступление ............................................................................................................ 15 Программирование в долгосрочной перспективе ..................................................... 15 Точка зрения Google ................................................................................................ 16 Что не отражено в книге ......................................................................................... 17 Заключительные примечания .................................................................................. 17 Условные обозначения ............................................................................................ 17 Благодарности ......................................................................................................... 18 От издательства ...................................................................................................... 20 ЧАСТЬ I. ТЕЗИСЫ ...................................................................................... 21 Глава 1. Что такое программная инженерия? .............................................................. 22 Время и изменения .................................................................................................. 24 Масштабирование и эффективность ........................................................................ 30 Компромиссы и затраты ........................................................................................... 36 Программная инженерия и программирование ........................................................ 41 Заключение ............................................................................................................. 42 Итоги ....................................................................................................................... 42 ЧАСТЬ II. КУЛЬТУРА ................................................................................ 43 Глава 2. Успешная работа в команде ........................................................................... 44 Помоги мне скрыть мой код ..................................................................................... 44 Миф о гениальности ................................................................................................ 45 Сокрытие вредно ..................................................................................................... 47 Весь секрет в командной работе .............................................................................. 50 Заключение ............................................................................................................. 58 Итоги ....................................................................................................................... 58 Оглавление 7 Глава 3. Обмен знаниями ............................................................................................ 59 Сложности в обучении ............................................................................................. 59 Философия .............................................................................................................. 60 Создание условий: психологическая безопасность .................................................. 61 Расширение знаний ................................................................................................. 63 Масштабирование вопросов: вопросы к сообществу ................................................ 65 Распространяйте знания: вам всегда есть чему научить других ............................... 67 Распространение знаний с ростом организации ....................................................... 71 Удобочитаемость: наставничество через обзоры кода ............................................. 77 Заключение ............................................................................................................. 81 Итоги ....................................................................................................................... 81 Глава 4. Инженерия равенства .................................................................................... 82 Предвзятость — это проблема ................................................................................. 82 Понимание необходимости разнообразия ................................................................ 84 Выстраивание мультикультурного потенциала......................................................... 85 Сделать разнообразие действенным ........................................................................ 87 Отказ от единых подходов ....................................................................................... 87 Бросьте вызов устоявшимся процессам ................................................................... 89 Ценности и результаты ............................................................................................ 90 Оставайтесь любознательными, двигайтесь вперед ................................................. 91 Заключение ............................................................................................................. 91 Итоги ....................................................................................................................... 92 Глава 5. Как стать лидером в команде......................................................................... 93 Руководители и технические лидеры (и те и другие) ............................................... 93 Переход от роли разработчика к роли лидера ......................................................... 95 Руководитель .......................................................................................................... 97 Антипаттерны ........................................................................................................ 100 Положительные паттерны ..................................................................................... 104 Неожиданный вопрос ............................................................................................ 111 Другие советы и рекомендации ............................................................................. 111 Люди похожи на растения ..................................................................................... 113 Заключение ........................................................................................................... 115 Итоги ..................................................................................................................... 115 8 Оглавление Глава 6. Масштабируемое лидерство ......................................................................... 116 Всегда принимайте решение.................................................................................. 116 Всегда уходи ......................................................................................................... 121 Всегда масштабируйте себя ................................................................................... 125 Заключение ........................................................................................................... 131 Итоги ..................................................................................................................... 131 Глава 7. Оценка продуктивности инженеров ............................................................. 132 Зачем оценивать продуктивность инженеров? ....................................................... 132 Расстановка приоритетов: что измерять? .............................................................. 133 Выбор значимых метрик с использованием целей и сигналов ................................ 137 Цели ...................................................................................................................... 138 Сигналы ................................................................................................................ 140 Метрики ................................................................................................................ 140 Использование данных для проверки метрик ........................................................ 141 Принятие мер и оценка результатов ...................................................................... 145 Заключение ........................................................................................................... 145 Итоги ..................................................................................................................... 145 ЧАСТЬ III. ПРОЦЕССЫ ........................................................................... 147 Глава 8. Правила и руководства по стилю ................................................................. 148 Зачем нужны правила? .......................................................................................... 149 Создание правил ................................................................................................... 149 Изменение правил ................................................................................................. 159 Руководства........................................................................................................... 162 Применение правил ............................................................................................... 164 Заключение ........................................................................................................... 168 Итоги ..................................................................................................................... 168 Глава 9. Код-ревью ................................................................................................... 169 Поток обзора кода ................................................................................................. 170 Как проводятся обзоры кода в Google.................................................................... 170 Преимущества обзоров кода .................................................................................. 172 Передовые практики обзора кода .......................................................................... 178 Виды обзоров кода ................................................................................................ 182 Оглавление 9 Заключение ........................................................................................................... 185 Итоги ..................................................................................................................... 185 |