Советы типа «писать красивый код», «хорошо комментировать свои доработки», «изучать современные фреймворки» — очень полезные, но, увы, второстепенные. Они идут прицепом к главному качеству программиста, которое надо в себе развивать.
Вот это главное качество: пытливый ум.
Пытливый ум – это не столько умение, сколько желание разобраться в незнакомой среде, будь то новая технология, новый проект или новые фишки ЯП.
Пытливый ум – это не врожденное, а вполне себе приобретаемое качество. До работы программистом у меня, например, его отродясь не было.
Применительно к нашей работе пытливый ум – это, зачастую, желание разобраться в том, почему же она, сволочь, не работает. Независимо от того, кто написал этот код – вы или кто-то другой.
Если вы посмотрите на любую задачу, решаемую вами или коллегами, то упрощенно она выглядит так: разобраться в проблеме, найти место для правок, внести правки.
Собственно программирование начинается только в конце цепочки, а основная часть – одно сплошное упражнение для пытливости ума. И итоговое качество решения, и скорость его создания зависят не от вашей способности писать код, а от вашего желания побыстрее понять и найти, куда этот долбаный код надо впендюрить.
Как развивать пытливость ума? Ничего сложного. Я много лет назад придумал простую стратегию:
Чтобы пацанам было не стыдно показать.
Если ваше решение не стыдно показать пацанам, то оно – превосходно. Если вы копаетесь в проблеме до упора, и вам не стыдно об этом рассказать пацанам, то вы – красавчик.
Только не превращайте эту формулировку в девиз клуба анонимных алкоголиков. Если вы ни фига не разобрались, или написали говнокод, сдались на полпути, развесили сопли и устраиваете эмоциональный стриптиз типа «я такой тупой, и не боюсь в этом признаться!», выставляя свою никчемность напоказ и ожидая, что вас пожалеют – вы, увы, ни хрена не программист.
Вот вам пример. Недавно один стажер ковырялся с задачей в достаточно сложном механизме – и технически, и методически. Копался, как я понял, целый день. В основном сам, но просил помощи и у коллег. Кто-то из матёрых посоветовал ему лезть в отладчик. Под вечер стажер дополз до меня.
Я, если честно, думал, что стажер смотрит не там и видит не то, а мне придется копаться с самого начала. Корона давила, короче. А оказалось, что стажер в одном шаге от решения. Собственно, этот шаг я и помог ему сделать. Но главное не в этом.
Главное в том, что стажер проявил пытливость ума – настоящую. Знаете, как отличить настоящую пытливость? Очень просто – когда новичок находит, или почти находит решение, двигаясь хрен пойми каким путём, с бубном и танцами, не сдаётся, не ложится кверху лапками, даже если всем вокруг он будет смешон, и «знатоки» будут поучать его советами типа «учи мат.часть» или «смотри в отладчике».
Несмотря на очень низкую эффективность решения задачи в приведенном примере, путь, пройденный стажером, пацанам показать не стыдно. В наши старые времена только такие и выживали – потому что специалистов не было, все технологии до единой были незнакомые абсолютно всем, и спасти могла только пытливость ума.
Пытливость ума одинаково часто встречается и у новичков, и у дедов. Седые волосы, куча сертификатов, многолетний опыт работы – вовсе не показатель пытливости ума. Я лично знаю несколько программистов с многолетним опытом работы, которые пасуют перед каждой сложной задачей. Всё, что они могут – писать код по ТЗ, где всё разжёвано, по полочкам разложено, вплоть до имен таблиц и переменных.
Так что, господа стажеры и новички: ваши шансы – такие же, как у старожилов. Не смотрите, что у старого дяденьки много опыта и сертификатов – пытливость ума от этого не зависит.
Что бы вы ни делали, помните – делайте так, чтобы пацанам было не стыдно показать. Самураи учили так: если ты пишешь письмо, считай, что получатель повесит его на стену. Из этого и исходите.
Стратегия «чтобы пацанам было не стыдно показать» — очень проста и легко применима в любой момент. Остановитесь хоть сейчас, хоть через час, хоть через год и ответьте – то, что вы сделали, не стыдно пацанам показать? То, как вы старались и искали решение, не стыдно пацанам показать? То, как вы каждый день бьетесь над повышением своей эффективности, не стыдно пацанам показать?
Да, и не забывайте, о каких пацанах идет речь. Это не ваш сосед по парте, не ваш менеджер, не ваш клиент. Это – весь мир программистов.
akryukov
С утверждением про пытливость ума согласен, но при чем тут "чтобы пацанам не стыдно показать"?
Показать что? Пытливый ум? Процесс поиска?
nmivan Автор
Показать всё — и процесс, и результат. Как противопоставление любому варианту «и так сойдёт».
Это своего рода цель для пытливости ума — знать, что тебе не стыдно показать, что ты не вполсилы работал, не «лишь бы заработало», не «лишь бы отстали».
Carbonade
Кхм, а бизнесу это точно надо?
aol-nnov
О, "пиши код, б**ть"-и пожаловали...
Каждая сделанная "на отвали" правка закапывает бизнес в долги (если только цель этого бизнеса не выпустить одноразовое по). Вам так никогда не казалось?
OleksiyT
Ну почему сразу "на отвали"?
В бизнесе множество градаций, разные задачи и разные решения.
Давать полгода на написание нового метода сортировки — это уже не бизнес, а благотворительность.
aol-nnov
Поясню на сравнении:
1) делаешь продукт, отдаешь заказчику, он рад. Через время возвращается с хотелками. Ты что-то прикостыливаешь, отдаешь. Он снова рад (может быть). Далее ещё несколько итераций, но с каждым заходом тебе все тяжелее и затрат все больше, а выручка все меньше. В итоге, ты бросаешь этого клиента.
2) все так же, но ты в каждой итерации "делаешь хорошо". И с каждой итерацией тебе выходит делать проще и меньше. Заказчик платит столько же, сколько и в п.1, но выручка твоя гораздо больше, фрустраций твоих — меньше. И "пацанам не стыдно показать".
JustDont
… на второй-третьей итерации заказчик отваливается со словами «я вам за фичи платил, а не за рефакторинг». Или «а тут другие сделали лучше, а вы чёт долго возитесь».
Э нет. Как максимум с каждой итерацией у тебя не добавляется время на разгребание прошлых костылей, однако само по себе «сделать хорошо» как правило занимает больше времени, чем добавление костыля, пока этих костылей не накопилась критическая масса.
ne_kotin
А мы ему говорим в таких случаях — «дешевое — дорого, дорогое и долгое — дешево».
Druu
А свобода — это рабство, да?
ne_kotin
Нет. Просто объясняем почему быстро получается только дешевое говно, и почему периодически ему (заказчику) необходимо оплачивать убирание технического долга и рефакторинг сейчас, если не хочет потом платить 2х и больше.
А кратко это все формулируется именно так — дешевое — дорого. А вот то, что делалось долго и дорого может в итоге быть вообще бесплатным и необслуживаемым.
Kanut
Просто надо быть готовым к тому что заказчик всё равно скажет: делайте дешёво :)
P.S. Более того некоторые при этом даже вполне себе понимают что они делают и чем это может быть чревато. Хотя большинство конечно только думают что понимают.
Nalivai
Бывают не только плохие, негодные заказчики
Kanut
Да я вроде бы и не говорил что такие заказчики обязательно являются плохими. Это их деньги и их риски. Если ему объяснили чем это чревато и он готов рискнуть, то хозяин-барин.
Nalivai
Слово «плохие» тут, конечно, субъективно, но я бы его применил тут в полной мере. Даже если он понимает что делает плохо, работать на него и делать плохо не хочется
Kanut
В том то и дело что это не всегда означает "делать плохо". Вот у нас недавно был случай когда заказчику нужно было временное решение для тестирование его какой-то внутренней ерунды, которое отработает 2-3 месяца, а потом его 100% заменят другоим решением на другой технологии. И ему ни документацию не надо, ни возможность что-то добавлять. Ему нужно чем быстреетем лучше и даже можно с багами. И где он неправ?
qw1
>> а потом его 100% заменят другоим решением на другой технологии
Ага, знаем эти сказки…
AgileChange
Мир — это война!
flancer
а дорогое и долгое всё ещё будет актуальным к моменту завершения?
foal
Делай что должен, и будь что будет.
JustDont
— Папа, что мы будем сегодня кушать?
— Ничего, зато мне не стыдно за свои действия.
foal
Посмотрим, что я заговорю, когда мне действительно будет нечем кормить своих детей. А сейчас я действительно так думаю :)
JustDont
Я в общем-то не о том, что нужно всегда и несмотря ни на что бежать за деньгами; а о том, что если систематически не бежать за деньгами, то рано или поздно можно попасть в ситуацию, когда кушать таки нечего.
И вот относительно «кода за который не стыдно» реальность такова, что за такой код не платят. Ну не волнует покупателя софта никогда, что код такой, за который кому-то там не стыдно. Его волнуют совсем другие вещи — главным образом, что этот код делает, и насколько хорошо он это делает.
progit
А так же насколько легко его сопровождать и добавлять новый функционал. Если всегда бежать "быстрее и дешевле", то рано или поздно становится "очень медленно и дорого".
А вообще везде надо искать золотую середину — реальность такова, что всегда делать "очень хорошо" просто невозможно.
foal
И? Ситуация на рынке такая, что такие заказчики меня не волнуют. Достаточно и других.
Godebug
Да, но при втором подходе необходимо документацию не писать)
Carbonade
Какие далекоидушие выводы, я в восторге.
Чаще всего я встречал, что бизнесу (мой вариант — это кровавый ынтырпрайз) не нужно копание в проблеме "от и до" в большинстве случаев, нужно компромиссное решение за вменяемое время.
Раскрывать еще более детально, надеюсь, не нужно.
И что в разных компаниях к техдолгу относятся по-разному: кто-то выделяет ресурсы на рефакторинг, а где-то команда меняется целиком раз в 2-3 года, это тоже я знаю и даже ощущал на себе.
Меня лично интересует мнение автора, что его побудило рассмотреть данный вопрос в отрыве от основной нити повествования решения проблем бизнеса.
Если я вам наступил на больную мозоль — искренне раскаиваюсь и
впредь обещаю так больше не делатьмогу предложить огнетушитель для тушения тлеющего стула.aol-nnov
> команда меняется целиком
имхо, это худшее, что может случиться с продуктом. искренне недоумеваю, зачем доводить до этого?
> для тушения тлеющего стула
не переживайте за мебель, я давно асбест подкладываю! жгите еще! :-D
ComatoZZZ
Надеюсь проект меняется вместе с командой иначе от смены команды тех долго не убавится
rjhdby
А я собственными глазами видел команду, работающую над проектом 15 лет. И именно потому, что времени на рефакторинг не выделялось.
innovaIT
Вы всерьёз считаете, что можно сразу написать один раз. А потом получать профит? Я в такое не верю. У любого прогера, если он растёт, есть не преодалимое желание даже через год, переписать свой код с нуля. У меня по крайней мере так.
RaFaeL-NN
То желание, а то необходимость
Nashev
Не путайте детские болячки с нормой профессиональной деятельности
dididididi
95 процентов написанного по не используется. Фича не нужна или редко кем используется, стартап не взлетел и т. д. У меня вот достаточно пытливо думаю, чтоб допытать до этой стадии.
trueMoRoZ
Только порой бывает, сколько бизнесу про это не рассказывай — он никак понять не может)
vdudouyt
Ну конкретно по моему опыту так очень хорошо себя зарекомендовал такой подход, как:
1. Получаем бизнес требования
2. Проводим первичную разработку занимая технический долг при необходимости, попутно собирая требования к будущей архитектуре
3. Проводим рефакторинг
Как показывает практика, при хоть сколь-либо грамотном управлении техническим долгом убыток от его обслуживания на шаге 3 во много раз меньше, чем ущерб от формирования архитектуры с пока еще малопонятными требованиями и её дальнейшей поддержки. Хотя пацанам, конечно, такое и действительно не покажешь.
HeTpe3B
Если пацаны в курсе шага 3, то норм)
solariserj
Самое смешное, Да, бизнесу это не надо. ?Точнее «пока» не надо.
Но потом у этого же бизнеса начнутся вопросы, а почему ты не знаешь этот фрэймворк, почему ты не используешь эту технологию, и тд
uvelichitel
©Linus Benedict Torvalds
IvanBulb
Надо разобраться как зарабатывать на своем уме деньги
А не быть станком)))
Пытливый ум маловато будет — надо приложить правильно
0xd34df00d
Зарабатывать, зарабатывать, деньги… Самореализацию на этом не построишь.
Irgen
Без денег, что характерно, тоже
chapuza
Ерунда. В мире вокруг полно? примеров людей, самореализовавшихся и вполне состоятельных в личностном плане, живущих на грани нищеты (ну, Перельман, чтобы далеко за примерами не ходить).
Деньги помогают самореализации только если жизненная цель — заработать денег. Она далеко не у всех такова, что предыдущий оратор и подметил.
konraddd
Плюс поставить прав не хватает, поэтому поддержу словами.
«Пытливый ум» это хорошо примерно как сытый конь в сферическом вакууме: взрослые люди любят говорить на презентациях «МЫ делаем Мир лучше», однако только одарёные дополнительными хромосомами не понимают что это лож. Современный Мир это лож.
Всем мы (ну минимум 98% из нас) каждый день ходим на работу не ради крутых алгоритмов и классных приложений, а ради ДЕНЕГ, чтобы не сдохнуть от холода/голода/дерессии и т.д.
И нет ничего хуже, чем ковыряться в чужом
поносекоде, пытаясь понять «чойта оно не делает то что в документации обещано»… Система общественного образования натаскивает нашего брата на самопожертвования, и материальные (своё время), и моральные (подстраиваться под обстоятельства: учителя в школе, препода в вузе, тимлида на работе, разрабов фреймворка, который тимлид однажды, прокалив собственный пукан, раскурил и теперь, идя на поводу у психологической защиты, иконизирует как «отличный инструмент, который НАДО уметь использовать и использовать»)… это грязное рабство, интеллектуальное рабство: мы считаем себя «достойными» именно этого, а не чего-то другого… мы привыкаем что если во рту нет привкусад*рьмапота и крови, то значит мы плохо себя реализуем, занимаемся «ненастоящей» работой… и слепо верим что однажды, наконец-то, доберёмся до вершины это гранитной горы мастерствааутофелляциииспользования «крутого» инструмента и заживём лучше всех. Мысль о том что есть жизнь и без страданий, прямо здесь и сейчас, надо только шаг в торону сделать — нас не посещает, на неё табу.А всё почему? Потому что деньги у тупых недалёких людей, которые платят за «здесь и сейчас, да так же как у всех», а не за элегантные и эффективные решения (в том числе будущих) задач.
Психологи говорят, что если работа вас угнетает — надо с неё уходить. А куда? Проблема-то не в отдельно взятых людях, а сложившимся обществе — обществе, которое выросло в гонке за звёздами, плевать что там под ногами/позади/вокруг — азарт он таков, отключает критическое мышление. Каждый хочешь жить быть владельцем IBM/Apple/MS. Каждый живёт только ради себя, никого не волнуют остальные… и колесо сансары (в философском смысле, а не религиозном) в его узкую точку зрения просто не помещается.
Сорян за лирику — накипело, но суть, надеюсь, сможете уловить.
Добра всем.
waxtah
Можно заменить на «делай на совесть или не делай совсем».
Arris
Репу на гитхабе, например.