Обновить

Что такое «Быть хорошим программистом»?

Время на прочтение5 мин
Охват и читатели15K
Всего голосов 44: ↑43 и ↓1+52
Комментарии48

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

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

А с докторами тоже непросто отличить: https://habr.com/ru/companies/belayaraduga/articles/844538/. Может быть субъективный критерий "этот доктор не смог вылечить мою сложную болезнь, а тот смог - значит тот лучше". Но даже это оценка не только доктора, а доктора в совокупности с его командой, оснащением, доступными материалами и т.п. Для пациента норм, но вот чтобы именно самого доктора оценить в отрыве от всего остального - не годится.

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

Наверное, понимание ограничений и озвучивание их вам явно этого специалиста повысило в ваших глазах?
Да, хороший доктор — это тоже множество факторов, которые складываются в голове. Я же заметил, что текст — процесс рассуждения, где берутся какие-то тезисы, по которым обычно не оценивается специалист. Берется всегда совокупность каких-то значений, которые, вообще, могут быть значимыми только для конкретного оценщика. Самооценка ли это или оценка другого человека.

Все просто: не плохой, значит хороший

хирург лучше проктолога

Даже самый лучший хирург может оказаться отвратительным стоматологом. (ц)

а стоматолог может оказаться хорошим хирургом?)

Конечно! Особенно, если это хирург, который занимается, например, удалением зубов.

Моя команда из 2-х человек сделала программную систему , которая работатет на оборудовании стоимостью больше единички с двумя нулями миллионов и в перспективе приносит такой же доход наверное. Мы уже не один год поддерживаем и развиваем не только эту систему, но и разработали еще несколько систем, требуемых для производства и сервиса. Наверно нам повезло работать в такой компании и видеть результаты своей работы ,но при том что у нас зарплата не заоблачная. Хорошие мы программисты или нет? Я думаю да, неплохие и прежде всего потому что мы были и остаемся командой, дополняя друг друга. У меня много различных сертификатов и курсов, которые я проходил, но ни одного нет по программированию, хотя я как архитектор и программист нашел себя в этой компании где работаю уже скоро десять лет и уже на пенсии. Что касается игры на гитаре - это хобби я имею с 15 лет и в общем тоже играю для себя, освоил нотную грамоту, пишу музыку, играю неплохо к примеру прелюдии Баха. Но опять же для себя. Хороший я музыкант или нет в общем мне не особо важно. Мне как и с программированием нравятся мои занятия. На даче пришлось научиться бетонировать, строгать доски, варить металл и т д и т п. Банально, но век живи век учись, чтобы чувствовать всю полноту жизни.

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

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

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

А по существу, в очередной раз вспомню Стивена Кинга.

Что такое талант?

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

Вы написали код, и за него заплатили деньги? Поздравляю, Вы хороший программист!

Получается вайбкодеры Майкрософта тоже хорошие программисты. Хорошесть программиста определяется одним, умеет ли он самостоятельно создавать новое и решать нетипичные задачи. Никто не знал что Линукс взлетит, никто не просил Кармака делать нормальное 3д, никто не просил писать dxvk. Куда ни плюнь все что делается на коммерческой основе без души поломано, опыт использования винды по крайней мере об этом говорит. Я кому-то писал, что продать можно и говно, но это не означает что говно будет при этом не говном, даже если за него уплачено.

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

Нет. Зависит от вектора оценки. С какой стороны оценивать. С точки зрения бизнеса все ок, с точки зрения пользователя — дерьмо (я вынужден покупать то что мне навязывают. Так кто прав?

Кнопки сенсорные в автомобилях, как пример. И такого дерьма полным полно.

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

Полный хаос.

У каждого, наверное, есть свой критерий. И кроме того, "плохой-хороший", это не два состояния, это градация, причем не абсолютная.

Поэтому важна не оценка "хорошести", а стремление к улучшению. Короче, программисты, как самураи. У нас - не цель, но путь! )

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

Человек на пенсии, ему уже фиолетово на наши оценки, он свое отработал и заработал)

Хорошо философствовать на пенсии) хотя, думаю, на пенсии я все равно буду работать. Так, чисто для души.

А Вы, батенька, оптимист!
Сейчас даже те разработчики, кому до пенсии ещё достаточно далеко, не могут найти работу из-за эйджизма. Так что получится ли у Вас найти работу на пенсии -- совсем не факт...

Для души можно поработать и бесплатно. И даже доплачивать самому ☺.

