Давайте сведем множество форм программирования к их основным типам

Я из тех парней, которые не могут уснуть, если не привели вселенную вокруг себя в некое подобие порядка, и всего 2 недели назад я наткнулся на этот вопрос от студента на одном из наших буткемпов по веб-разработке. : Сколько существует типов разработчиков?

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

Я спросил себя, сколько существует типов разработчиков, но в смысле сколько основных подходов к искусству программирования существует?

Я даже не собираюсь претендовать на то, чтобы ответить на вопрос, для ответа на который потребуются десятилетия опыта работы в технологической отрасли плюс солидная база в области когнитивной психологии (или чего-то подобного — понимаете, я даже не знаю, какой курс выбрать). ).

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

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

Бизнес-разработчик

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

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

Я не думаю, что талант к практическим вещам обязательно является чем-то врожденным, и я почти уверен, что бизнес-разработчики могут формироваться (и часто бывают) на основе опыта. Вот почему у них нет «естественной среды обитания» в технологической индустрии, хотя не нужно быть рыночным аналитиком, чтобы понять, что они будут на вес золота для любого стартапа.

Интересно, что бизнес-разработчики часто не идентифицируют себя как таковые — возможно, потому, что ожидается, что «настоящие» разработчики (клише ahoy) будут действовать исключительно в сфере чистой мысли и абстрактных форм.

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

Мимик

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

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

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

Глубокий мыслитель

Если вы когда-нибудь встречали кого-то, кто «естественно подходил» для программирования, то он, вероятно, был одним из этих чудаков.

Это тип разработчиков, для которых основная часть работы выполняется вдали от консоли, когда они сидят тихо и не смотрят ни на что конкретное. Фактическое написание части кода является если не совсем второстепенным, то, по крайней мере, само собой разумеющимся, и есть что-то действительно внушающее благоговейный трепет в том, чтобы наблюдать, как они записывают функции и переменные так, как большинство из нас написать сообщение на WhatsApp.

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

Редукционист

Это тот тип разработчика, который подходит ко всему программированию не как к созданию чего-то, или к исследованию, или к переделке, или к оказанию кому-то услуги, или даже к игре — но всегда по существу как к решению проблем . Они начнут с размышлений о «решении» (независимо от того, чего они хотят достичь), а затем будут двигаться в обратном направлении от этого.

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

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

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

Экспансионист

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

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

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

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

Креатив

Я немного колебался, стоит ли делать «Креатив» отдельным типом разработчика по нескольким причинам.

Во-первых, почти все программирование в той или иной степени творческое. Экспансионист и Глубокий Мыслитель из этого же списка, например, тоже по своей сути креативны. Кроме того, название как бы призывает к устранению неоднозначности — многие поймут это как «разработчики с художественной стороной», которые обычно создают видеоигры или красивые веб-страницы.

Но это не совсем то, что я имею в виду здесь. Скорее, я имею в виду разработчиков, которые особенно хорошо умеют находить решения, до которых не доходят другие люди.

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

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

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

***

И на этом заканчивается мое переустройство вселенной! Как я уже говорил в начале, это всего лишь мое мнение, и я не считаю себя каким-либо авторитетом в этой теме — я просто парень, который любит составлять списки.

Если вы считаете, что какая-либо из этих категорий неверна, или если вы можете придумать какую-то одну, которую я явно пропустил, оставьте комментарий и дайте мне знать — я могу просто обновить статью, если вы будете достаточно убедительны.