Полезные высказывания из книги "Факты и заблуждения профессионального программирования" Гласса
Хороший менеджмент важнее хорошей технологии.
Те специалисты, которые действительно хороши в том, что они делают, и в то же время находятся на дне служебной иерархии, обладают возможностью, которой не имеет никто другой в этой пирамиде: их нельзя понизить в должности - в этой позиции скрыта большая сила.
Люди важнее, чем средства, методы и процесс.
Для пользователя важны высокие умственные способности и одержимость разработчика желанием заставить программу работать именно так, как она должна, - всё остальное вторично.
Лучшие программисты до 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-х).
Невозможно управлять тем, что невозможно измерить, - заблуждение.
В обучении программированию важно учить сначала читать код.
Те специалисты, которые действительно хороши в том, что они делают, и в то же время находятся на дне служебной иерархии, обладают возможностью, которой не имеет никто другой в этой пирамиде: их нельзя понизить в должности - в этой позиции скрыта большая сила.
Люди важнее, чем средства, методы и процесс.
Для пользователя важны высокие умственные способности и одержимость разработчика желанием заставить программу работать именно так, как она должна, - всё остальное вторично.
Лучшие программисты до 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-х).
Невозможно управлять тем, что невозможно измерить, - заблуждение.
В обучении программированию важно учить сначала читать код.