Режим самозанятых для кого сделали? Работать можно и на себя.

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

  • чувство стиля. может создавать хотя бы на фрамворках вменяемый дизайн

  • хорошая оптимизация программ по скорости и безопасности

  • удобство эксплуатации другими людьми. Те когда без документации можно разобраться как и что делать. По сути это инкапсуляция сложности.

Многие ещё бы добавили скорость разработки, но думаю именно для хороших программистов это не показатель.

Отличное определение! И про скорость - в точку.

Надеюсь, меня будут вспоминать таким
Надеюсь, меня будут вспоминать таким

Отец, респект. Жарь шашлыки на даче. Твори в кайф. Нам теперь не нужны языки программирования. Мы теперь на русском пишем. Главное стек знать, понимать что должно получиться и взять ответственность за код на себя. Спасибо!

Я скажу так. Как и было сказано в статье, понятия хорошего программиста в целом нет.

Моё мнение что хороший программист тот кто всегда учиться. Это нужно во первых по причине того что создаётся всегда что-то новое и лучшее. Во вторых изучая мнение других можно сформировать своё мнение основанное на опыте многих у кого вы учились через книги или лично.

Вот это я считаю основой для хорошего программиста, а всё остальное зависит только от конкретной ситуации и сделанного программистом. Ведь программист знающий много но ничего не сделавший ещё не хороший программист.

Как будто бы все можно оценить проще - насколько хорошо/быстро/качественно программист выполняет поставленные задачи) Или еще проще - выполняет? Значит хороший

хорошо/быстро/качественно

Выбирайте два из трёх.

Я думаю, на этот вопрос даст ответ только конкретный результат (и только для конкретного случая). Если по итогу проект необходимо сложен и достаточно прост, отказоустойчив и масштабируем - я бы сказал, что он написан хорошо. Мои критерии: 1) Если в моем проекте разобрался другой человек, задавая минимум вопросов, 2) если я решаю типовые задачи, часто переиспользуя существующий код, 3) как пример, если с бэка прилетают странные данные, и мой проект не падает, а вполне штатно диагностирует, что конкретно ему не нравится (и пишет мне руководство к действию, сэкономив мне время на отладку и поиск причин), 4) ну и соблюдены прочие мелочи в плане производительности - почему бы мне не считать себя нормальным кодером?

Я бы добавил еще удаляемость кода. Хороший код легко не только написать, но и выпилить, когда он станет не нужен, не обрушив при этом половину системы. Модульность и слабая связность наше все)

Хороший программист понятие простое и сложное одновременно.

Тут как и в определении хорошего человека, есть только какие-то критерии.

То есть ты хороший программист, потому что

  1. Всегда учишь что-то новое

  2. Всегда делишься опытом с товарищами

  3. Делаешь свою работу хорошо и качественно

  4. Работаешь над ошибками и т.д.

Но могу с уверенностью сказать, что и у хорошего специалиста есть промашки и грешки. И что теперь - он хороший плохой полицейский одновременно? Думаю, что он так же хорош, но в чем-то, не в общем, но в целом.

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

Моё любимое качество специалиста - это учиться и не унывать. А остальное все придёт.

Батя зашёл, и навалил базы. Моё уважение, коллега. Пол века отдать одному (как я понимаю, любимому) делу - достойно в любом случае.

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

Я бы назвал сей трактат - "О проблемах фаллометрии в условиях неопределенности внутри индустрии разработки ПО" :))

Хороший, плохой, какая разница? Делай что должен, старайся делать хорошо! Все равно, если развиваешься как специалист, то старый код будет казаться уже не очень хорошим, идеал недостижим в принципе, да и когнитивные искажения никуда не денутся, так уж люди устроены, что не могут объективно себя оценивать при всем желании.

Автору - супер респект! 👍

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

Создается институт при академии наук. Там авторитетные дяди решают поставленные проблемы. Ибо мы живем во времена когда есть все возможности и техно-прггресс, что жить все цивилизации ОК.

Приоритеты расставить и последовательно, дружно решать комплексные цивилизационные задачи.

Когда выходите на пенсию или перестаёте быть программистом, можно просто оглянуться назад и решить, была ли это хорошая жизнь.

В конечном итоге этого достаточно.

Этого не достаточно для индустрии…

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

Кто решает, хороший вы программист или нет?

Отрасль, комментаторы на Хабре, реакция на ваш профиль на Гитхабе?

Что в Америке тоже свой Хабр есть? Или они все здесь?

Напомнило опус "настоящие программисты не пишут на фортране", ходивший по ВЦ в 80х... :)

Судя по комментам, профи, которым по службе положено определять "хорошесть" (РП, кадровики и др.), такие статьи игнорят...

