Pull to refresh

Когда о человеке можно сказать, что он стал программистом

Reading time8 min
Views22K

Навеяно статьёй с тем же названием.

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

Первый вариант - "я сам"

Вопрос в этом варианте звучит так: «Когда я смог сказать, что стал программистом?».

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

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

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

Второй вариант - "ближайшее окружение"

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

Можно попробовать поискать ответы для обособленных групп, скажем, для одноклассников, при условии, что сам человек уже смог определить себя как «программиста» по одному из определений, разделяемых, хотя бы частично, одноклассниками. Вариантов ответа все равно будет спектр, начиная от «когда ты взломал игрушку на бесконечные жизни», даже если это был POKE 32 891,0, вычитанный из книги «300 игр для ZX Spectrum», до условного «когда ты мне дал списать на информатике, и я пятерку получил» или «когда ты показал мне, как рисовать линии на компьютере».

Для родственников, в частности, родителей, владеющих куда большим объемом данных о субъекте, может существовать более детерминированный критерий. Увлечение ребенка компьютерами бывает в разных формах, вплоть до залипания в каких‑то играх без видимой пользы (для родителей), и не всегда из увлекающихся компьютерами, да даже и «айти», получаются программисты. Таким образом, в качестве «вехи становления программистом» может выступать какое‑то достижение ребенка, которое родители относят к программированию в том смысле, в котором они это понимают. Это может быть и то, что отпрыск поделился впечатлениями от игры на МК-54, которую он успешно прошел или вообще «взломал», и победа (или участие) в каком‑то конкурсе в школе, институте или на работе (мало ли!), где нужно было что‑то алгоритмически решить, или дошедшее до них мнение учителей, одноклассников, ещё кого‑либо, что «ваш ребенок такой умный, он мне комп починил двумя пальцами!» и тому подобное. В том числе и помощь родителям в чем‑то с использованием компьютера. Обычно такие вехи становления запоминаются в семье, и потом являются поводом для хвастовства во внешнем кругу, и становятся известны и используемы самим человеком — если его собственный «фазовый переход» не произошел раньше.

Для работодателя, как отдельного человека в окружении программиста, чаще всего ответом будет «когда я о тебе узнал как о программисте». Если человек нанимается компанией‑разработчиком ПО, он априори считается программистом, неважно даже, на какой позиции — ни архитектор, ни тимлид, ни тестировщик, на QA, ни даже UI‑дизайнер не сможет нормально работать, если не будет хотя бы понимать в программировании, чего по мнению работодателя может быть достаточно, чтобы назвать человека программистом. Если деятельность человека напрямую не связана с программированием, подобное узнавание может произойти и позже. Например, оператор станков с ЧПУ может быть программистом, а может и не быть, смотря по тому, как он управляется со своим инструментом. Мой отец в этом плане программистом был, я помню, как он заявлял «эти программисты при написании программы обработки не учитывают крепеж детали, приходится переделывать». В то же время некоторые его коллеги на заводе так не умели, а возможно, и не хотели уметь, отчего программистами не считались. Какой‑нибудь завсклад, желающий облегчить себе работу, может написать какую‑то автоматизацию учета помимо той, что ведется в организации, или дополнить её какой‑то метрикой, и это может стать точкой отсчета для его начальства расценивать его как программиста. Или модное сейчас движение «войти вайти», прихватившее работника откуда попало и мотивировавшее его «стать программистом» в каком‑либо смысле, с заметным для его работодателя эффектом (в том числе увольнением для поиска работы по новой специальности) также может породить изменение отношения к нему.

Третий вариант - "посторонний"

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

Вот к этому варианту подходит большинство ответов из комментариев к исходной статье. «Когда он первый раз (implicit) начал работать программистом», «когда получил „программист“ в диплом», «когда его программа стала известной», и т. д. Здесь нет однозначно правильного ответа, мало того, люди, в отношении которых задается подобный вопрос, могут и слова‑то такого не знать — «программист» (была ли Ада Лавлейс программистом? Мой ответ — да, но самого понятия тогда могло не существовать), к части людей может быть неприменим любой из вариантов «общепринятого» ответа, вплоть до всех, кроме одного — если неприменимы все, то его программистом ещё не начали называть, некоторые персоны вообще могут быть виртуальными (привет, Алиса) и в то же время писать код (привет, ЧатГПТ‑бот), и так далее, поэтому в качестве «универсального» ответа предлагаю взять обобщенное ИЛИ на подмножество «элементарных» ответов из этого набора, с которыми согласны лично вы.

Комментарии к ответам, приведенным в самой статье

Вообще говоря, ответы, приведенные в изначальной статье, содержат в скрытой форме дополнительные классификаторы типа «хороший», определенные говорящим. Даже первый ответ «Когда он способен абстрагироваться от инструментов» уже содержит такой классификатор. Многие программисты, особенно для платформ, стесненных в ресурсах, не могут абстрагироваться от своей платформы, а инструмент у них в целом единственный — машинные коды или ассемблер для конкретной железки, плюс транслятор с Си‑подобного языка (или просто с Си с расширениями под платформу), потому что более «навороченный» код с абстракциями не сможет вместиться в его оперативную память. И если кто‑то скажет, что это не программисты, я ему скажу, что он глубоко неправ.

Из спектра ответов выделяется шестой, на который многие комментаторы указали: «Когда он понимает принцип действия операторов if, then, else в сочетании с циклами for и так далее». В сущности, этот ответ означает «когда человек понимает принципы в алгоритмах и способен их перенести в код». По мне, более точным был бы вариант «когда человек умеет алгоритмически мыслить». Просто преобразовать жестко заданный алгоритм в код уже и нейросеть умеет, а концепция RSL, если кто помнит, заключалась (для меня, когда его у нас проходили) в задании алгоритма в виде блок‑схемы, что просто снимало требования на знание языка программирования, но в явном виде требовало понимание блок‑схем как средства записи алгоритмов. И вот такой ответ больше похож на универсальный и объективный, и может подойти в качестве критерия необходимости для определения, является ли человек программистом, и в его собственной ретроспективе, когда он им стал.

А когда человек перестает быть программистом?

Когда умирает. И то это не точно.

Tags:
Hubs:
Total votes 9: ↑6 and ↓3+3
Comments25

Articles