Программист-Костыль

Автор : Джоэл Спольски.

Оригинал .

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

Перевод ниже под катом.

Джейми Завински — это то, что я называю «программистом-костылем».

И я произношу эту фразу с изрядной долей уважения.

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

Те.

они знают, как создавать работоспособные продукты.

Это тот парень, который вам нужен, если ваша команда занимается сборкой велосипедов, потому что два его любимых инструмента — это костыли и ВД-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 #разработка веб-сайтов #программирование

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.