За мухой с гранатомётом
— Мне срочно нужен молоток забить гвоздь в стену.
— Зачем тебе молоток? Давай я тебе сейчас супер-пупер-инструмент сделаю, которой может заколачивать гвозди, закручивать винты и шурупы, клепать, варить, паять, рисовать маслом пейзажи и танцевать лезгинку. Правда, уйдёт несколько месяцев, но зато у тебя потом будет универсальный инструмент.
Программисты-перфекционисты, охотящиеся за мухой с гранатомётом, узнали себя? Если мне нужно написать небольшой скрипт или quick&dirty-программу для мелкой локальной задачи в кратчайшие сроки, то не надо мне предлагать вместо велосипеда создавать вездеход-везделёт-вездеплав, у которого есть режим работы «велосипед». Во-первых, у меня на это нет времени (дедлайн на носу), во-вторых, мне не нужна универсальность и гибкость для программы-однодневки.
Нет, я понимаю, что универсализация вещь хорошая — но только тогда, когда она востребована. Если я точно знаю, что мне придётся «стопицот» раз выполнять похожие действия, я пишу класс, библиотеку или фреймворк (в зависимости от масштаба). В противном случае, а особенно если сроки поджимают, вы никакой аргументацией меня не убедите, так что не старайтесь зря. Может, я и не такой крутой программист, как вы (я далеко не профи и не отрицаю этого), но знаю, что цель далеко не всегда оправдывает средства.
Закончу, пожалуй, цитатой из Антуана де Сент-Экзюпери: «Идеал — это не когда нечего добавить, а когда нечего убрать». Отечественный вариант: «Отличное — враг хорошего».