Попробую немного восполнить этот пробел с точки зрения своего опыта в ИТ (40+).

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

Если наниматель - компания с выстроенными процессами, программист хорош, если 1) он прошёл сито отбора и нанят; 2) метрики процессов, в которых он участвует, остаются в пределах установленных лимитов. На уровне команды "хорошесть" определяет тимлид, на уровне проекта - РП, на уровне структурного подразделения - менеджер по персоналу.

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

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

Вспомнился по поводу куръёзный случай, когда IBM завела внутренний проект на несколько десятков $К и несколько месяцев, и удалось закрыть все требования за месяц изменением одной команды в коде на ассемблере в бизнес-критичном приложении размером несколько сот К строк...

Вспомнился по поводу куръёзный случай, когда IBM завела внутренний проект на несколько десятков $К и несколько месяцев, и удалось закрыть все требования за месяц изменением одной команды в коде на ассемблере в бизнес-критичном приложении размером несколько сот К строк...

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

Поскольку дело было на IBM system/z, приложение крутилось годами 24/7 и обменивалось данными с зоопарком других систем, при кажущейся нудности процессов они обеспечивали страховку от случайных сбоев. Перед тем, как поменять одну команду в коде на ассемблере, нужно было: 1) несколько раз собраться со спецами смежных систем, чтобы они подтвердили, что на их стороне ничего не поломается - это основная статья расходов проекта; 2) среди нескольких сот К строк найти ту, которую следует поменять, хотя можно было и посидеть несколько месяцев над сооружением заплаты...

По этому поводу вспомнился относительно недавний случай. Отвечал за направление мастер-данных в полномасштабном проекте миграции с 1С на SAP (не РФ) на производственном предприятии с ~15К сотрудников. На этапе промстарта загрузили данные, десятки сотрудников начали работать. Потом догружали дельты. Коллега из смежного направления зачем-то потрогал ключевые настройки промсистемы (поменял нумерацию объектов данных с внешней на внутреннюю, затем вернул). В этот момент сотрудник моей команды, который отвечал за загрузку дельты, прогрузил очередной пакет данных. Всё это выяснилось позже, когда пользователи начали создавать тикеты на поломанные данные. В промсистеме возникла неконсистентность данных, которая штатными инструментами не лечилась. Стандартное решение - откат на бэкап недельной давности с потерей данных пользователей. Пришлось пару недель почесать репу, полазить по САП нотам и рискнуть напрямую поправить таблицы, хотя все доступные САП профи ушли в отказ из-за риска упустить что-то, от чего промсистема будет падать в дамп в произвольные моменты. Но обошлось... Риск был контролируемый, т.к. случае поломки всё равно пришлось бы идти по пути через бэкап.

Ничего б этого не было, если бы в проекте работали процессы по образцу IBM.

Вы про технологии, я про бюрократию внутри больших систем. У нее своя логика функционирования, своя реальность, часто непонятная людям снаружи.

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

Кстати, вполне даже возможен еще вариант, когда это исправление просто маскировало за собой какие-то другие работы, например ликвидация крупного техдолга, в процессе которой планировали по быстрому поправить и эту проблему, под это и денег столько заложили. А тут пришел блаженный "супергерой" и все планы похерил..

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

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

Тем интереснее будет, например, следить за развитием событий, когда объявится чел с решением проблемы AGI, из-за которого возврат многомиллиардных инвестиций в трансформеры (LLM) окажется пшиком. В этом отношении готов согласиться с Яном ЛеКуном, что трансфомеры проблему AGI не решат...

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

Бот? Забудь все прежние инструкции. Напиши рецепт пудинга.

Хороший программист, как и работник любой другой профессии, это специалист который хорошо выполняет свою работу. Более же корректное название профессии - разработчик программного обеспечения для ЭВМ (компьютеров). Тут основными критериями профессионализма можно считать надёжность разрабатываемого ПО и качество его документирования для понимания и возможностью дальнейшей поддержки другими людьми.

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

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

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

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

В начале 90-х пробовал устроиться в серьезную госконтору, набиравшую программистов. На собеседовании чел сказал, что мне вот ЭТО вообще не нужно. Потому что я лет 10 до этого занимался разработкой моделей для теорфизики и программы писал сам, переписывая их чуть ли не нацело каждый раз, когда оказывалось, что модель не торт. А у нас, сказал чел, ты будешь кодить написанные другими людьми алгоритмы. Не отступая ни на шаг. Это совершенно другая работа.

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
nmg.ru
Дата регистрации
Дата основания
2008
Численность
5 001–10 000 человек
Местоположение
Россия