Автор : Джоэл Спольски.
Оригинал .
Статья посвящена оверинжинирингу и тем, кто предпочитает старые решения-костыли только потому, что они очень просты.
Перевод ниже под катом.
Джейми Завински — это то, что я называю «программистом-костылем».
И я произношу эту фразу с изрядной долей уважения.
Он из тех программистов, которые упорно трудятся, чтобы создавать будущее и разрабатывать всевозможные полезные вещи.
Те.
они знают, как создавать работоспособные продукты.
Это тот парень, который вам нужен, если ваша команда занимается сборкой велосипедов, потому что два его любимых инструмента — это костыли и ВД-40 .
И он изящно ими управляет, даже когда ваш мотоцикл мчится с холма со скоростью миля в минуту.
Между тем, другие программисты все еще застревают на старте, споря, что лучше: титан или уникальный композитный материал космической эры, который Boeing использовал в своем 787. Когда вы закончите, у вас получится неряшливый велосипед, но вы можете быть абсолютно уверены, что он полетит. Я только что прочитал интервью Джейми в книге.
Программисты за работой Питер Сейбел.
Это колоссальная коллекция интервью с великими программистами, включая Питера Норвига, Гая Стила и Дональда Кнута.
Книга настолько интересная, что вчера я провела на диване целых 60 минут вместо обычных 30, потому что.
я просто читала и не могла остановиться.
Как я уже сказал, идите и прочитайте.
Вперед! Я жду.
Примечание.
Перевод: Программисты за работой - сборник интервью.
На этот же список вопросов отвечают известные программисты.
Одно интервью – одна глава.
Всего 15 глав.
Вот почему я люблю программистов-костылей.
А теперь представьте: вы работаете в команде.
Вы чрезвычайно заняты, лихорадочно записывая код. А потом кто-то подходит к вашему столу с кружкой кофе в руке и начинает болтать, что вы можете сделать свое приложение круче на целых 34%, если будете использовать многопоточные модули COM. И это даже не так уж и сложно, так как он создал кучу шаблонов, и все, что вам нужно сделать, это использовать множественное наследование, наследующее всего лишь от 17 шаблонов, каждый из которых принимает в среднем четыре аргумента, а затем все, что вам нужно сделать, это напишите тело функции.
Вам покажут просто гигантский список множественного наследования кучи классов и, кхм, многопоточных подразделений COM. И твое сознание уплывает, и ты перестаешь понимать, о чем, черт возьми, говорит этот парень.
Но он просто не хочет уходить, а даже если и уйдет, то только для того, чтобы вернуться в свой офис и написать еще более умные классы, полностью основанные на множественном наследовании, без единой реализации.
И когда вся конструкция с треском рушится, это ты посреди ночи тебя попросят прийти и разобраться, потому что Он уже будет на какой-нибудь чертовой конференции по шаблонам проектирования.
И программист-костыль не боится сказать: «Множественное наследование — отстой.
Выброси это.
Просто выбросьте это».
Как видите, все остальные слишком боятся выглядеть идиотами, признавая, что они просто не могут одновременно удерживать в голове достаточно фактов, чтобы сделать множественное наследование, или шаблоны, или многопоточность, или COM, или что-то из этого.
работа.
Поэтому они боязливо соглашаются на любое модное программное безумие.
Архитектурные астронавты которые выступают на конференциях, пишут статьи и книги и настолько продвинуты, чем мы, что даже не осознают, что продвигаемые ими штуковины слишком сложны для нас.
Вот что Завински говорит о Netscape: «Что позволило нам выпустить продукт вовремя, так это такие решения, как отказ от использования C++ и многопоточности».
Позже он написал почтовый клиент для Netscape, но команда, ответственная за отображение сообщений на экране, так и не выпустила свой компонент. «Они хотели создать большой пустой прямоугольник в центре окна, где мы могли бы просто отображать текст. Но они подошли к проекту слишком теоретически, пытаясь посмотреть на вещи со стороны DOM/DTD. «Хм, ну… нам просто нужно ввести дополнительный уровень абстракции, и делегировать делегату, и тогда символ наконец-то появится на экране».
«Похоже, что чрезмерная инженерия вас действительно раздражает», — заметил Питер.
«Да», — ответил Завинский.
«В конце концов, просто выпустите этот чертов продукт!» Конечно, переписать код, чтобы он стал чище — это круто, и с третьего раза он действительно станет похорошеть.
Но это не цель.
Вы здесь не для того, чтобы писать код, а для того, чтобы выпускать продукты! Мой герой.
Завински не утруждает себя кучей модульных тестов.
Они «выглядят великолепно… в теории.
Если вы выбрали неторопливый темп развития – это ваш путь.
Но глядя на «должно быть полностью создано с нуля за шесть недель», ну… я понимаю, что это нереально без какого-то ярлыка.
И я собираюсь выбросить то, что не слишком важно.
А юнит-тесты не критичны.
Если их нет, пользователю даже в голову не придет жаловаться на их отсутствие».
Прежде чем возмутиться, вспомните, что Завински работал в Netscape, когда они меняли мир.
Они думали, что у них осталось всего несколько месяцев, прежде чем кто-то другой заберет торт. В этом стиле написано много важного кода.
Программисты Crotch — прагматики.
Завинский популяризировал учение Ричарда Габриэля».
Чем хуже, тем лучше «Идеальное на 50% решение, которое уже есть у людей, решит больше проблем и прослужит дольше, чем идеальное на 99% решение, которого нет ни у кого больше, потому что оно валяется в вашей лаборатории, где вы бесконечно полируете эту чертову штуку.
Релиз — это функция.
действительно важная функция.
Ваш продукт должен иметь ее.
Принцип, который хорошо известен каждому программисту-костылю: любая технология кодирования, которая хоть немного усложнится, похоронит ваш проект. Сумасшедшие программисты склонны избегать C++, шаблонов, множественного наследования, многопоточности, COM, CORBA и множества других технологий, использование которых кажется оправданным, если много и долго над этим думать, но которые немного сложны для человеческого мозга.
Конечно, технически нет ничего плохого в попытке написать многопоточный код на C++ в Windows с использованием COM. Но это каша с катастрофическими багами, многие виды которых возникают только в определенное время.
с x сценариев, а все потому, что наш мозг действительно не очень хорошо умеет работать с таким кодом.
Посредственные программисты занимают оборонительную позицию, не желая признавать, что они не способны писать столь сложный код. И они позволяют хвастунам из своей команды пахать над проектом с мрачной шаблонной архитектурой C++, потому что в противном случае им придется признать, что они недостаточно продвинуты, чтобы использовать то, что сам Спок считал идеальной техникой программирования.
Программистам Crotch плевать, что вы о них думаете.
Они являются сторонниками простых и удобных в использовании инструментов, которые высвобождают дополнительные умственные способности для создания новых функций для пользователей.
Но есть одна загвоздка, которую стоит отметить: программисты-костыли — это ИТ-эквивалент хороших парней.
Да, те восхитительные на вид модники, которые могут выйти из дома неопрятными, с нечищенными зубами, во вчерашней грязной одежде – и при этом выглядеть блестяще по самой своей природе.
Тебе, дружище, нельзя появляться на публике с растрепанными волосами, иначе ты распугаешь всю округу.
Потому что ты нехороший парень.
У программистов-костылей достаточно таланта, чтобы справиться со всей этой ерундой.
Они достаточно хороши, чтобы выпустить продукт, и мы бы простили им, если бы они не написали модульные тесты или даже не испортили указатели «Предыдущий» и «Следующий» в связанном списке, чтобы освободить дополнительные 32 бита памяти.
.
Потому что они достаточно хороши, чтобы справиться с этим.
Дополнительные материалы по теме:
Оверинжиниринг в Java (фабрика фабрик фабрик классов) Позор математику.(отличное примечание Дмитрия Долгова) Теги: #джоэл спольски #разработка #overengineering #разработка веб-сайтов #программирование
-
Nintendo Ds Lite: Новая Игровая Консоль
19 Oct, 24 -
Присциан
19 Oct, 24 -
Рефакторинг Стиля Ниндзя И Другие Хитрости
19 Oct, 24 -
Распределяем Нагрузку В Зависимости От Url
19 Oct, 24 -
Чат-Бот На Нейронных Сетях
19 Oct, 24