Как стать автором
Обновить

Комментарии 172

С утверждением про пытливость ума согласен, но при чем тут "чтобы пацанам не стыдно показать"?
Показать что? Пытливый ум? Процесс поиска?

Показать всё — и процесс, и результат. Как противопоставление любому варианту «и так сойдёт».
Это своего рода цель для пытливости ума — знать, что тебе не стыдно показать, что ты не вполсилы работал, не «лишь бы заработало», не «лишь бы отстали».

Кхм, а бизнесу это точно надо?

О, "пиши код, б**ть"-и пожаловали...


Каждая сделанная "на отвали" правка закапывает бизнес в долги (если только цель этого бизнеса не выпустить одноразовое по). Вам так никогда не казалось?

Ну почему сразу "на отвали"?
В бизнесе множество градаций, разные задачи и разные решения.


Давать полгода на написание нового метода сортировки — это уже не бизнес, а благотворительность.

Поясню на сравнении:


1) делаешь продукт, отдаешь заказчику, он рад. Через время возвращается с хотелками. Ты что-то прикостыливаешь, отдаешь. Он снова рад (может быть). Далее ещё несколько итераций, но с каждым заходом тебе все тяжелее и затрат все больше, а выручка все меньше. В итоге, ты бросаешь этого клиента.


2) все так же, но ты в каждой итерации "делаешь хорошо". И с каждой итерацией тебе выходит делать проще и меньше. Заказчик платит столько же, сколько и в п.1, но выручка твоя гораздо больше, фрустраций твоих — меньше. И "пацанам не стыдно показать".

все так же, но ты в каждой итерации «делаешь хорошо»

… на второй-третьей итерации заказчик отваливается со словами «я вам за фичи платил, а не за рефакторинг». Или «а тут другие сделали лучше, а вы чёт долго возитесь».

И с каждой итерацией тебе выходит делать проще и меньше.

Э нет. Как максимум с каждой итерацией у тебя не добавляется время на разгребание прошлых костылей, однако само по себе «сделать хорошо» как правило занимает больше времени, чем добавление костыля, пока этих костылей не накопилась критическая масса.
… на второй-третьей итерации заказчик отваливается со словами «я вам за фичи платил, а не за рефакторинг». Или «а тут другие сделали лучше, а вы чёт долго возитесь».

А мы ему говорим в таких случаях — «дешевое — дорого, дорогое и долгое — дешево».
А мы ему говорим в таких случаях — «дешевое — дорого, дорогое и долгое — дешево».

А свобода — это рабство, да?

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

Просто надо быть готовым к тому что заказчик всё равно скажет: делайте дешёво :)


P.S. Более того некоторые при этом даже вполне себе понимают что они делают и чем это может быть чревато. Хотя большинство конечно только думают что понимают.

Бывают не только плохие, негодные заказчики

Да я вроде бы и не говорил что такие заказчики обязательно являются плохими. Это их деньги и их риски. Если ему объяснили чем это чревато и он готов рискнуть, то хозяин-барин.

Слово «плохие» тут, конечно, субъективно, но я бы его применил тут в полной мере. Даже если он понимает что делает плохо, работать на него и делать плохо не хочется

В том то и дело что это не всегда означает "делать плохо". Вот у нас недавно был случай когда заказчику нужно было временное решение для тестирование его какой-то внутренней ерунды, которое отработает 2-3 месяца, а потом его 100% заменят другоим решением на другой технологии. И ему ни документацию не надо, ни возможность что-то добавлять. Ему нужно чем быстреетем лучше и даже можно с багами. И где он неправ?

>> а потом его 100% заменят другоим решением на другой технологии

Ага, знаем эти сказки…
Мир — это война!

а дорогое и долгое всё ещё будет актуальным к моменту завершения?

… на второй-третьей итерации заказчик отваливается со словами «я вам за фичи платил, а не за рефакторинг». Или «а тут другие сделали лучше, а вы чёт долго возитесь».
Да, может и так быть. Но вам не будет стыдно перед людьми, которые будут после вас работать. Даже, если они всё испортят. Но это их история.

Делай что должен, и будь что будет.
Да, может и так быть. Но вам не будет стыдно перед людьми, которые будут после вас работать. Даже, если они всё испортят. Но это их история.

— Папа, что мы будем сегодня кушать?
— Ничего, зато мне не стыдно за свои действия.
Посмотрим, что я заговорю, когда мне действительно будет нечем кормить своих детей. А сейчас я действительно так думаю :)
Я в общем-то не о том, что нужно всегда и несмотря ни на что бежать за деньгами; а о том, что если систематически не бежать за деньгами, то рано или поздно можно попасть в ситуацию, когда кушать таки нечего.

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

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


А вообще везде надо искать золотую середину — реальность такова, что всегда делать "очень хорошо" просто невозможно.

И? Ситуация на рынке такая, что такие заказчики меня не волнуют. Достаточно и других.

Да, но при втором подходе необходимо документацию не писать)

Какие далекоидушие выводы, я в восторге.


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


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


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


Если я вам наступил на больную мозоль — искренне раскаиваюсь и впредь обещаю так больше не делать могу предложить огнетушитель для тушения тлеющего стула.

> команда меняется целиком

имхо, это худшее, что может случиться с продуктом. искренне недоумеваю, зачем доводить до этого?

> для тушения тлеющего стула

не переживайте за мебель, я давно асбест подкладываю! жгите еще! :-D

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

А я собственными глазами видел команду, работающую над проектом 15 лет. И именно потому, что времени на рефакторинг не выделялось.

НЛО прилетело и опубликовало эту надпись здесь
То желание, а то необходимость

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

Только порой бывает, сколько бизнесу про это не рассказывай — он никак понять не может)
Ну конкретно по моему опыту так очень хорошо себя зарекомендовал такой подход, как:

1. Получаем бизнес требования
2. Проводим первичную разработку занимая технический долг при необходимости, попутно собирая требования к будущей архитектуре
3. Проводим рефакторинг

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

Если пацаны в курсе шага 3, то норм)

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

Talk is cheap. Show me the code.
©Linus Benedict Torvalds
Блин! Красивое решение «здесь и сейчас» ( и даже предмет гордости) может выглядеть абсолютным уродством «там и завтра». Что и когда показывать пацанам? И как долго показывать? Для того чтобы пацаны заценили, они должны быть в курсе обстоятельств появления решения.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Без денег, что характерно, тоже

Ерунда. В мире вокруг полно́ примеров людей, самореализовавшихся и вполне состоятельных в личностном плане, живущих на грани нищеты (ну, Перельман, чтобы далеко за примерами не ходить).


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

