Идеальный программист. Как стать профессионалом разработки ПО
Реклама. ООО «ЛитРес», ИНН: 7719571260.
Оглавление
Роберт Мартин. Идеальный программист. Как стать профессионалом разработки ПО
Обязательное вступление (Не пропускайте, оно вам понадобится!)
От издательства
1. Профессионализм
Оборотная сторона профессионализма
Ответственность
Первое правило: не навреди
Не навреди функциональности
Контроль качества не должен ничего обнаружить
Вы должны быть уверены в том, что ваш код работает
Автоматизированный контроль качества
Не навреди структуре
Трудовая этика
Знай свою область
Непрерывное обучение
Тренировка
Совместная работа
Наставничество
Знание предметной области
Понимание интересов работодателя/заказчика
Скромность
2. Как сказать «нет»
Антагонистические роли
Как насчет «почему»?
Высокие ставки
Умение работать в коллективе
Не пытайтесь
Пассивная агрессивность
Цена согласия
О невозможности хорошего кода
3. Как сказать «да»
Язык обещаний. Рой Ошеров
Признаки пустых обещаний
Признаки серьезных обещаний
Выполнение обещания зависит от другого человека X
Вы не уверены в том, что обещание можно выполнить
Вы не справились
Резюме
Учимся говорить «да»
Обратная сторона «попытки»
Дисциплинированное принятие обязательств
Итоги
4. Написание кода
Готовность
Ночное программирование
Программирование в расстроенных чувствах
Зона потока
Музыка
Помехи
Творческий кризис
Творческий ввод
Отладка
Время отладки
Выбор темпа
Умейте остановиться
По дороге домой
Душ
Отставание от графика
Надежда
Спешка
Сверхурочные
Ложная готовность
Определение «готовности»
Помощь
Как помогать другим
Как принимать помощь
Обучение
5. Разработка через тестирование
Вердикт вынесен
Три закона TDD
Длинный перечень преимуществ
Уверенность
Снижение плотности дефектов
Смелость
Документация
Архитектура
Выбор профессионалов
Чем TDD не является
6. Тренировка
Азы тренировки
Двадцать два нуля
Длительность рабочего цикла
Додзё программирования
Ката
Вадза
Рандори
Расширение кругозора
Проекты с открытым кодом
Этика тренировки
Заключение
7. Приемочное тестирование
Передача требований
Преждевременная точность
Принцип неопределенности
Стремление к точности оценки
Поздняя неоднозначность
Приемочные тесты
Что такое «выполнено»?
Взаимодействие сторон
Автоматизация
Дополнительная работа
Кто и когда пишет приемочные тесты?
Роль разработчика
Обсуждение тестов и пассивно-агрессивная позиция
Приемочные тесты и модульные тесты
Графические интерфейсы и другие сложности
Выбор интерфейса для тестирования
Непрерывная интеграция
Стоп-сигнал
Заключение
8. Стратегии тестирования
Контроль качества не должен находить дефекты
Служба контроля качества – часть команды
Создание спецификаций
Описание характеристик системы
Пирамида автоматизации тестирования
Модульные тесты
Компонентные тесты
Интеграционные тесты
Системные тесты
Исследовательские тесты
Заключение
9. Планирование
Встречи
Отказ от участия
Уход со встречи
Повестка дня и цель
Пятиминутка
Встречи планирования итераций
Ретроспективные встречи по итерациям и демонстрации
Споры и разногласия
Мана концентрации
Сон
Кофеин
Перезарядка
Физические упражнения
Ввод и вывод
Помидоры и распределение времени
Уклонение от работы
Инверсия приоритетов
Тупики
Грязь, болота и трясины
Заключение
10. Оценки
Что такое «оценка»?
Обязательства
Оценка
Подразумеваемые обязательства
PERT
Оценка времени выполнения
Широкополосный дельфийский метод
Метод быстрого голосования
Покер планирования
Аффинная оценка
Анализ по трем переменным
Закон больших чисел
Заключение
11. Под давлением
Как избежать давления
Обязательства
Как сохранить чистоту
Дисциплина в кризисных ситуациях
Как вести себя в тяжелой ситуации
Без паники
Взаимодействие
Доверяйте своим методам
Помощь
Заключение
12. Сотрудничество
Программисты и люди
Программисты и работодатели
Программисты и программисты
Принадлежность кода
Коллективная принадлежность кода
Парное программирование
Как работать мозжечком
Заключение
13. Группы и проекты
Формирование группы
«Притертая» группа
Созревание
Что сначала – группа или проект?
Но как управлять такой группой?
Дилемма владельца проекта
Заключение
14. Наставники, ученики и мастерство
Диплом для неподготовленных
Обучение
Digi-comp I, мой первый компьютер
ECP-18 в средней школе
Нетрадиционное обучение
Горький опыт
Ученичество
Период ученичества
Мастер
Ремесленник
Ученики/интерны
Реальность
Профессионализм
Как убедить людей
Заключение
Приложение. Инструментарий
Инструменты
Управление исходным кодом
«Корпоративные» системы управления исходным кодом
Пессимистическая и оптимистическая блокировка
CVS/SVN
Разветвление
git
IDE/редактор
vi
Emacs
Eclipse/IntelliJ
TextMate
Отслеживание задач
Счетчики дефектов
Непрерывная сборка
Инструменты модульного тестирования
Инструменты компонентного тестирования
Определение
FitNesse
Другие инструменты
Инструменты интеграционного тестирования
UML/MDA
Детализация
Без изменений и надежд
Заключение
Отрывок из книги
Почему вы выбрали эту книгу? Наверное, потому что вы – программист, и вас интересует понятие профессионализма. И правильно! Профессионализм – то, чего так отчаянно не хватает в нашей профессии.
Я тоже программист. Я занимался программированием 42[1] года и за это время повидал многое. Меня увольняли. Меня превозносили до небес. Я побывал руководителем группы, начальником, рядовым работником и даже исполнительным директором. Я работал с выдающимися программистами, и я работал со слизняками.[2] Я занимался разработкой как самых передовых встроенных программных/аппаратных систем, так и корпоративных систем начисления зарплаты. Я программировал на COBOL, FORTRAN, BAL, PDP-8, PDP-11, C, C++, Java, Ruby, Smalltalk и на многих других языках. Я работал с бездарными халявщиками, и я работал с высококвалифицированными профессионалами. Именно последней классификации посвящена эта книга.
.....
Вся процедура контроля качества FitNesse заключается в выполнении модульных и приемных тестов. Если тесты проходят успешно, я выдаю продукт. При этом процедура контроля качества занимает около трех минут, и я могу выполнить ее в любой момент.
Конечно, из-за ошибки в FitNesse никто не умрет и никто не потеряет миллионы долларов. С другой стороны, у FitNesse много тысяч пользователей, а список дефектов очень невелик.
.....
Пользователь
Хорошо но мало
Книга – истинный кладезь премудрости для оптимистов и набор банальностей для пессимистов. Содержит довольно много очевидных на первый взгляд вещей, которым придает рельеф и объем проверка на личном опыте автора. Очень удачное описание основного преимущества TDD. Несколько странная точка зрения на полную финансовую ответственость профессионала. Довольно забавное описание перехода из начальника отдела разработки в консультанты. В целом польза не слишком велика, но и времени, и денег эта книга потребует от читателя очень немного.