Mantis писал(а):Фолл, твое мнение по вопросу выше было б весьма познавательно услышать.
В сущности, с твоими пунктами не спорю. Можно еще расширить, скажем, за счет незнания определенных особенностей платформы, под которую пишет, пробелов в изучении определенной библиотеки. Хотя это всё можно отнести к образовательным моментам, то есть если взять три твои пункта и отбросить описание, то под это можно подогнать почти всё, просто нужно убрать "не способен удерживать в поле внимания все необходимые переменные и схемы".
Но есть еще пресловутый человеческий фактор. Классическая ошибка "не там запятую поставил" не обязательно следствие того, что человек отвлекся, или по природе невнимателен. Это может быть следствием переутомления, здесь может быть влияние внешних факторов, как то проблемы в личной жизни.
Есть еще класс ошибок, которые можно охарактеризовать "не подумал". Кстати, недавно в одном блоге как раз проскакивала тема борьбы с багами, там встретил одну забавную байку.
"Внесу свои 5 копеек (про программерские байки). В Израиле закупили новый военный самолет. Однако на испытаниях оказалось, что при полете над морем его бортовой компьютер все время перезагружается. Проверка показала, что причина в ... делении на ноль :) Дело в том, что Мертвое Море находится ниже уровня моря, и пролетая над его поверхностью, самолет пересекал нулевой уровень. Не учли программисты, что самолет может лететь ниже уровня моря :)"Здесь не культура программирования виновата, здесь нерабочие моменты не отвлекали (ну, может и отвлекали, но не в них дело). И вряд ли можно винить менеджмент.
Безусловно, баг - это всегда ошибка. Самая что ни на есть ошибка, и за неё всегда кто-то несет ответственность. Однако это часть рабочего процесса. Неприятная, но неотъемлемая. Когда заказчику отдается продукт с ошибками - это плохо. Когда тестеры получают продукт, находят ошибки, их потом исправляют, и все довольны - это естественно и ругать здесь некого. Я не говорю, что можно оставлять сколько угодно багов, а потом пусть тестеры их ищут, зря их держим, что ли. Хороший программист делает гораздо меньше ошибок, чем плохой. Но нет программиста, который не делает ошибок вообще. Совершать ошибки в человеческой природе. Не в программистской, а человеческой.
Я привел пример с писателем, где ты предпочел применить иронию. Однако ответь, способен ли человек написать объемный кусок текста совершенно без ошибок (как элементарных опечаток, так и логических несостыковок)? Если опечатку исправил он сам, это всё равно ошибка. И не в случае сферического писателя в вакууме, а на практике?
В определенном классе задач можно наладить процесс таким образом, чтобы на выходе гарантированно получать продукт без ошибок. Но это на выходе, а в процессе разработки ошибки всё равно будут совершаться.