НЛО прилетело и опубликовало эту надпись здесь
Плюс поставить прав не хватает, поэтому поддержу словами.
«Пытливый ум» это хорошо примерно как сытый конь в сферическом вакууме: взрослые люди любят говорить на презентациях «МЫ делаем Мир лучше», однако только одарёные дополнительными хромосомами не понимают что это лож. Современный Мир это лож.
Всем мы (ну минимум 98% из нас) каждый день ходим на работу не ради крутых алгоритмов и классных приложений, а ради ДЕНЕГ, чтобы не сдохнуть от холода/голода/дерессии и т.д.
И нет ничего хуже, чем ковыряться в чужом поносе коде, пытаясь понять «чойта оно не делает то что в документации обещано»… Система общественного образования натаскивает нашего брата на самопожертвования, и материальные (своё время), и моральные (подстраиваться под обстоятельства: учителя в школе, препода в вузе, тимлида на работе, разрабов фреймворка, который тимлид однажды, прокалив собственный пукан, раскурил и теперь, идя на поводу у психологической защиты, иконизирует как «отличный инструмент, который НАДО уметь использовать и использовать»)… это грязное рабство, интеллектуальное рабство: мы считаем себя «достойными» именно этого, а не чего-то другого… мы привыкаем что если во рту нет привкуса д*рьма пота и крови, то значит мы плохо себя реализуем, занимаемся «ненастоящей» работой… и слепо верим что однажды, наконец-то, доберёмся до вершины это гранитной горы мастерства аутофелляции использования «крутого» инструмента и заживём лучше всех. Мысль о том что есть жизнь и без страданий, прямо здесь и сейчас, надо только шаг в торону сделать — нас не посещает, на неё табу.
А всё почему? Потому что деньги у тупых недалёких людей, которые платят за «здесь и сейчас, да так же как у всех», а не за элегантные и эффективные решения (в том числе будущих) задач.
Психологи говорят, что если работа вас угнетает — надо с неё уходить. А куда? Проблема-то не в отдельно взятых людях, а сложившимся обществе — обществе, которое выросло в гонке за звёздами, плевать что там под ногами/позади/вокруг — азарт он таков, отключает критическое мышление. Каждый хочешь жить быть владельцем IBM/Apple/MS. Каждый живёт только ради себя, никого не волнуют остальные… и колесо сансары (в философском смысле, а не религиозном) в его узкую точку зрения просто не помещается.
Сорян за лирику — накипело, но суть, надеюсь, сможете уловить.
Добра всем.
Можно заменить на «делай на совесть или не делай совсем».
Репу на гитхабе, например.

Одним "пацанам" не стыдно показать как раз красивый код, который легко читать.
Конечно, если "пацаны" правильные.
Есть и другая категория "пацанов" — им нужны какие-то трюки, магия, необязательно даже рабочая.
А есть третьи "пацаны", котроры хотят/требуют, чтобы работало и даже в код не смотрят.
Короче, много "пацанов", всем не угодить.

Вот про это и статья: надо писать такой код, который может угодить всем пацанам. И это возможно.
Э нее, с трюками пожалуйста в пет-проджект. Мы все любим показать, какие мы умные, но сложность промышленного кода должна определяться сложностью решаемой задачи а не вот этим «смотрите как я могу (сэкономить два такта, два байта, две строчки — это уж на вкус и цвет)»
Паца́н — жаргонизм, обозначающий мальчика или молодого мужчину «с ярко выраженной сниженной окраской». Слово также характеризуется как стилистически нейтральное просторечие и может обозначать рядового члена организованной преступной группы.
Этимология: М. Т. Дьячок и И. Г. Добродомов предлагают вывод из «поц» (половой член на идише, в переносном смысле «глупец»). В Этимологическом словаре русского языка Макса Фасмера слово выводится из южнорусского «пацюк» (поросёнок, крыса).

Так о каких «пацанах» речь, уважаемый программист?

Думаю, лучше всего оценят усилия пацаны беспристрастные, то есть на gitHub.

А вот если можешь задачу решить чисто на интуиции, методом тыка, раза с третьего — это как, стыдно?
А вы покажите, и понятно станет. Это ж процесс с обратной связью.
Что показать? Код? Ну покажу, а толку то, если я объяснить не смогу, почему я именно такой код написал и что до этого совершенно дурацкие гипотезы случайным образом проверял?
Блин, Геннадий, чего вы как маленький? Как вы узнаете мнение людей, пока не спросите его?
В этом и смысл. Все боятся показать, что делают, потому что… Ну вот всё, что вы перечислили. Так рождается, развивается и самооправдывается говнокод.
При чём тут «говнокод»? Я про то, что не смогу объяснить, как и почему пришел к этому коду, чтобы свой опыт передать кому-либо другому. А так, я к ревизии кода спокойно отношусь, очень полезный со всех точек зрения процесс…
Не сможете, пока не попробуете. Знаете же такой метод: хочешь что-то понять — попробуй объяснить это другому.
И даже если попробую, не смогу. Что это за объяснение -«пробую любые, даже самые дурацкие, варианты — авось, что-то и сработает»? Это же чисто интуиция, как это кому-то объяснить?
Ну, я тоже на интуиции многое делаю. А когда надо объяснить — оказывается, что всё вполне логично. Просто самому себе-то нет необходимости объяснять, потому и кажется, что объяснения нет.
Ну, вот у тебя вполне логично, а у меня вполне себе объяснением может быть — «когда-то прочитал коммент к статье на хабре, нихрена не понял, но это стало основой дурацкого, но почему-то работающего варианта.»
Я такое называю «наследие богов» — коробка с магией, внутрь лучше не лезть, есть риск сломать.
Разумеется это актуально только при случае «все работает стабильно месяцами-годами».

P.S. Однажды на своем опыте даже залез в именно такой код, что писал сам же (только года три назад) и абсолютно не мог понять «почему сделано так топорно-криво».
Залез случайно, нужды не было. И «починил»… сломав конечно же работу итоговую, хотя общий смысл кода был идентичен, еще и стал куда понятнее.
Короче, предпочитаю не трогать «наследие богов».

Как это вообще возможно? Ну, я имею ввиду программировать с уровнем понимания "хз как, но работает"? Прямо какая-то невероятная отвага нужна, чтобы такой код в продакшн отправить.

Ну так работает же? У меня бывает, прямо таки магия какая-то. Хотел бы я объяснить, как. ¯_(ツ)_/¯

Не страшно? Я не знаю что именно вы там пишете, но представив себе, что моё приложение для онлайн-банкинга или софт для робомобилей разрабатывают так, мне становится немного не по себе

Нормально, когда есть отлаженные процессы тестирования и ревью.)

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


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

У меня как-то на проекте с кучей легаси и неявных взаимосвязей было. В дрожь бросает как вспомню.
Да, как раз на таких проектах, особенно где состав команд несколько раз сменился, и у всех разный стиль, и свои архитектурные подходы.
Совершенно с вами согласен. Когда ко мне подходят с такими вопросами, типа «непонятно, как вот это работает, не может быть, это магия», то начинаю с отрезвляющего «магических чисел не существует». Потом раскапываю, и объясняю, как работает, или почему не работает. Иногда на пальцах. Иногда приходится.
Тут больше не в коде вопрос, а в том, как получилось выйти на работающее решение проблемы. Не всегда это можно объяснить логически.

