Теория гибридизации или о девопсах и девзайнерах

Не так давно я провел цикл тренингов по “разработке в облаке и для облака” по заказу Microsoft-Украина. Если говорить подробнее, — мы обсуждали вопросы использования облачной платформы Microsoft Azure вкупе с онлайновыми сервисами для командной разработки Visual Studio Team Services (бывшая Visual Studio Online), настраивали Continuous Integration и Continuous Delivery, говорили о том, как это все согласуется с модной нынче методологией DevOps.

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

Но Бог с ним, с курсом. Сегодня я хотел поговорить о том, к каким выводам я пришел в процессе его подготовки, да и вообще, наблюдая за последними модными тенденциями IT-отрасли.

Узкая специализация — уже не преимущество

Долгое время нам говорили, что узкая специализация — это здорово — человек концентрируется на одной платформе/технологии/продукте/чем угодно, досконально изучает все нюансы, узкие места, наступает на все типичные “грабли”, и в своей области компетентности (в идеале) достигает совершенства.

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

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

Иногда это вызвано многолетней однообразной, рутинной деятельностью, когда каждый день человек выполняет одни и те же действия, работает с одними и теми же иснтрументами, и просто “запускает себя”, не имея возможности или времени научиться чему-то новому. Но чаще всего такая ситуация — результат нежелания учиться и идти в ногу со временем. Будем честны с самим собой — люди, подобные нам — гики, которым постоянно хочется играть все с новыми гаджетами, иметь на своих устройствах самые последние версии ОС и прошивок, использовать для работы самые современные приложения (иногда даже бета- или инсайдерские версии), не являются нормой в статистическом смысле. Большинство, все же, узко специализированы.

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

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

Хочу отметить,что узкая специализация опасна и для самого человека. В своей компании, своем отделе, своем проекте каждый — царь и бог. Но что, если человек, в совершенстве освоивший “самописную” CRM, по какой-то причине вынужден сменить работу? Кому он будет нужен?Конечно, всему можно научиться, но могут, хотят и будут это делать далеко не все.

К счастью, лед все же тронулся. Наши дни можно смело назвать “эпохой гиков”, специалисты, совмещающие несколько ролей, владеющие знаниями, навыками и умениями в смежных областях становятся все более востребованными. “Узкие” специалисты все еще в цене, но “двойные профессии” — модный современный тренд. Особо ценятся профессионалы, способные быстро перестроиться. Так что такие “гибриды”, как девопсы и девзайнеры уже никого не удивляют. Более того — многие компании ввели позиции с такими названиями. Но кто же такие эти люди и нужно ли иметь такого специалиста в своем проекте?

Девопс — кто это, чем занимается и зачем нужен?

Если попробовать просто и прямолинейно расшифровать название, получим “development+operations”, что многие переводят как “программирующий админ”. Такая трактовка, однако, не является точной. Точно так же можно было бы сказать “администрирующий программист”.

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

Сама методология, или скорее, концепция DevOps появилась сравнительно недавно — в 2008–2009 годах и очень быстро стала популярной. Хотя, честно говоря, сама идея не нова (мы же знаем, что все новое — это хорошо забытое старое!) — разработчики часто так или иначе вовлечены в процесс проектирования ифраструктуры и развертывания решения (именно на этом этапе девопсы максимально задействованы), а внедренцы зачастую учавствуют в процессе проектирования архитектуры системы, предоставляя ценную информацию инфраструктурного плана, позволяя выявить скрытые требования к продукту.

По большому счеты, мы все с вами девопсы:-) А если вы работаете с облаком — тем более, поскольку именно здесь общепринятой является концепция самообслуживания — вы сами разрабатываете продукт, сами (через портал администрирования) готовите инфраструктуру, можете автоматизировать сборку, тестирование и развертывание продукта, имеете возможность мониторить его работу…

Вот так просто мы разобрались с одной химерой — девопсом. Если вам все еще хочется знать больше — вот очень неплохая статья на эту тему. Ну а мы идем дальше.

Девзайнер — нужен ли нам такой в команде?

Как и в предыдущем случае, попробуем просто расшифровать это слово. Логично, что “девзайнер “— это “developer & designer”, т.е. разработчик, владеющий навыками проектирования и создания интерфейсов пользователя.

В последнее время граница между компетенциями создателей пользовательского интерфейса и программистов постепенно стирается. Почему это происходит? Во-первых, веб-дизайн за последние годы очень сильно “повзрослел”, можно сказать, встпил в эпоху зрелости. Вспомните, например, про Material Design от Google — все подробно расписано, обосновано, перечислены стандартные приемы и шаблоны, есть все необходимые инструменты и ресурсы, например, Material Design Lite или Materialize. Во-вторых, программировать сейчас стало просто, как никогда — огромное число библиотек, плагинов, пакетов — все стандартные, типовые строительные блоки приложения уже, в большинстве случаев, имеются, кем-то написаны и мы можем не изобретать велосипед заново.

С другой стороны, качественных приложений становится все больше, построены они по одним и тем же принципам, выглядят однотипно, и выделиться на их фоне все сложнее и сложнее:-( Современный программный (и не только) продукт должен быть не просто красивым, но уникальным, чтобы пользователь хотя бы обратил на него внимание. Вот для создания таких-то продуктов и нужны люди, сочетающие знания, умения и навыки разработчика и дизайнера. Плюс, давайте вспомним о том, что на планшете или телефоне ваш продукт может выглядеть по-другому, а его интерфейс — быть совсем не таким удобным, как в браузере на ПК. Создание адаптивного интерфейса — целая наука, полная хитрых трбков и сакральных знаний. Да, конечно, есть готовые CSS-фреймворки (см. также сюда), есть в конце-концов jQuery Mobile и Ionic, но они тоже не решают проблемы полностью.

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

Типичные “дизайнеры” работают, в основном, с графическими пакетами типа PhotoShop, Inkscape и т.п. Обычно они либо совсем не знакомы, либо имеют поверхностные знания платформы, для которой разрабатывается приложение. Про CSS, фреймворки, адаптивность и тому подобные вещи при них лучше не упоминать — их пугают эти слова. А ведь если у вас есть только базовые знания платформы, созданный вами интерфейс тоже будет базовым, не использующим все “фишки” платформы, под которую создается продукт!

Я знаком лишь с одним дизайнером, который способен не только нарисовать прототип интерфейса, но и сделать “нарезку” графики, подготовить CSS-файл, да запрограммировать нарисованное (например, на php) для него не является особой проблемой. Думаю, немного рекламы Жене Сайкевичу не помешает:-) Вот его-то и стоит считать девзайнером.

Конечно, не всем это дано, не у всех есть чувство прекрасного, некоторые — такие же девзайнеры, как и девопсы:-), но ведь действительно, многим из нас приходится совмещать в своих проектах роли и разработчика и дизайнера. Вот и получается, что многие из нас — девзайнеры!


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