LINUX.ORG.RU
ФорумTalks

Ну давайте подискассим малость о программистах, что ли, раз тут тренд такой


0

1

Вот есть у нас кодер, программист, и лисповый программист. Дают им всем по задаче.

Кодер, значит, начинает пить растворимый кофе и вкалывать как ненормальный, по 10К строк в день, оно свистит, пердит, не работает, он злится, выкидывает все, ищет сниппеты, вставляет их, пьет таблетки от изжоги, потом снова вкалывает, потом снова растворимый кофе, потом все повторяется — пока не рождается в муках что-то больное, похожее на конечный заказ. Тогда кодер берет кувалду и начинает монстра этого новорожденного рихтовать со страшной силой в рандомных местах, до тех пор, пока монстр не согласится работать хотя бы приблизительно так, как от него хотели.

Приходит заказчик, морщит нос, дает эквивалент миски риса кодеру, чтобы тот мог заесть свой растворимый кофе, и идет с покалеченным творением больного разума к программисту. Занавес.

Лисповый, значит, программист, получив задание, не садится сразу же писать его реализацию. Он пишет DSL (подмножество лиспа, конечно же), на котором формулирует задачу, после чего пишет компилятор из этого DSL в другой DSL (тоже подмножество лиспа), потом из этого DSL еще во что-то, и так немного рекурсирует с нарастающей сложностью, по дороге находит пару решений не относящихся к делу, но интригующих NP-сложных задачек, участвует с этим арсеналом в ICFP'XX, не побеждает (потому что его лавры забирают питонисты и какой-то косоглазый сиплюсплюсник), тем временем его компиляторы в поте лица компилируют сформулированную им в начале этого предложения задачу. И вот, когда заказчик в очередной раз вопросительно подымает бровь, демонстрирует ему плод больших трудов — безупречную реализацию компилятора лиспообразного языка, в который вся задача в конце концов повыскомпилировалась.

Заказчик подымает вторую бровь, превращается в половой орган и идет стреляться, а лисповый программист пакует себе все наработки, выступает с историей успеха на очередной конференции, и у него появляется новый заказчик, впечатленный рассказом. Занавес.

Просто, значит, программист. Получает от заказчика изуродованный кувалдой монстр кодера, присвистывает, превращается в половой орган, забодяживает крепкий эфиопский кофе, заменяет сотни строк на одиночные вызовы библиотечных функций, о которых кодеру было некогда прочесть, после чего, почесав затылок, вымарывает половину кода как никогда не вызывающуюся, после чего из кода начинает проглядываться какой-то более-менее понимаемый замысел.

Программист вызывает заказчика на задушевный разговор, после чего, уяснив, чего тот на самом деле с самого начала хотел, берет несколько готовых тулзовин, в принципе делающих то, чего там заказчик хотел, пишет две программульки для заказчикоспецифичных хотелок, к этому всему простой фронтэнд на питоне с большой красной кнопкой «Сделать зашибись».

Занавес.

★★★★★

Последнее исправление: shimon (всего исправлений: 1)

А для чего собственно «подискассим»? Выяснить какой подход правильней? В данном случае, очевидно, тот за который клиент заплатил и на который потрачено меньше усилий.

RADO
()
Ответ на: комментарий от Sylvia

:D Это да...

Хотя, если сравнить с тем, что было нужно заказчику, то выходит проект небезнадёжен. Но то как клиент заплатил вполне может привести его к варианту повесится :)

RADO
()
Ответ на: комментарий от RADO

проект небезнадежен, хотя бы потому что в команде работает по-настоящему одаренный человек, который и смог представить проект так, что клиент заплатил за него такую сумму. Это бизнес-консультант,
если бы не он - остальные бы давно пролетели :)

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Да. Действительно талант - проект выглядит даже лучше чем то, что клиент хотел и то, что ему было нужно :)

RADO
()
Ответ на: комментарий от thesis

>Чтобы программист ограничился такой кнопкой, над ним должен стоять прожект-манагер
Что проджект-менеджерствуешь ?
:)
PM должен спросить о сроках, процентах реализации и уйти к другой команде.

grim ★★☆☆
()

У нас в конторе один программист, который умеет почти все языки. А если какой не умеет, то всё равно говорит что умеет, потому что если надо, то прям завтра он будет его уметь. И все ему доверяют в этом, потому что он не раз это подтверждал. Описанная компания же мягко говоря странная. У вас все заказчики проходят такой круг мытарств и все в конце похожи на половые органы? :)

trueshell ★★★★★
()

Камеди клаб на моем лоре?

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от robux

>Мораль проглядывает такая:

Но в одной строке шелл-скрипта гораздо больше Природы UNIX чем в десяти тысячах строк C (с) Мастер Фу

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от shimon

> тебе никогда не сваливали в одну кучу очень приблизительно работающего хитросплетенного кода о ~3M строчек с просьбой «ну ты разберись, поправь...»?

Ну, если такое случается слишком часто — пора менять работу, ибо горбатого известно что исправит, да и чудес типа было все ужасно, а мы все переписали (с теми же программистами) нечисто и все стало отлично тоже не бывает. А чтоб прям всю команду гореархитекторов увольняли и другую нанимали в рамках одной фирмы — тоже, потому просто нужно искать работу, где максимальное количество умных людей.

kost-bebix ★★
()
Ответ на: комментарий от kost-bebix

> Ну, если такое случается слишком часто — пора менять работу, ибо горбатого известно что исправит, да и чудес типа было все ужасно, а мы все переписали (с теми же программистами) нечисто и все стало отлично тоже не бывает.

Консультантом никогда не работал?

shimon ★★★★★
() автор топика

Весьма жизненно, хоть и несколько многословно и с претензией на беллетристичность.

Мне приходилось неоднократно сталкиваться со всеми вышеозначенными категориями. От себя добавлю, что рассмотренные здесь «быдлокодер» и «лиспер» на самом деле суть предельные случаи одного и того же синдрома, назовем его, в традициях топикстартера, «фаллопатией» (от греч. πάθος - страдание). Только в первом случае синдром помножен на невежество, неопытность и лень, а во втором - на витание в облаках, упоение собственным элитизмом, отрывом от практики и подменой результата процессом.

Я знавал одного такого типа. Ему поставили задачу: прикрутить к системе нотификацию по e-mail. (Hint: заюзать библиотечный компонент, сформировать тело письма и отправить его одним вызовом.) Тип пропал на две недели, после чего объявился с мешками под красными глазами, и коммитнул нехилую кучку кода. Заказчик ознакомился, окончательно фалломорфировал, схватился руками за голову и возопил: «но зачем, Христа ради, зачем ты реализовал SMTP-клиент?!!» - на что был получен невозмутимый ответ: «Зато теперь у меня есть полный контроль над SMTP-сессией».

Kuka ★★
()
Ответ на: комментарий от Kuka

Добавлю также, что по части напитков (и многого другого) сей народец нетребователен и всеяден, и вряд ли отличит, что у него налито в чашку: растворимая ли бодяга типа нескафе, краснодарский чифир или элитный типсовый зеленый чай первого сбора. (Алкоголь, правда, употребляет крайне редко.) Часто разводит в чашке бактериологические или грибково-плесневые культуры. Питается нерегулярно и подножным кормом. Изредка спит.

В самом деле, разве настоящего джедая могут волновать такие несущественные мелочи как синтаксис языка, время и место сна или состав еды? :)

Kuka ★★
()
Ответ на: комментарий от DNA_Seq

Кстати меня эта история заинтересовала тем, сколько строчек кода на C написано для того, что бы заработала эта одна строка на shell?

sin_a ★★★★★
()
Ответ на: комментарий от Kuka

> Я знавал одного такого типа. Ему поставили задачу: прикрутить к системе нотификацию по e-mail. (Hint: заюзать библиотечный компонент, сформировать тело письма и отправить его одним вызовом.) Тип пропал на две недели, после чего объявился с мешками под красными глазами, и коммитнул нехилую кучку кода. Заказчик ознакомился, окончательно фалломорфировал, схватился руками за голову и возопил: «но зачем, Христа ради, зачем ты реализовал SMTP-клиент?!!» - на что был получен невозмутимый ответ: «Зато теперь у меня есть полный контроль над SMTP-сессией».

Да ладно. Он хотя бы сделал ТО, что надо, хотя и НЕ ТАК, как надо было...

shimon ★★★★★
() автор топика
Ответ на: комментарий от DNA_Seq

Одна из главных заповедей программиста - не повторяй уже ранее сделанное

Иногда правильнее написать свой маленький велосипед с квадратными колесами, чем тащить в проект кучу зависимостей.

Nagwal ★★★★
()
Ответ на: комментарий от Nagwal

Ну это от ситуации зависит. Для массового софта - безусловно. А вот скажем для софта научного/околонаучного/корпоративного когда количество пользователей сравнительно невелико время программиста относительно гораздо дороже

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от DNA_Seq

Ну это от ситуации зависит.

Да понятно что зависит. Просто ингда смотришь на какой-нибудь корпоративный проект, тащащий метров 150 библиотек в качестве зависимостей (и от большинства из них дай бог 5% функционала в проекте юзается) и хочется кого-нибудь убить.