Некоторые вещи и я могу делать "наугад". Например просто от балды угадать значение флага, или просто угадать со значением параметра. Однако я не помню ни раза, чтобы после того, как всё заработало/перестало работать, я не задался вопросом "а почему так?". Если заработал код который мне доступен я его изучаю, если это сторонняя либа, я читаю документацию до посинения и если не нахожу ответ, пишу баг-репорт.


Не представляю как можно оставить после себя код который работает "как-то".


Единственный вариант "хз как так вышло", который мне понятен — это случай, когда тебя спрашивают "как ты сделал такое круто API", а ты хз что ответить. Херачил на коленке и просто повезло угадать будущие изменения. Однако это обычно просто сказывается опыт.

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

В таком случае да, стыдно. Рандомнокодинг редко бывает качественным, но видно это, зачастую, уже позже.

> А вот если можешь задачу решить чисто на интуиции, методом тыка, раза с третьего — это как, стыдно?

Конечно. Нужно и самому понимать сделанное, и чтоб другим оно понятно было.
Слава богу, я такими комплексами не страдаю.
Вам не кажется, что эта конструкция не везде должна работать? Если речь идёт о заказном проекте, то цель — не сделать лучший в мире продукт, а сделать с минимумом затрат то, что удовлетворяет требованиям заказчика. И если на определённом этапе, когда некую задачку можно решить quick & dirty, программист будет делать «чтобы пацанам было не стыдно показать”, в ущерб срокам, то вряд ли это правильный подход. И потом, зачем нужно ориентироваться на мнение неких сторонних пацанов, когда есть своё собственное мнение? И со временем всё меняется. Очень многие состоявшиеся разработчики сегодня не могут без слёз смотреть на свой код 10-летней давности. «Перед пацанами» вроде как должно быть стыдно. Но этот кривой код 10 лет назад позволил запустить стартап или решить сложную задачку в сжатые сроки и спасти репутацию заказчика. «Пацаны» могут курить в сторонке, если я сам знаю, что и зачем я делаю. Разве нет?
Тут надо уметь балансировать, вы же понимаете — нет белого и черного. Проблемы начинаются там, где делается ставка на что-то одно.
А дальше развивается синергия. Если постоянно тренируешься делать так, чтобы пацанам было не стыдно показать, то постепенно это входит в привычку, и продуктово/менеджерская часть работы программиста тоже выходит на высокий уровень.

Ой, как это называется, когда сказать нечего, и начинаешь говорить много и бессмысленно и умными словами?))) Слово забыл.

Демагогия наверное
А знаете, «пацаны» поймут и quick & dirty решение. И оценят, если будут знать контекст, именно вот это умение решить задачу быстро и с разумными компромиссами. Это — тоже не стыдно.

И другие «пацаны» — те, что на стороне заказчика — тем более.
Тут мысль совершенно в другом. Попробую ещё раз. Топик стартер говорит, что есть некие пацаны, мнение которых является мерилом качества труда программиста. В пределе — «пиши так, чтобы им понравилось». Ок, если им понравилось, а я сам неудовлетворён — это хорошо или плохо? И наоборот — мне нравится, что я сделал, а пацаны нещадно критикуют? Конечно, получить от грамотных коллег фидбек на свой код — это здорово. Но работать только ради одобрения со стороны — это прямой путь к серьёзным комплексам.

Вот эта мотивация "чтобы не стыдно" и порождает основной конфликт между разработчиками и всем окружающим миром. Именно поэтому мы всеми правдами и неправдами пытаемся не ударит в грязь лицом в мелочах и лажаем по крупному в вещах глобальных и излишне абстрактных на наш взгляд. А потом пишем исповеди про то, как все несправедливо устроено. Мы пишем код так, будто его задача быть выставленным на выставке в красивой рамочке, а должны решать задачи, как ни странно, вне наших формальных обязанностей. Если мы пишем финансовое приложение, мы должны быть финансистами. Если медицинское — то докторами. И мы не должны бояться писать "говнокод" из "стыда перед пацанами", просто потому, что в коде ради кода мало чести и смысла если он не станет частью чего-то большего. Не стоит тратить время на полировку одного алгоритма, если все наши "бутылочные горлышки" находятся в других местах, а порой и вообще вне кода. А вот умение видеть общую картину — и есть самый ценный скилл, который стоит развивать. ИМХО.

Нужно просто чтоб за забытые и заброшенные бутылочные горлышки перед пацанами тоже было стыдно.
Мимо. «Бутылочные горлышки» — это некие объективные ограничения чаще всего, а не баги или технический долг. Они невидимы для пацанов, без погружения в глубины контекста.
Мне стыдно за пацанов, которые не смотрят на надсистему при оценке решения!
Угу. «Смотреть на надсистему» — это то, что мы все сразу делаем. Это всегда просто. (Сарказм)
И мы не должны бояться писать "говнокод" из "стыда перед пацанами", просто потому, что в коде ради кода мало чести и смысла если он не станет частью чего-то большего.

Говнокод — это код, который плохо моделирует предметную область и плохо работает. По каким причинам ему может отдаваться предпочтение при прочих равных — не представляю.


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

"Хороший код" это не заоптимизированные до непонятной субстанции функции вызываемые 1 раз на старте программы. Всем понятны трейдофы. И вот трейдоф "сэкономлю сейчас час чтобы через полгода мы потратили на техдолг неделю" это плохо трейдоф, имхо. Конечно мне на это любят возражать про дедлайн, что вот этот час непременно приведет к провалу на рынке, и другой парень с говнокодом выедет, но почему-то на практике по моему опыту происходит иначе.

Говнокод — это код, который плохо моделирует предметную область и плохо работает.

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


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

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

Это оксюморон. Я не зря сказал "хорошо моделирующий предметную область и работающий". Не всякий работающий код — хороший код. Ну и неработающий, но моделирующий — тоже. Когда и то и то — тогда да.


Собственно, когда предметная область хорошо смоделирована, то расширения её функциональности происходят естественным образом как и эволюция самой предметной области. Говоря формально, есть функтор из категории предметных областей в категорию программ, и по свойствам функтора сохраняющих оригинальные формизмы добавление новых (доработка функциональности) естественным образом отображается в программе.

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

Так условие на "предметная область хорошо смоделирована" говорит лишь о том, что задано хорошее отображение на объектах. Это не означает, что отображение стрелках не будет существенно нетривиальным. Т.е. стрелка в предметной области будет "простой" (несущественная доработка), а стрелка в программах — сложной (для данной доработки не будет существовать идеоматической конструкции в используемом ЯП).

Ну смысл категории как раз в том, чтобы отразить стрелки точно так же, всё что с ними разрешено случаться — сжимать разные объекты в один, но тогда доработка — разделение этих объектов и восстановление стрелок между ними должно быть сравнительно тривиально.

Ну смысл категории как раз в том, чтобы отразить стрелки точно так же, всё что с ними разрешено случаться — сжимать разные объекты в один

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


Т.е. у тебя в категории программ есть какие-то "простые" стрелки, которые соответствуют некоторым простым, идеоматическим изменениям твоей программы. Самый удобный способ выразить какую-то "сложную" стрелку — это собрать ее как композицию простых, можно сказать, что такие простые стрелки образуют некую естественную систему образующих.
В случае, если твой функтор из категории предметной области в категорию программ не сюръективен (а в общем он почти никогда не будет сюръективен) ты собирать сложные стрелки из простых не сможешь, т.к. простые стрелки просто не будут соответствовать каким-то осмысленным вещам в предметной области.

