Кто же такой хороший программист?

17.01.20

Сообщество - О жизни

Ответ на публикацию. https://infostart.ru/public/1178624/ В статье я рассмотрю работу программиста с разных точек зрения и попытаюсь вывести критерии "хорошего программиста".

Определения

Перед тем как определять хорошего программиста, Стоит дать определение просто программисту. В самом простом случае

Программист - человек, который пишет код.

Оценка - понятие субъективное, поэтому надо определить субъекты, которые будут проводить оценку. Знакомьтесь:

  1. Пользователь - человек, который работает с программой. Ему важно чтобы программа работала быстро, не глючила, делала то, чего он от неё ждёт.
  2. Программист. Ему важно, чтобы код программы был читаемым, красивым, легко и быстро изменялся. Что такое красивый код – тема для отдельной статьи.
  3. Заказчик – человек, который платит программисту деньги. Естественно деньги он платит не просто так, а за работающую программу. Работающая программа ему нужна для решения какой-либо бизнес-задачи. Решение бизнес-задачи позволит ему либо зарабатывать больше, либо тратить меньше. В реальном мире бывает, что заказчик преследует другие цели. Такие заказчики к теме статьи так же не относятся.

Осталось определить, что такое хорошо. В общем случае это большой философский вопрос. В случае субъективной оценки

Хорошее – то, что соответствует системе ценностей субъекта.

С понятиями разобрались, теперь можно переходить к оценке.

Пользователь

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

Программист

У программиста есть задача. Он хочет её решить. Решение задачи помимо денег приносит программисту моральное удовлетворение от процесса. Программиста, как и большинство людей, раздражает то, что стоит на его пути к удовольствиям. Непонятный код – одна из таких вещей. Кроме задачи у программиста есть чувство прекрасного. Он смотрит на отступы, на названия переменных, пытается понять алгоритм. Если в процессе переписывания кода программист получил удовольствие, код считается хорошим. Значит и программист, который его написал, тоже хороший.

Заказчик

В случае 1С заказчик, как правило, бизнесмен. Бизнесмен любит деньги. Он любит получать деньги и не любит терять деньги. Причём он настолько не любит терять деньги, что готов платить другим людям, чтобы этого избежать. В трудовом кодексе это называется «заработной платой». Бизнесмены тоже люди. У них тоже есть чувство прекрасного. За удовлетворение этого чувства они тоже готовы платить зарплату. Для бизнесмена хороший программист тот, кто поможет ему «делать деньги» за наименьшую зарплату, при этом удовлетворять его чувство прекрасного.

В поисках баланса или как не продать душу дьяволу.

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

Хороший программист помогает заказчику делать деньги максимально дёшево. 

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

Хороший программист сам заботится о том, чтобы писать хороший код.

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

Заключение

Критерии получились абстрактными, но это описание некого идеала от обычного неидеального парня. Стремиться ли к нему и каким путём – личный выбор каждого. Я всё сказал.

Программист

См. также.

О жизни Россия Бесплатно (free)

Подводим итоги работы в 1С за 2023 год. Все о вас: 4 подробных раздела с цифрами, графиками и ужасными цветами диаграмм (должна же где-то быть стабильность).

08.02.2024    24271    Neti    85    

116

Личная эффективность Бесплатно (free)

Нам с детства постоянно твердят, что книга – лучший друг, книга – лучший подарок, книга – вообще лучшая вещь в мире. Да, это действительно так. Книги явно и значительно влияют на нашу работу, карьеру и жизнь. О том, как правильно читать книгу, как книга вообще влияет на человека, и главное: зачем вообще читать эти книги программисту, сисадмину, аналитику, расскажем в статье.

31.01.2024    3341    0    a_a_burlakov    25    

47

О жизни Бесплатно (free)

В процессе написания статей на тему Идеальное место работы ЗУПера нужен аргументированный текст про адекватного работодателя. Информации получилось много, поэтому выделю в отдельные 2 статьи. Рассмотрим все недостатки работодателей от момента собеседования до момента увольнения. Все этапы, как всегда, подкреплены реальными случаями из моего опыта.