Nagwal ★★★★
()
Ответ на: комментарий от Nagwal

Если этим проектом пользуются меньше 100 человек то в чем проблема? Да пусть тысяча. Проапгрейдить компы все равно будет дешевле чем переписывать. Именно в таких областях юникс классический и силен, а за остальным - к винде.

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от DNA_Seq

Если этим проектом пользуются меньше 100 человек то в чем проблема? Да пусть тысяча

Проблема в поддержке и модификации этого кода. Гораздо проще посмотреть что делается с помощью 10 строк исходника, чем лезть в инет, смотреть что за библиотека, гуглить на нее доку итд. А уж если баг в библиотеке...

Nagwal ★★★★
()
Ответ на: комментарий от DNA_Seq

>Одна из главных заповедей программиста - не повторяй уже ранее сделанное, если не уверен, что сделаешь лучше

фикс

isako ★★★
()
Ответ на: комментарий от isako

хах, это прогресс ващета, иначе сидели бы все сейчас на /360 и радовались

Скорее белый шум, необходимый для эволюционного развития.

Nagwal ★★★★
()
Ответ на: комментарий от isako

Не всегда. Иногда и довольно часто имеют место и регрессы. Тем более приспособление ведется обычно под уже имевшиеся ранее условия так что если условия постоянно меняются то всегда текущая ситуация будет далека от оптимальной.

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от DNA_Seq

Эволюционное развитие имеет место там где невозможно разумное планирование

Разумное планирование имеет один недостаток. Оно не позволяет сделать что-то _принципиально новое_.

Nagwal ★★★★
()
Ответ на: комментарий от Nagwal

4.2 вообще-то. Эволюция новые решения изобретает тоже крайне редко, в основном довольствуясь перекомбинированием и подстройкой параметров.

Вот скажи, тот же Сикорский или Архимед ничего принципиально нового не придумали?

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от Nagwal

Ты кажется путаешь понятия. Разумный дизайн это когда сначала думаешь - потом делаешь, эволюция это когда сначала делаешь - потом думаешь. Если перед тем как приняться за работу не изучил работы предшественников то ты не думал прежде чем начать делать.

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от DNA_Seq

Разумный дизайн это когда сначала думаешь - потом делаешь, эволюция это когда сначала делаешь - потом думаешь. Если перед тем как приняться за работу не изучил работы предшественников то ты не думал прежде чем начать делать.

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

И если мы говорим о разработке ПО, то это называется proof of concept. Который в приличных местах выбрасывается нафиг, после чего начинает делаться сам продукт, учитывающий те косяки, которые получены.

Nagwal ★★★★
()
Ответ на: комментарий от Nagwal

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

Блажен кто верует, тепло ему на свете. Очень часто бывает что задача решена в смежных областях. Классическая же теория эволюции не допускает «горизонтального переноса», только дерево

после чего начинает делаться сам продукт, учитывающий те косяки, которые получены.


А вот это уже эволюция

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от DNA_Seq

Очень часто бывает что задача решена в смежных областях

Бывает. Но кто даст гарантии что решение из смежной области хорошо ляжет на область текущую.

Nagwal ★★★★
()
Ответ на: комментарий от RADO

Ну так всегда существует альтернатива созданию кучи говна из первоначальных 10-ти строчек - не создавать из них кучу говна ;)

Nagwal ★★★★
()

Весьма занятно по форме и по содержанию. Пиши ещё.

Xenesz ★★★★
()
Ответ на: комментарий от Nagwal

Согласен. Жаль только не все об этом знают :)

RADO
()
Ответ на: комментарий от shimon

> Консультантом никогда не работал?

не, не работал

А тебе никогда не сваливали в одну кучу очень приблизительно работающего хитросплетенного кода о ~3M строчек с просьбой «ну ты разберись, поправь...»?


как-то это печально. Если это аля «код ревью» — то в таких случаях надо несколько первых лаж находить и говорить «переделай так», и так потихоньку) А что за консультант, которому кидают ~3M кода и говорят поправь — никогда не видел, но интересно.

kost-bebix ★★
()
Ответ на: комментарий от kost-bebix

> как-то это печально. Если это аля «код ревью» — то в таких случаях надо несколько первых лаж находить и говорить «переделай так», и так потихоньку) А что за консультант, которому кидают ~3M кода и говорят поправь — никогда не видел, но интересно.

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

Но трехзначные суммы на халяву бывают редко — платят столько, чтобы после того, что голодные индусы наклепали всей шоблой, оно и заработало, и дало заказчику заработать.

shimon ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.