Под стрелками я имею ввиду не какие-то изменения программы, а операции в доменной области.


Например есть некоторые объекты А и Б, и некоторве бизнес-процессы между ними Hom-set f. Тогда у тебя соответственно в программе есть FA, FB и Ff. Тогда простые изменения в A, B или F естественным образом приводят к простым изменениям в FA, FB или Ff.

Я думаю, если спросить уважаемую аудиторию, мы можем получить множество очень разных определений как «говнокода» так и кода «хорошего». Именно поэтому, я использовал кавычки, что несколько меняет смысл моего тезиса относительно того, на что, по всей видимости, отвечали вы. По мне так хороший код — это такой код, который не боится «говнокода» в своем составе, то есть является хорошим на уровне базовых контрактов, архитектуры и связей, но без преждевременных оптимизаций там, где еще множество раз он может быть переписан с изменением требований.
Все классно, только не согласен с последним абзацем:
Да, и не забывайте, о каких пацанах идет речь. Это не ваш сосед по парте, не ваш менеджер, не ваш клиент. Это – весь мир программистов.
Вот как-то я недоверяю «всему миру программистов». Я там таких персонажей видел, что сам бы не поверил, если бы мне кто-то рассказал.
Для меня «пацаны» — это достаточно узкий круг людей, с которыми мы периодически пересекаемся на ICFP Programming Contest, и мнению которых я доверяю.
Вторым «пацаном» еще являются мои напарники по проекту, с которыми мы кроссревьювимся, и которым я передаю сделанный код — им его потом саппортить.Так что код, как минимум, должен быть ими понят и принят.
И все.
Все остальное — умножается на вежливость: вежливое и конструктивное мнение принимается к рассмотрению (но не гарантируется к реакции), а любое невежливое — шагает в кучку к спаму.

Разделяю вашу точку зрения. В статье множество "посоны" слишком уж огромно, и тема контекста проекта не раскрыта.

Чтобы пацанам было не стыдно показать

Идея, в теории верная, но на практике… Кто эти "пацаны", чтобы доверять им судить ваш код? Те, которые спорят на темы "пробелы или табуляция", "ФП или ООП", "SQL или NoSQL"? Какой код ни напиши — обосрут. В достаточно разнообразном обществе всегда найдётся часть, которая будет категорически недовольна вашим решением, а если вы примете иное решение — недовольна будет другая часть.


Имхо, важнейший критерий годноты кода — решает ли код поставленную задачу правильно и в срок. Это объективный критерий, отражающий соответствие вашего кода цели его написания. Остальное (понятность, расширяемость кода, соответствие паттернам) вторично, и это может быть отдельной (важной или нет) задачей. И лишь потом должно следовать мнение всяких "пацанов", как наиболее субъективный и противоречивый фактор, возможно даже не имеющий отношения к истине.


Для обучения, конечно, может быть полезно показывать ваш код толковым "пацанам", чтобы узнать различные мнения. Но испытывать стыд или руководствоваться стыдом при этом точно излишне.

Началось. То, что надо бизнесу… Заказчику… Тут же совсем не про это.
«Не стыдно показать поцанам» — это чистой воды романтика. Романтика времен Томпсона и Торвальдса. Ещё не забытая, но сильно размытая бизнесом и армией зарабатывателей денег. И пацаны не обязательно настоящие (хотя иногда с такими везет), нужно чтобы тебе лично не было стыдно перед твоим образом «пацанов».

