Если коротко, то это
одна из лучших книг, прочитанных мной за последнее время. В книге есть
объяснение почему в маках шрифты выглядят размыто, почему никто не любил
висту и почему нельзя сделать сайт по единому стандарту, чтобы он
одинаково хорошо отображался во всех браузерах. Рассуждения о разработке
коробочных продуктов, ценообразовании, периодичности новых версий,
расстановке приоритетов, технической поддержке клиентов и т.д. Все это
описано довольно просто и читается практически на одном дыхании.
Ниже я выделил
буквально пару моментов которые мне пригодились бы в работе.
1. Установите
приоритеты
Что делать, если
работы хватит для тысяч программистов на 10 лет, а у вас 3 программиста и
следующую версию вы планировали выпустить этой осенью?
Придется расставлять
приоритеты. Далее будет приведен пример расстановки приоритетов для
коробочной модели разработки.
- Каждой функции выделяется карточка.
- Собирается команда
для совещания, до 20 человек, не только программисты, а как раз все
чтобы мнения были различны, тестеры, агенты, клиенты(!)
- Каждый приходит с
личным списком будущих функций.
- Вкратце рассказываем про каждую функцию,
чтобы у всех собравшихся было общее представление о каждой из функций и
чтобы для каждой функции была заготовлена карточка. Идея в том чтобы не
спорить о достоинствах каждой функции и не проектировать ее, а просто
составить представление о ее сути.
- Голосование за функцию (за или
против)
- Отсев самых непопулярных
- Назначение цены каждой функции, в
зависимости от скорости реализации от 1 до 10 (10- функция-монстр)
- Каждый разработчик
получает составленное меню и 50 очков на расходы, разрешается как угодно
потратить очки, купить половину функции или двойную.
- Затем анализируем
сколько было потрачено.
- Делим истраченную сумму на цену
- Сортируем по
полученному коэффициенту, чтобы определить самые популярные.
- Готово. Получен список
всех функций, которые можно реализовать примерно в порядке общих
представлений.
На мой взгляд это
поможет не только определить самые нужные функции, но и поможет
руководству оценить сложность отдельных компонентов, разрабатываемой
системы, что в свою очередь позволит точнее определить сроки и бюджет.
2. Пять почему
Общий смысл в том
чтобы каждая проблема прошла 5 вопросов почему.
Это поможет найти
действительную причину того или иного события, которое вполне возможно
даст более точное представление о том как избежать подобных ошибок.
3. Заставляем
неправильный код выглядеть неправильно
Набор соглашений форматирования кода,
названия переменных и функций, где наименования выполняют поясняющую
роль.
Венгерская
нотация, которая позже была не правильно интерпретирована и приобрела
смысл типов переменных, хотя изначально задумывалась Чарльзом Симони как
смысловое определение (kind, а не type, как по ошибке написал автор
нотации).
Тут скорее интересен сам факт искаженного понимания смысла венгерской
нотации и скорее совет как не стоит делать, по мнению Джоэла. Он всетаки
призывает использовать смысловые префиксы а не указывающие на тип.