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

Конечно, мой переход был более длительным, более окольным и менее драматичным (или захватывающим) путешествием, чем у некоторых других, которые проходят через подобные иммерсивные программы программирования; во-первых, я всегда знал, что хочу быть инженером — я просто не знал, каким именно — и в итоге я прошел традиционную 4-летнюю программу бакалавриата в области машиностроения, за которой последовала 2-летняя программа магистратуры в области машиностроения. биомедицинская инженерия). Еще до этого я поднял верхушку айсберга Java в старших классах в самостоятельном исследовании (акцент на самостоятельном: в моей школе не было инструкторов по CS, и мне просто дали учебник с наборами задач), и в то время как я изучил основы манипулирования массивами, я действительно не понимал, что делаю: я просто научился запускать любую данную программу с public static void main (String args[]) и размещать хорошие вещи (если вы можете назвать основные манипуляции с массивами «хорошими вещами») между фигурные скобки, которые следовали. Один обязательный курс CS, который я проходил в колледже, был полной дремотой и оставил меня таким же опустошенным, без какого-либо реального понимания того, что я мог делать с C++ или что такое объектно-ориентированное программирование. Для меня программирование было бестолковой, нишевой дисциплиной, в которую глубоко вникали несколько добросовестных ботаников, но большинство могло игнорировать ее.

Только спустя большую часть десятилетия я действительно осознал силу кода. Я бросил аспирантуру, чтобы присоединиться к стартапу в области 3D-печати, области, идеально подходящей для того, чтобы показать инженерам-механикам, насколько неуклюжими являются продукты их дисциплины. Именно там я открыл для себя полезность микроконтроллеров с открытым исходным кодом, которые преобразовывали инструкции программного обеспечения в физические действия, плавя пластик и помещая его на место для изготовления нестандартных деталей, которые существовали в реальном мире. Вещи, которые требовали часов тщательной работы и терпеливой настройки, можно было абстрагировать в несколько строк кода, и действительно часто казалось, что отдел программного обеспечения в этой компании бегает кругами вокруг механического отдела. Недоверчивый и заинтригованный, я попробовал свои силы во взломе этих программно-аппаратных интерфейсов, и использование кода для решения проблем оказалось настолько эффективным, что это было похоже на жульничество. Увлекшись, в свободное время я создал и написал код для всего: от напечатанного на 3D-принтере ожерелья с мигающей медузой до хака с садовым таймером, который включал функцию задержки дождя, если API прогнозировал дождь до конских хвостов, которые двигались, как ну, конские хвосты.

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

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

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

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