При этом как и любая романтика — это только дополнение, которое не должно мешать основной деятельности — твой код должен работать. Но при этом эта вроде бы не особо нужная романтика делает (у некоторых) жизнь веселее, заставляет думать чуть больше, делать чуть больше, становится чуть лучше.
НЛО прилетело и опубликовало эту надпись здесь
Поставил за вас плюс в карму и за коммент.
давайте и за меня? =)
А вам я вообще приглашение подарю. Бывает же такое…
Благодарю! а смайликами тут можно пользоваться? я почти блондинка — не вижу emoji ((
вообще — нельзя (но если не злоупотреблять — то можно текстовыми).
меня даже НЛО однажды послало на перевоспитание (заставляет ответить на вопросы по правилам хабра) за злоупотребление смайликами.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

+100500

НЛО прилетело и опубликовало эту надпись здесь
никто обычно в чужой код не смотрит

Какой-то у вас неправильный опенсорс, дядя Фёдор.

Во времена студенчества, я со своим преподавателем поднимали вопрос про пытливый ум и про гордость. Мол что на первых порах гордость душит взять готовый алгоритм и всеми силами пытаешься написать свой. Да еще и "красивый". Но через некоторое время понимаешь, что так не то что "далеко", а даже и "близко" не уедешь. Как бы не было интересно, но дедлайн не ждет.

Мне кажется, что комментаторы слишком буквальнее восприняли этих "пацанов" и срочно начали их искать.
Самый главный пацан — ты сам.
Или по-другому — некий виртуальный сферический пацан в вакууме, с которым ты материшься дискутируешь, когда лепишь костыли выбираешь оптимальное решение.

НЛО прилетело и опубликовало эту надпись здесь
Что делать, если сегодня не стыдно, а через год уже стыдно и так из года в год и с этим ничего невозможно сделать, так как опыт приходит не за один день?
НЛО прилетело и опубликовало эту надпись здесь
А все норм на самом деле.
Это как и другие области в жизни… взять к примеру Win95. Или первый iPhone. С позиции «сегодня» — оба продукта г… но.
Но оба для своего времени были прорывом. И за них не стыдно (ну почти не стыдно)

Так что… для хотя бы приближения к корректной оценке надо делать привязку ко времени (другие не только опыт, но и инфраструктура, средства разработки-отладки, возможности языков (да и сами языки)).
С языка сняли. Оценивать что-либо без привязки к времени и месту — глупость несусветная.

И еще вспомню свою любимую поговорку (некоторые обижаются) -«Дураку пол-работы не показывают»
НЛО прилетело и опубликовало эту надпись здесь
Зато вы проявили весь свой ум и способность работать.

А какое отношение «нормальный западный менталитет» имеет к стране недотыкомок-эмигрантов, стесняюсь спросить?

НЛО прилетело и опубликовало эту надпись здесь

Ну, во-первых, автору огромное спасибо. И за пытливый ум, и за тот код, который не стыдно показать "пацанам". Теперь на вот этом все и держится. Во-вторых, сдается мне, что не такой уж вы и старый и совсем не глуп. Это времена сейчас такие. Что ни пытливый ум, ни код, который не стыдно… Не надо это. Надо гуглить. Ибо, как настаивают работодатели и "владельцы" интернатур: "Все уже давно написано до вас. Надо уметь найти только."
Ребята, научите меня жить! Пожалуйста. Сижу и плАчу. Не прошла собеседование на интернатуру, написали мне в отказном письме, что баллов не хватило. Не буду жевать сопли, но если кратко, то из того олдскульного поколения я, как и автор, узнаю нас. Университетская прикладная математика, программирование на Паскале и Си. Мы ориентированы были на численные методы и оптимизацию. Мозг работает, и ту самую пытливость ума привили, и сборщиков мусора тогда не было, заботиться надо было. Обстоятельства так сложились, что пришлось на военную службу отвлечься на целых 20 лет. Уволилась, пошла на курсы Java core, QA, QAavto. Ну соскучилась, решила взглянуть, что тут у нас, чем дышит отрасль. А там… Смузи, героскутеры и полная фривольность Джавы, приятно, но хотелось бы порядка. Наследование, интерфейсы тоже хорошо, но есть вопросы. Мне показалось, что беспорядок там, где как раз все должно быть в строгом порядке и логике. Ладно, надо так надо, освою. Работать хочу. Ан нет! Без опыта работы низя. Где опыт? Интернатура. Это надо сдать тесты, проучится месяц-другой, чтобы потом бесплатно поработать с полгодика, за опыт. И попробуй попади на такую интернатуру с пытливым умом. Ладно тесты онлайн, английский и общие технические вопросы. а 4 задачки на листике, там, где как раз надо написать так, чтоб не стыдно было показать. Но на листике. И не надо решать, главное найти решение, потому что все написано до нас, а времени на думать у нас нет… Я не соглашаюсь называться тупой и старой, но думаю, что как раз этой пытливости ума и олдскульной ответственности сильно не достает современным компаниям. Креативность. Это по фиг знает как написанным требованиям, фиг знает как скреативить продукт. И ПО такое сейчас, что продавать его стыдно, не работает оно как надо. Где я неправа? А автору респект.

НЛО прилетело и опубликовало эту надпись здесь
Я и не плачусь. И уже даже не плАчу. Пришло понимание того, что за поколение обстановка и ценности в отрасли изменилась кардинально. Обрисовала ситуацию. А так, спасибо за ответ и наводку на андроид-разработку. Если не лень, похвастайтесь своим творением за $50K.
НЛО прилетело и опубликовало эту надпись здесь
Не пробовала. Все-таки 20 лет перерыва, просто засомневалась. Так вот быстро не поднимешь все знания. Видите, с чего начала, Джава, тестирование (мануальное — сразу нет), автоматизация тестирования вроде зашла немного. Но Machin Learning надо посмотреть, интересно. Пока еще так глубоко не копнула ни с Джавой, ни с автоматизацией. Только с лета пытаюсь определиться. Спасибо.
20 лет перерыва, просто засомневалась

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


Удачи в любом случае!

Спасибо, было необходимо что-то такое услышать! Я буду пробовать. На самом деле самое золотое время для качественной работы. Не надо за детьми в садик/школу, уроки, секции, больничные… Все выросли. Пока мозг работает и есть желание его загрузить. Но вот не так легко второй раз в эту реку.

А я бы вам советовал новый язык программирования. За такой большой срок все ваши прежние знания наверно можно просто взять и вынести на свалку. А все новые на той же джаве, если вы уже ее знали, но 20 лет назад, будут очень тяжело ложиться. Почему? Потому что у вас уже есть в голове какие то шаблоны и вы будите пытаться все на них натянуть даже если это в корне неверно. Почему так происходит? Потому что мозг так устроен. Он оказывается до 25 лет набирается знаний а потом их использует, максимально стараясь не вникать во что-то новое, а использовать готовые шаблоны. Поэтому, мой вам совет, начните изучать новый ЯП: go, rust, javascript (react, angular, vue). Если вы раньше с такими языками не работали вашему мозгу просто не откуда будет брать старые шаблоны и ему придется вникать и запоминать новую информацию.

Java core есть свежая у меня, вот этого лета. Осень всяческие курсы по тестированию. Мануальное не зашло совсем, а вот автоматизация — норм. Page object и TestNJ дают возможность писать элегантный код, «чтобы не стыдно было пацанам показать», что собственно и зацепило. Ну вот Mashine Learning еще интересно, конкретно там поднять знания и копнуть глубже. Все знать и усвоить невозможно сейчас, хотелось бы определиться как-то. Но без опыта работы даже минимального, это невозможно, даже если я несложно вникаю в новое.
Page object и TestNJ

Аж поперхнулся и пошел гуглить, нет, ничего не пропустил… TestNG смею все же заметить.
Но что могу сказать на счет него? Это «теха» которая крайне помогает когда нет навыков совсем.
Зато потом только палки в колеса вставляет. Очень уж больно грубый-примитивный инструмент с тотальным огораживанием «как надо делать».

Так что вовремя переходите на велосипеды свои, не засиживайтесь на TestNG.
Аж поперхнулся и пошел гуглить

Не-не, вы, пожалуйста, аккуратно. :))) Ничего не пропустили. Извините, досадная опечатка.
Так что вовремя переходите на велосипеды свои, не засиживайтесь на TestNG.

Ну конечно нет навыков. Совсем. Только курсы. Вы сейчас скажете, что самому надо работать. Это все понятно, но курсами я сэкономила кучу времени. Еще тот интенсив. Сделала перерыв немного, чтобы улеглось. Оно все доработается, понятное дело. Мне не совсем понятны наезды на тесты Нью Дженерейшн. Чего, они вполне читабельные, порядочек там. Все на классы разбито. Если что в локаторах меняется или элементы какие добавляются/не используются, то хоть не надо лопатить все, в нескольких местах поправить только. Фабрики если подключить, вполне себе гармонично выглядит. Подозреваю, что это еще и от самих проектов зависит. Как команда решит, так и автоматизируют. Но я не претендую, просто такой вот неопытный взгляд на вещи.
Ну и раз уж я только учусь… На какой велосипед посоветуете пересесть? Хоть в каком направлении, вы видите, все это движется?
Мне не совсем понятны наезды на тесты Нью Дженерейшн. Чего, они вполне читабельные, порядочек там

Этот инструмент задуман-разработан в 00-х. Если быть точнее, в 2004 он уже был.
За это время сменились целые пласты эпох. К примеру, еще не было jQ, а теперь его "уже нет" (условно нет конечно).

Поэтому… если мы говорим о тестировании фронтенда, то… следущим правильным шагом будет снятие древних оков и путь свободного плаванья.
Не стеснять себя навязанными рамками.
Берем веб-драйвер и вперед, в путь. Делаем свою точку входа (а не магию от TestNG), используем тот логировщик, что нам понравится (хоть готовый, хоть велосипед), сами решаем «как параллелить» тесты.

*Уже 7 лет варюсь в автоматизации тестирования. Сам с TestNG начинал.
Сейчас ПО представляет из себя коллекцию сервисов на SpringBoot. С тоннами всевозможных обвесов (как готовых, так и своих)
Если есть какие-то вопросы — пишите в ЛС, подскажу чем смогу.
Делаем свою точку входа (а не магию от TestNG)

