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

Статья про рок-банды, новое время и программирование.

rock-and-roll-xs

 

Давно хотел провести аналогию между музыкой и программированием. Например команда разрабатывающая большие и сложные системы чем-то похожа на симфонический оркестр:
blog_Classical_

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

Если мы посмотрим на разработку программных продуктов по классической водопадной схеме, то состав участников также будет довольно обширным: архитектор, тим лид, ведущие программисты, несколько программистов разной специализации (java, c/с++, javascript и тд) и группа дизайнеров с верстальщиками. Естественно далеко не все компании могут себе позволить идеально укомплектованный состав. Наиболее успешные организации могут заинтересовать в профессиональном и материальном плане более сильных специалистов, остальные конторы довольствуются тем, кто соответствует их уровню.

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

Под новым форматом я имею в виду небольшой творческий коллективов состоящий из 3-5 человек. Это еще не "оркестр", но уже и не соло-программист. Естественно масштаб создаваемых произведений не сопоставим с творением Классики. Другими словами, если проводить аналогии, речь идет о коллективах создающие программы "по духу" более близкие к Yesterday Битлз, чем к Хорошо темперированному клавиру И.С. Баха.
Все идет к тому, что в программировании наступит время аналогичное музыкальной эпохи 60-70гг прошлого века.

У кого-то может возникнуть такая ассоциация:
blog_beatles
у других такая:
Metallica+solnahallen102

Проведя дальнейшую аналогию между программированием и музыкой можно предположить, что в этих новых "программистких" рок-бандах также будут типовые роли: вокал, гитара, бас, ударные. Конечно роли условные и нестрогие, так как все знают, что вокалист может также играть и на гитаре (James Hetfield), а ударник может сочинять песни и петь (Don Henley, Eagles, Hotel California).

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

Вокал → Дизайн, UI.

sing-xs
Вокалист часто является фронтменом группы.
Лицо группы. Вся любовь публики в первую очередь вначале будет доставаться ему (или ей). С другой стороны, если у вокалиста нет слуха, не попадает в ноты или просто плохо поет, то гнилые помидоры достанутся всем.

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

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

Почему-то многие считают себя творческой личностью и думают, что должного уровня мастерства достичь не так уж и сложно, нужно только "освоить фотошоп". Конечно каким-то навыкам научиться можно всегда, на силе воли и упорстве, методом судзуки или посещая мастер-классы и новомодные школы, только нужно понимать, что правило "отсутствие таланта можно заменить упорными тренировками" имеет ограниченную силу.

Гитара (ритм/соло) → UI, верстка, прикладное программирование, бизнес-логика.

electric-guitar-xs
Рок-группа без гитары ненастоящая рок-группа. Гитарист, также как и вокалист, часто является фронтменом группы (или пытается им стать).

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

 

Бас → Базы данных, системное программирование, архитектура, бизнес-логика

bass-xs

Басист это самый главный человек в группе. Все на что опирается вокалист и гитарист, имеют в качестве "основы" партию, которую ведет бас. Если гитарист зачем-то начал играть в тональности С#, но басист продолжает вести партию в C, то через очень небольшой промежуток времени (если гитарист не глухой) гитарист все-таки будет играть как надо. Таким образом бас приносит гармонию и ритм в музыкальный коллектив.

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

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

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

Ударные → Системное администрирование, скрипты, сборка и развертывание.

drum-xs
В раннем программистском фольклоре сисадмины это как правило бородатые персонажи в свитере и с бубном. Естественно в 21-веке у современного сисадмина в наличии не только "бубен", а полноценная "ударная установка". Роль драммера в составе рок-группы сложно переоценить. Конечно можно попробовать обойтись без ударника (например использовать "педальку" со встроенной драм-машинкой), но поверьте играть с живым хорошим ударником намного приятней и круче.

Аналогично обстоят дела с системным администратором,  т.к. в конечно счете многое будет опираться на действие админа. Сборка проекта, выкладка, обновление, резервирование, настройка доступа к исходникам, настройка серверов, служб и многое другое — все это "тру админ" делает четко и ритмично. У многих талантливых админов есть "чувство системы" на интуитивном уровне, они чувствуют когда что-то делать не стоит (хотя видимых причин для этого нет), знают когда стоит накатить обновление, а когда лучше выдержать паузу. Более того, когда все другие участники вдруг облажались (например отработали не согласовано и выкатили раньше времени сырой продукт), то спокойные и ровные действия админа могут четко вернуть работу всего коллектива в обычный ритм (откатиться, поднять резервную копию и спокойно объяснить, что так делать больше не стоит).

Итоги и размышления.

Если оглянуться назад, то можно вспомнить время когда начинающие музыканты репетировали в основном подвалах и ДК. Сейчас все пользуются услугами репетиционных баз. Раньше молодые программисты, как правило студенты, собирались и писали программы в комнате общежития или компьютерных аудиториях института. Сейчас появились коворкинги.
Раньше вешали объявления на досках "Группа ищет ударника", а сейчас "Cтартап ищет талантливого java программиста".

В конце этой статьи хотел сделать еще пару замечаний:
1. В этой статье я хотел сказать именно о группах. Речь идет не об Элвисе Престли или Джими Хендриксе, это несомненные гениальные музыканты, и в мире IT есть тоже много аналогичных примеров, когда коллектив отождествляется с одним человеком  - студия Артемия Лебедева, лаборатория Касперского и т.д. Здесь речь не о "сольной карьере", а об успешной совместной работе людей именно как группы (например Beatles, Metallica, Led Zeppelin или на худой конец Spice Girls).

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

Дело в том, что создав свою группу, признание к вам может прийти не сразу. Может никогда. Чтобы заработать себе на хлеб придется браться за подработку - верстать веб-сайты, рисовать логотипы, ставить обновления 1С и тд., аналогично тому как многие начинающие группы играют на свадьбах, корпоративах и в дешевых клубах.

Думаю это не раскроет сильно ваш потенциал и не повысит уровень мастерства, в лучшем случае улучшится навык в использование каких-то типовых архитектурных клише и повторного использования готовых решений. Пока вы будете в сотый раз исполнять какой-нибудь популярный хит (разворачивать сайт на друпале/джумле, ваять дизайн для местного ООО "ГазМясСбыт" и тд) и пытаться таким образом обеспечить себе светлое будущее, возможно многие из ваших друзей и однокурсников станут ИТ директорами или системными архитекторами в нормальных крупных компаниях.

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