22.01.2024    4363    biimmap    67    

72

О жизни Конфигурации 1cv8 Бесплатно (free)

В процессе написания статей на тему Идеальное место работы ЗУПера нужен аргументированный текст про адекватного работодателя. Информации получилось много, поэтому выделю в отдельные 2 статьи. Рассмотрим все недостатки работодателей от момента собеседования до момента увольнения. Все этапы, как всегда, подкреплены реальными случаями из моего опыта.

16.01.2024    5768    biimmap    99    

79

О жизни Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Импортозамещение увеличило потребность в архитекторах, аналитиках, разработчиках 1С, в т.ч. по ЗУП. Все их ищут всеми возможными способами, но не могут найти и не знают, чем же их завлечь к себе!? Давайте разберёмся в этом вопросе!

27.11.2023    4742    biimmap    52    

73

О жизни Сообщество Бесплатно (free)

Прочитав название публикации, мысль возникает о свадьбе... Но речь не об этом!

25.08.2023    2726    biimmap    24    

51

О жизни Россия Бесплатно (free)

«Многие кандидаты хотят от собеседования простую вещь: чтобы оно длилось пять минут и брали сразу на 300 000 в наносекунду», — Эльдар Мингалиев, разрабатывает новые форматы собеседований.

22.08.2023    14467    Neti    161    

108
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 17.01.20 10:40 Сейчас в теме
занудно, банально, некрасиво.

последнее потому что рассказывать второй раз один и то же анекдот это бу.
acanta; TODD22; +2 2 Ответить
2. DoctorRoza 17.01.20 11:32 Сейчас в теме
За что плюсуют статью?
rudnitskij; t278; +2 1 Ответить
3. user1274438 17.01.20 11:37 Сейчас в теме
(2) Тут в принципе куча людей, плюсующих все подряд. Смысла в этом никакого.
4. user1293011 17.01.20 15:54 Сейчас в теме
"хороший программист" для кого? для работодателя, или для сотрудников, или для..
5. kolya_tlt 86 17.01.20 16:16 Сейчас в теме
видимо что-то хотел положить в стол, а места не оказалось свободного
6. ovasiliev 6 18.01.20 07:53 Сейчас в теме
У автора статьи определённо есть чувство прекрасного. И понимание внутренних ресурсов созидания.
7. stepan_s 20.01.20 07:31 Сейчас в теме
Интересные размышления о подходах....
Естественно деньги один из главных мативаторов, но есть разумный профессиональный подход.
Любой кто накропает буковки в коде мнит себя программистом.
Но хороший программист как снайпер (стреляет только тогда когда 99,99% уверенность в результате).
Очень сомневаюсь что обращаемся к тем специалистам, которые делают по нашей указке, мы обращаемся за результатом и не настаиваем например стоматологу как пломбу ставить, даже если хоца подешевле и побыстрее.
Все сначала обсуждаем (причем тоже платим спецу чтоб он посмотрел и придумал как) и потом ...
Если нас цена устраивает - говорим делать....
Поэтому хороший программист это совсем не кропатель буковок.
Это комплекс компетенций, в т.ч. не позволять идти на поводу технологии с "отложенными технологическими обязательствами".
9. Liogon 8 20.01.20 19:08 Сейчас в теме
(7)
Но хороший программист как снайпер (стреляет только тогда когда 99,99% уверенность в результате).