Да-да-да, магия подействовала, что оно так красиво видится. :)
На самом деле, я так себе полагаю (самоуверенно), что с тем пониманием и знаниями, которые у меня сейчас есть, уже бы куда-то работать, и уже на проекте ориентироваться и качественно этот проект тестировать. Потому как обучаться можно бесконечно, даже вот вы акцентировали:
К примеру, еще не было jQ, а теперь его «уже нет» (условно нет конечно).
. Я же не претендую на должности. Хотя бы стажировка.
Если есть какие-то вопросы — пишите в ЛС, подскажу чем смогу.
За это отдельное спасибо. Я буду знать, что могу обратиться.

и статейка интересная и комментарии занимательные

Все это очень лирично на фоне соседней истории с Axtix-web. Там тоже были «пацаны» и вот «пацанам» не понравилось. В результате интересное решение оказалось в подвешенном состоянии. А ведь тоже человек не побоялся «пацанам показать». В общем романтичная, но софистическая тема, которая слабо коррелирует с реальностью. Как говорится «Talks is cheap...», а впрочем, уже было.
Что бы вы ни делали, помните – делайте так, чтобы пацанам было не стыдно показать. Самураи учили так: если ты пишешь письмо, считай, что получатель повесит его на стену. Из этого и исхода.

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

С самой же идеей из статьи согласен.
Однажды я строил теплицу, с нуля, без знаний, умений и навыков, в одни руки, да такую, чтоб сама помидорку-огурчик растила, без участия человека. Строил без малого два года.
Это был тот еще опыт, я потом сам себе так и не смог ответить — верни меня к моменту «строить самому, или купить готовый конструктор» решился-бы я все делать сам.
Так или иначе, пока строил, вывел аналогичное правило, но назвал его немного по другому «делать надо так, чтобы гордиться собой». Это куда как более эгоцентричная позиция, чем с «пацанами», и как мне кажется — более рабочая.
У меня есть прогон на эту тему, скопирую со своей темы на FH, там и других лайфхаков немало )

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

Думаю понимаете, подвид «баран рукожопый» это очень гремучая смесь. Этот подвид не только эти ваши долбаные ворота таранит и бодает, этот гад по ходу сего увлекательного процесса изобретает способы эти ворота взорвать, аннигилировать, трансмутировать и отправить в космос.
Но даже перед самым стойким бараном, рано или поздно, ребром встаёт вопрос мотивации. Особенно остро этот вопрос встаёт тогда, когда за бодание ворот не платят зарплату. А постоянное осознание, что за честь пободать новые ворота еще и самому надо отвалить котлету дензнаков, в определенный момент вгоняют мозг барана в конвульсивно-фруструированное состояние. Мозг барана от такой DDos-атаки впадает в кому и перестает отвечать на запросы рукожопых конечностей. А как известно – баран без мозга и конечностей это почти шашлык. Как по уровню мозговой деятельности, так и по уровню КПД. То есть не только пользы не приносит, но если долго на одном месте пролежит, то еще и вонять начинает.

На этом, философский ликбез о мироздании баранов предлагаю прекратить и перейти непосредственно к мотивации.

Приблизительно миллион начатых и незавершенных мной затей дают мне основание с гордостью заявлять, что я лучший эксперт по незавершенным делам в мире! Best of the best так сказать.

Вообще, делать, или говорить о чем-либо, именно что с гордостью – моё любимое занятие. Но я забегаю вперед, давайте по порядку…

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

«ПришёлУвиделПобедил!» – период максимального задора, когда в руках все спорится и горит, когда ты фонтанируешь идеями, работаешь от восхода и до заката и наоборот, когда ты настолько болеешь затеей, что без обдумывания, а как оно будет, когда всё будет сделано, не обходится ни послеобеденный сон, ни разговор за кружкой пива. Все мысли, да и разговоры, понятное дело, только о светлом будущем, когда задумка будет реализована и будет всем щастье даром.
Самый кайфовый и самый, сцуко, опасный период. Кайф, понятное дело, от ощущения «ща горы сверну», и «тля, какой-же я умный и пряморукий…». Опасность этого периода ровно в том-же – от ложного чувства «всё могу» — по ходу реализации задумка трансформируется, изменяются размеры, добавляются новые функции, изменяются требования к эстетике изделия и тому подобная ботва, каждый из листиков которой фатально изменяют бюджет и сроки реализации затеи. А как-же – ведь на этом этапе «рукожоп» пребывает в задорном дурмане, и горы ему по плечо, и лужи по колено.

И очень, очень важно на этом этапе, оставить хотя бы процент трезвости в сознании, или на коротком поводке иметь невовлеченную в процесс жену со скалкой в руке, которая в строго выверенный момент отправит рукожопа в кратковременный отрезвляющий нокаут. Ибо нех. Задумал на старте план. Вот его, гад, и реализуй. И только когда закончишь – начинай улучшать. А то блин пуговицы ему перламутровые уже на старте подавай…

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

Именно тогда наступает следующая стадия – «СовсемНемногоОсталось». Очень опасный этап. Ведь кое-какие результаты уже есть. Возможно даже прототип удалось сбацать, очертаниями напоминающий формы конечного изделия. Но всё это, как ложный белый гриб – промежуточные результаты работы кажутся очень красивыми, но если все остановить именно сейчас, то как минимум будет понос, а иногда и «я сказал в морг, значит в морг…». То есть все ранее потраченное время и материалы – в помойку. Именно мозг, отрезвевший от задора (или скалки жены) начинает здесь свою подрывную деятельность, шепчет, где-то там в глубине «отложи… отдохни… и через месяц… или через два… вернешься и доделаешь…»
Хрень! Не верьте мозгу на этом этапе. Не вернетесь! Не доделаете. Мозгу ведь что важно? Мозгу важны победы. Быстрые, скорые блиц-криги, в духе Чингис-Хана, и чем больше на единицу времени таких побед, тем лучше мозгу. А тут… долгострой. Вот мозг и заскучал, и подсказывает своему хозяину-рукожопу «…да брось ты эту хню, начни новую, она интереснее…».

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

Давным-давно, я придумал костыль, чтобы успешно преодолевать этап «СовсемНемногоОсталось». Имя этому костылю – лестница. Я использую любую, вообще любую возможность подняться по лестнице наверх. В подъезде многоэтажного дома. Подняться на еще одну ступень. На эскалаторе в метро не стоять, а вверх идти. Ведь каждая ступень – моя победа. Над гравитацией, как минимум. Я каждый день питаю мозг победами. Над «не хочу и не могу» — победа. Забудь про лифт! И за ступенкою – ступень. Победа всегда с тобой. Победа надо мной. Внутри победа.
Простите за патетику. Но без нее нельзя. Приблизительно треть из миллиона моих незавершенных затей бесславно сгинули именно на этапе «СовсемНемногоОсталось» как раз из-за отсутствия краткосрочных побед. А лестница – помогает. И для коленей полезно.

