Пиццикато Алексея Лота

Полезные высказывания из книги "Факты и заблуждения профессионального программирования" Гласса

Хороший менеджмент важнее хорошей технологии.

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

Люди важнее, чем средства, методы и процесс.

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

Лучшие программисты до 28 раз превосходят слабейших, но оплата их труда не бывает соразмерной, поэтому лучший программист - самое выгодное приобретение в индустрии ПО.

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

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

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

Разработка ПО - это интенсивная умственная деятельность, и среда, в которой она проходит, должна способствовать мышлению.

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

Рекламный звон вокруг инструментов и методов ("дешевле, лучше быстрее", "новое лучше старого") - это чума индустрии ПО, а реальное увеличение производительности и качества - от 5% до 35%.

Изучение нового метода или средства сначала понижает производительность программистов и качество продукта (см. кривую обучения - learning curve).

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

"Оптимистичная оценка" является главной причиной нарушения сроков выполнения в 51% проектов.

Сначала требования, потом - оценка.

Можно ли оценить время и затраты на решение задачи, не имея о ней представления?

70% оценок делаются кем-то, кто связан с отделом по работе с пользователями, а 4% приходятся на проектную команду.

Оценки в проектах ПО желательно корректировать впоследствии.

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

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

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

Универсальные решения требуют в разы больше времени.

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

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

Если код ПО предстоит модифицировать на 20-25% или больше, то проще и дешевле начать всё заново и создать новый продукт.

Разработка ПО - это деятельность на 80% интеллектуальная и на 20% техническая.

Требования должны меняться в процессе.

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

Нужно применять анализаторы тестового покрытия.

За час можно сделать ревью примерно 100 строк кода.

Инспекции могут приводить к спорам, ухудшающим моральный дух команды.

Стоимость сопровождения - в среднем 60% стоимости ПО, из них 60% - на модернизацию.

Сопровождение более трудоёмко, чем разработка.

Жизненный цикл разработки: 20% - требования, 20% - проектирование, 20% - кодирование, 40% - устранение ошибок.

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

Качество ПО есть совокупность свойств:
1.Переносимость означает, что программный продукт можно без труда перенести на другую платформу;
2.Надёжность - это свойство программного продукта надлежащим образом выполнять свои функции;
3.Под эффективностью программного продукта понимают экономное расходование им времени и занимаемого места;
4.Принятие в расчёт человеческого фактора (что называют также словом "юзабилити") подразумевает, что с программным продуктом легко и удобно работать;
5.Тестируемость ПО есть свойство, характеризующее лёгкость его тестирования;
6.Понятность ПО - это свойство, характеризующее, насколько легко (или трудно) специалисту, сопровождающему программный продукт, понять его работу;
7.Модифицируемым называют ПО, изменение которого не вызывает трудностей.

Удовлетворение пользователя=выполнение требований + своевременная поставка + приемлемая стоимость + качественный продукт.

Эффекивность кода на ЯВУ, скомпилированного с оптимизацией, может достигать более 90% аналогичного ассемблерного кода (спор решён в 70-х).

Невозможно управлять тем, что невозможно измерить, - заблуждение.

В обучении программированию важно учить сначала читать код.