Опытные адвокаты пользуются этим же правилом и просто не берут провальные дела. После определённого процента успешных дел, их репутация говорит сама за себя. Но у адвокатов и критерий успешности намного проще. Либо да, либо нет. А что считать успехом у программиста? Если мой быстронаписанный код неплохо себя ведёт при 50 пользователях (обговорённых при постановке), но ломается на 500 это неуспех? Компетентный заказчик разность условий понимает, некомпетентный придёт с претензией "что за ерунду ты сделал". Убедить его в том, что он не прав - наука, но от прикладного программирования очень далёкая. Для меня это уже какое-то "хакерство". Тоже комплекс компетенций, но требующий совсем другого способа мышления.
11. stepan_s 21.01.20 03:38 Сейчас в теме
(9)Успехом программиста можно как и у адвоката считать как часто один и тот же заказчик по одному и тому же вопросу обращается :) к адвокатам
Естественно стремление к минимуму :) (исключение из правила, только подтверждает правило)
Компетентный заказчик в постановке задач? Тогда программист становится "кодером" и общепринятую компетенцию "знание бизнес процесса" (по сути за которую и платят программистам 1С - т.к. они на одном языке с бизнесом могут говорить :) ) перекладывает на плечи заказчика. По сути конечно во многих других средах автоматизации так и есть: там отдельно бизнес анализ, отдельно ТЗ, отдельно код, отдельно тестирование.....
Но Сами знаете что в 1С зачастую это ожидают в одном специалисте, его часто зовут "программист 1С".
А убеждать заказчика что он сам придумал ересь, это по моему скромному разумению уже борьба со следствием, а это следствие (результат общей некомпетентности заказчика и исполнителя) при постановке задачи...
Что то сделали не так, раз спрогнозированная модель не совпала с ожидаемой.
Естественно это не единственное жизненное правило, бывают и заказчики экстремисты, и хакеры-программисты. Но в моем опыте пока обе стороны не начинают относится к результату процесса выполнения задачи по принципу "выиграл-выиграл" результат не будет 100% успешным.
8. maxx 994 20.01.20 10:20 Сейчас в теме
Добавлю
Хороший программист - это чувствующий цель выполняемой задачи, принимающий решения по задаче в зависимости от того , сколько ему дали ресурсов (временных, денежных), сомневающийся в корректности всех входящих данных и предлагающий лучшее решение. Но обычно эти все функции разделены - между менеджером, аналитиком, архитектором и кодером.
stepan_s; Liogon; +2 Ответить
10. Liogon 8 20.01.20 19:30 Сейчас в теме
(8) Чем выше уровень задачи, тем сложнее совмещать эти компетенции в пределах одного человека и придётся что-то выбирать. И что получается, что с какого-то момента "хороший программист" - это команда. А на серьёзном уровне проектов нужно говорить о хорошем кодере, хорошем архитекторе и т.д. ?
12. stepan_s 21.01.20 03:44 Сейчас в теме
(10) На самом деле в управлении проектами есть понятие "роль". Так вот эти роли распределяются между участниками проекта.
Нет обязательной корреляции между участниками и ролями. Хороший РП всегда может в себе совместить роли, может распределить одну роль между несколькими специалистами.
Но наверное единственно роль самого РП нельзя разделить между специалистами :)
И очень похоже что на малых задачах просто все роли проекта сконцентрированы в одном специалисте :)
13. dodlez77 21.01.20 09:53 Сейчас в теме
прочитал обе статьи. Первая это все таки сферический конь в вакууме, выдранные из контекста описания актов вызывают полное не понимание автора. С автором этой статьи, пожалуй, соглашусь. В таком контексте вопрос определения хорошо или плохо очень философский и рассматривать его надо для каждого частного случая, а никак не в общем.
14. rudnitskij 25.01.20 22:50 Сейчас в теме
(13)Так данный автор просто изложил условие задачи, стоящей при разработке решения. Никаких рекомендаций он не озвучил. Даже своего мнения там нет.
Не знаю, с чем тут соглашаться...
15. acanta 25.01.20 23:04 Сейчас в теме
(14) думаю с тем, является ли программист в басне о лебеди, раке и щуке телегой или все таки это нечто одушевленное.
В случае с телегой проблема может быть разве что с заменой колеса и смазкой ступицы.
Второй случай немного сложнее. Врачу доверять надо.
https://youtu.be/_DN2mrHnJxo
16. acanta 26.01.20 00:09 Сейчас в теме
Есть еще третий вариант. Но к нам он не относится.
https://youtu.be/hn6_SBjIrV8
Оставьте свое сообщение