Следующий этап – «КакСабакаУстал» — самый страшный и, одновременно, самый продуктивный. Именно на этом этапе делается самый большой объем работ, именно в это время ты уже воочию видишь результаты своей работы. В зависимости от упёртости и упоротости – работать иной раз приходится на износ, крепко сжав челюсти. Стараясь не вспоминать о том кому именно эта светлая идея пришла в голову, и что надо сделать с этим человеком. Это очень и очень опасный период, когда многие работы, если не все подряд, из-за усталости, частичной потери интереса и иных причин, могут выполняться по принципу «и так сойдёт». И если на старте, под напором задора, иная деталь без раздумий переделывалась, из-за пустяковой придирки, то на этом этапе часто не переделываются даже жуткие косяки.

Этот этап – рубикон всей затеи. Из-за гигантского объема работ здесь особенно важно не косячить, наоборот, поднять планку требований к результатам еще выше, чем на первой стадии работ. Для того чтобы не косячить, когда максимально всё обрыдло и устал, есть замечательный костыль – надо гордиться собой.

Вообще, это целая проблема поколений с советским прошлым – неумение и стеснение в проявлениях гордости. Вот кем мы привыкли гордиться? Ветеранами ВОВ, тут без вопросов. Необъятными просторами, реками, полями и военно-промышленным комплексом – тоже вопросов нет. Родители гордятся своими детьми, но это к логике никакого отношения не имеет, сплошные феромоны. За наше с вами правительство только даун будет гордиться, поэтому мимо. И что получается? Ветераны и просторы. Первыми гордимся по инерции, а вторым не гордиться нельзя, потому что наши просторы действительно самые просторные, факт. Я это к тому, что не приучили нас в свое время гордиться не чем-то древним, или эфемерным, а вполне осязаемым… например собой.

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

Знаете что… я очень стеснительный, ну реально. В последнее время стало модно — особое отношение к интровертам, спецкурсы для преодоления внутренней зажатости и прочая ботва. Знаете как стыдно мне было в первый раз сказать вслух самому себе – «Я сделал эту штуку Хорошо и Я горжусь собой!» Я много раз повторил это в уме. Но это не работает, если не сказать вслух. Чтоб и сам услышал, и мир вокруг.

Вот. Знаете, мужики, хватит делать одноразовую мишуру. Отчего почти весь мир вокруг вдруг стал жить на горизонте в пять-десять лет? Одноразовая посуда, картонные домики, машины из фольги, арматура из стекловолокна, мебель из опилок, электроинструмент со сроком службы максимум в год, лопаты и грабли из миллиметровой стали – я сгибаю их пальцами одной рукиблять!
Будто вся наша жизнь вдруг пластиковая стала, сомнешь-сломаешь, и новую в магазине купишь.

Я сделал это. Это очень красиво. Это крепко. Это сделано настолько хорошо, что будут пользовать мои внуки. Это очень крепко. Это действительно ХОРОШО. Именно Я сделал ЭТО. Мать вашу. Да я горд собой! Я – молодец.

Время от времени, когда я особенно устал, когда я заканчиваю какую-либо работу, узел, или этап, когда я окидываю глазом сделанное, когда сделано действительно отлично, я точно это знаю, ведь именно я трудился, когда я сначала мысленно произношу «я горжусь собой…?» и не встретив никакого внутреннего дискомфорта, то я могу в самый полный голос, на всю вселенную проорать – «ДА! Я горжусь собой» — и именно это помогает, со скрипом суставов, крошками металла на зубах, исцарапанными руками, искусанный слепнями и комарами, встать и начать делать следующий, самый крайний этап.

И завершающий — «ПапаМожетВсё» — очень приятный и, одновременно, очень опасный этап. Главное – не спиться нахрен. На этом этапе уже можно показать всем подряд и самым близким результаты своего многомесячного труда, если они по каким-то причинам не видели их до сих пор.
Очень важно на этом этапе записывать все замечания к функционалу или эстетике, поступающие от зрителей, потому что взгляд создателя нафиг замылен и для него полученные результаты идеальны априори. Важно именно записывать, потому что мозг, сцуко, ленивый, не запомнит что там бормочут какие-то левые человеки, не фига не понимающие как все это строилось.
А потом, протрезвев, эти записи надо внимательно изучить, и вот он – план улучшений, который, впрочем, вполне можно отложить, до лучших времен.
И уже тут, совсем неважно – наступят те самые лучшие времена доделок, или ленивый мозг будет откладывать этот этап бесконечно.

Ведь главное дело — главный конструктив — то ради чего все затевалось — УЖЕ ПОСТРОЕНО.
И именно это греет душу более всего.

Какой прекрасный комментарий. Это же я! Проходил каждый этап, вплоть до спивания. Прочувствовал по полной. Добавлю в закладки, чтобы прочитать потом ещё раз. И возможно даже не один… Ведь дело в том, что я баран. Это вторая моя главная характеристика после уже доказанного выше в тексте постулата о том что я еще и рукожоп…

И спасибо. Я прямо сейчас взял и сделал пару небольших шагов по своей «лестнице».
Если бы эту мысль понимали работодатели…
И думаю правильнее было бы сказать не: «пацанам не стыдно показать», а «дорога возникает под ногами идущего»
А в целом сложившаяся ситуация является легким бредом… Да, надо чтобы понимали и осознавали с чем работают и как это работает. Но, почему бы и не рассказать сразу людям подводных камнях? нарисовать «дорожную карту»… И пусть потом каждый своим пытливым умом доходит до кондиции работы в компании…
НЛО прилетело и опубликовало эту надпись здесь
Пытливый ум – это не врожденное, а вполне себе приобретаемое качество. До работы программистом у меня, например, его отродясь не было.
Пытливый ум свойственен детям. Со взрослением он пропадает. Годам к 20-25 примерно.

Например, я прекрасно слышал про Биткоин с самого его начала. Слышал много лет. Сначала смотрел на курс и думал что это очередная «система зароботка для школьников». Потом, когда курс подрос — «да ну, это не серьезно тратить на это время». Дальше было — «ну да, интересно, но вот-вот обвалится». Помню, когда курс был уже $200 за 1BTC мне знакомый говорил что хочет попробовать собрать свою ферму. Я ему с деловым видом ответил — «та не лезь туда, да, тема хорошая, но поезд уже ушел, поздно». Помню потом как курс перевалил за $5000… Ладно, это хоть не я продал 10000BTC за $25 и купил за них пиццу.

И я точно знаю, будь мне до 20 лет когда он появлялся — точно попробовал бы. Раньше в IT пробовал все. Например, когда дошел уже до WEB — это были и дорвеи, серое, белое СЕО; писал движки сайтов на Perl, ASP.NET, Python, Ruby, PHP; пробовал разные проекты, и веб-студию создавал, и контентные, публичные сервисы, SAAS; под Россию, Украину, Европу, Америку, развивающиеся рынки Африки без конкуренции, но с европейскими деньгами. Та что там говорить, как все нормальные «пацаны» в поиске себя.

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

И еще немного тревожно за подрастающее поколение. Все в гаджетах и интернетах. На всем готовом. Не надо ни думать, ни фантазировать — за тебя все сделали, разжевали и уже практически перевалили. Сиди и втыкай. Как бы не вылезло это все потом боком, в серую и ни чем не заинтересованную массу.
У человека может не быть любознательности из за воспитания. Представьте семьи, где детей подавляют родичи, бьют и т.п.

Уверен, есть и какие-то генетические предпосылки к уровню любознательности, как и средовые, культурные, тысячи их!
Да, все верно. Я и не говорил что пытливость ума любого ребенка = 100 удавам. Но им это просто свойственно. Исследовать мир согласно стадии своего развития.
Есть дети что просто покатал машинку и все, а есть такие дети — что попробуют ее разобрать всяко разно с ней повозиться. Или соберут из кубиков что то одно, другое и пожалуй весь ассортимент, а есть те — что помимо кубиков ещё всяких элементов добавляют к ним и строят всякие конструкции.
Пытливый ум — это не только машинки и кубики. Ребенок может не собирать мега-конструкции из конструктора, но читать книги. Не читать книги, но рисовать. Не рисовать, но успешно общаться и взаимодействовать с другими людьми. И так далее.
Беда «универсальных советов» в ограниченности их применимости. Порой, уместно применить дендрофекальную методику в делах, выиграв во времени разработки. Но в целом я согласен со статьей.

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


Пытливость ума на одной чаще весов, на противоположной лень и более качественная система (код, логи и т.п.). Можно конечно бросаться с шашкой на каждую не большую задачу и тратить неделю на тех.анализ, но это повод задуматься почему система не может сразу дать ответ на вопрос: где ошибка?
Думаю что это врожденное, а так если на кону большие деньги то конечно нужно развиватся.
ТЗ, где всё разжёвано, по полочкам разложено

А какое тз должно быть? Где все расплывчато и потом переделывать по 33 раза? И где тут связь с пытливостью ума?
Хабровчане:
Ты что читаешь? «7 навыков высокоэффективных людей»? Дурак что ли читать эту ахинею?
Они же:
Экзальтированно лайкают высеры nmvian

Эм, а как связана "пытливость ума" и "красивый код, который не стыдно показать"? Человек может быть пытливым, но не пишет Unit-тесты. Знаете, почему? Потому что когда есть пытливый ум — не нужны Unit-тесты :) Это все смешочки, конечно, но очень часто я вижу "пытливые умы", которые пишут нетестируемый код.


В свою очередь, часто бывают и другие (хотя таких меньше), которые пишут хороший код, тестируют его, оформляют для пацанов, не забывают про CI/CD, следуют процессам, но решать сложные задачи у них не получается, не хватает "пытливости ума".


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

НЛО прилетело и опубликовало эту надпись здесь
Извините, я наверное что-то не так понял, но, на мой взгляд, начало статьи не соответствует содержанию.
Пытливый ум это желание разобраться как оно устроено. Кто в детстве получал ремня от отца за разобранную новую машинку или робота, тот меня поймёт.
НЛО прилетело и опубликовало эту надпись здесь
Кто-то сказал: Качество — это когда все сделано хорошо, даже если никто не будет проверять.
Отличная статья, с удовольствием прочел
НЛО прилетело и опубликовало эту надпись здесь
Вот лично я увидел в статье (и после) извечную противоположность бизнеса и науки.
Настоящим ученым не интересно, какое практическое применение имеет решаемая ими задача. Большое количество разделов используемой сейчас повсеместно математики было создано людьми, которые о практическом применении своих трудов как-то и не задумывались. Натянуть в гильбертовом пространстве сову на глобус — что может быть прекраснее? И пацанам с Оксфорда показать не стыдно. Ученые инвестируют в свою голову. Всю жизнь (не считая времени на защиту ученых степеней). Так же, как инвестирует в свою голову автор статьи.
У бизнеса же задача принципиально другая. На качество кода ему плевать. Бизнесу важно иметь соотношение затраты-прибыль лучше, чем у конкурентов. Иначе бизнес сожрут другие бизнесы. И если индус за доллар в час пишет говнокод, который как-то работает и выполняет свою задачу — отлично. Главное для бизнеса — найти ту оптимальную точку, когда затраты на поддержку говнокода пока еще ниже, чем на зарплаты не-говнокодерам. В этом факте — вся суть современных софтверных корпораций. Не надо забывать еще и о том, что корпорации за поддержку говнокода заставляют платить пользователя, это называется Support Plan. И это не бизнес такой плохой, это реалии современного мира. Компании, которые им не следуют — разоряются, или их покупают и новый владелец начинает следовать этим принципам.
Но светлая изнанка состоит в том, что противоречия между этими двумя мирами, по большому счету, и нет. Люди, подобные автору — крайне редки. И бизнес вынужден содержать их, платя им большие зарплаты — на случай, если в каком-то месте говонокод уже становится неприемлем, например, в архитектуре. Бизнесу так спокойнее, и деньги на это найдутся.
А вот остальные 99% программистов — да, ситуация сложная. С одной стороны, им убедительно ездят по мозгам, говоря, что идеальное качество кода не нужно, и доказывают это с цифрами на руках. С другой — как-то грустно в некоторый момент осознать, что потратил лучшую половину жизни на написание и поддержку говонокода. Понимать, что в большинстве случаев надо было инвестировать в себя — в свою голову, в знание алгоритмов, в привычку копать вглубь (жутко трудно прививаемая штука, кстати), а не в свое резюме для бизнеса, изучая модные фреймворки, и не в квартиру в центре города.
НЛО прилетело и опубликовало эту надпись здесь

Одно другому не мешает. Я про рабочее время.

Согласен с автором! Не думал что «пытливость» это архи важный навык в программировании (наверно из-за того, что он у меня уже был как само собой)
Спасибо автору за совет, сам того не зная я на «пытливости» и вылез в программеры, главное сохранять мотивацию)
НЛО прилетело и опубликовало эту надпись здесь
Вачовски же уже все сказали.
Не пытайся угодить пацану, просто пойми правду. Правда в том что ложки пацана нет. И тогда ты поймешь, что не пацану угодить надо, а себе.

Возможно выражение "пытливый ум" можно заменить словом "любопытство". Пример с коллегой из текста как раз подходит: вам стало любопытно как стажер пытается решить задачу, а раз любопытно, значит вникаем. С возрастом любопытство притупляется, потому что мозг уже имеет большую собственную базу знаний и решений и ему просто лень вникать во что-то новое.


"Чтобы пацанам было не стыдно показать" — просто зачет!

Этот принцип применим ко всему, только его можно переформулировать «делай для себя», а то какая-то детская позиция — повыпендриваться перед пацанами.

Если делать для себя, то будешь ковырять, изучать и делать максимально хорошо и понятно, чтобы самому потом этим так же легко пользоваться.
Достаточно причислить себя к пацанам, тогда противоречий нет. Пацан № 0.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо за статью, как раз взялся за непростую задачку в которой тяжело и непонятно написан код, решил засесть за нее плотно, и потихоньку пробираюсь черзе эти дебри
Отличная мотивационная статья. Полностью оправдывает мое желание постоянно изучать что-то новое пока коллеги крутят у виска и говорят «сиди на попе ровно».
Может быть поэтому и стал разработчиком)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории