⛺Технологический евангелизм 101 #3. Мир многих экосистем (2017)
В предыдущих статьях я уже упоминал, что технологический евангелизм — это функция экосистемы, постаравшись дать некоторое определение, что за этим стоит:
Экосистема — это сеть, в которой есть люди, организации, и каналы, через которые проходит коммуникация.
В этой и следующей статьях я попробую раскрыть эту тему подробнее. В первой статье, — “Мир многих экосистем”, — я расскажу о том, как технологический мир поменялся за то время, пока я нахожусь в этой профессии (с признанием, что моя точка зрения является заведомо предвзятой). Во второй, — “Системный взгляд на экосистему”, — я поделюсь некоторыми соображениями относительно того, как справляться с возросшей сложностью мироздания.
Свой собственный мир
Когда я только начал заниматься разработкой, было не стыдно программировать на Паскале, но лучше на Delphi и не зазорно покопаться в Oberon, (трехмерная) графика программировалась на чистом си или плюсах со вставками на ассемблере для работы с регистрами, хотя OpenGL и DirectX, кажется, уже делали свои первые шаги в массы, веб-разработка сводилась к тривиальной сегодня не очень семантичной верстке, Flash был восходящей звездой.
Может показаться, что я все это описываю несколько снисходительно и пренебрежительно, но я хочу, на самом деле подчеркнуть одну вещь: достаточно широкий спектр “современных” технологий вполне помещался в одно сознание и практически обо всем можно было поговорить с любым разумным разработчиком.
Но вот эта “вмещаемость”, конечно, не означала, что рассказывать о технологиях, писать хорошие статьи или, например, выступать на конференциях было проще, чем сейчас. Не было.
Когда я поступил в МАИ, Microsoft как раз только выпустила первую версию .NET Framework (в ответ на набирающую обороты экосистему Java, и надо отметить, что в мире Enterprise были и другие экосистемы и продукты).
Спустя шесть лет, мы с радостью и ностальгией пересматриваем прыгающего по сцене Стива Балмера с неизменным “Developers! Developers! Developers!”. Огромная растущая экосистема .NET-разработчиков, в которой я теперь не только участник, но и движитель.
В целом, мы не сильно замечаем конкуренцию вокруг. На вводных тренингах для новых сотрудников Microsoft неизменно рассказывают, что наш самый большой конкурент — это предыдущая версия Windows. С каждой следующей версией платформы мы обновляем презентации и демки для разработчиков, скрупулезно пишем новые статьи и вебкасты, тщательно планируем и проводим все новые и новые мероприятия (тут ветераны движения, смахивая едва заметную слезу, вспоминают громкие TechDays по всей стране).
У нас своя тусовка, своя понятная аудитория и мы живем только ей. Где-то есть джависты, где-то все еще сильные флешеры, где-то пхпшники и огромная масса кастомизаторов движков, и много кого поменьше — и как-то не очень понятно, что с ними делать и надо ли.
А со своими, как нам казалось, знаем. У нас есть свои контроллируемые каналы коммуникации (от рассылок до видео-контента с вебкастами и записями мероприятий). Наша платформа растет и расширяется, и мы рассказываем, как из кирпичиков можно собрать практически все, что может понадобиться (а где кирпичиков нет, можно дописать). Мы думаем, что понимаем чаяния нашей аудитории, потому что мы же сами вышли из нее и пользуемся теми же инструментами, что и она.
Эта замкнутость на своей собственной экосистеме, нам, конечно, дорого обошлась. В какой-то момент мы оказались догонящими в браузерах, веб-серверах, мобильных и встраиваемых платформах, облаках, да и много где еще. За всего 5 лет там, где все крупные экосистемы можно было пересчитать по пальцам одной руки, их стало “легион”.
Проклятие знаний
Конкуренция и перемены возникали вспышками, проблесками вдалеке. В 2007–2008, когда все начиналось, навряд ли, кто-то мог проследить далеко идущие последствия небольших тогда еще начинаний.
Когда я пришел в Microsoft во второй половине 2008, Apple уже выпустила свой первый iPhone, а Google анонсировала первую версию Android, но никто не знал, насколько огромные экосистемы вырастут на их базе, включая вложенные экосистемы мессенджеров. Спустя два года мы включимся в гонку с Windows Phone.
Тогда же Джоэль Спольски запускает StackOverflow, для нас это показательный кейс сайта на ASP.NET, но никто не знал, насколько сильно он изменит коммуникацию между разработчиками, оказание поддержки и открытый обмен знаниями с экосистемой. Еще много лет мы будем держаться за свои собственные форумы.
Тогда же появился GitHub. Мы еще долго не будем обращать на него внимания и даже будем делать свое собственное решение для open source проектов. Кто бы знал тогда, что спустя много лет он станет стандартом де-факто для ведения code-based диалога с аудиторией и совместного развития проектов.
Тогда же Amazon начнет раскручивать AWS и тему публичных облаков, но еще много лет, экосистема, привыкшая к частным серверам и стойкам в дата-центрах будет переосмысливать происходящее. А мы будем бороться за Windows Server marketshare vs. Linux, и вступим в гонку за облака спустя еще 2–3 года.
Тогда же начинает расти и поглощать массы Facebook, уже понятно, что это — что-то важное. Но еще не очевидно, что на его базе и на базе других социальных сетей смогут получить второе дыхание разработчики казуальных игр (и третье в мобилке).
Тогда же небольшой группой товарищей начинается подготовка подрыва застоя веб-стандартов. Спустя два года будет греметь тема HTML5, потом выйдет знаменитое письмо Стива Джобса, но еще несколько лет мы на пару с Adobe будем играть в плагины для браузеров, потихоньку догоняя, что пора уже менять лошадей.
Тогда же начнется взлет темы Agile и далее DevOps. Потом это кардинально поменяет массовую разработку. А мы пока еще долго будем идти своим путем, популяризуя ALM (что “как бы похоже, но не совсем”), верный, но рассчитанный на Enterprise-рынок. Спустя годы мы начнем постепенный перевод внутренних команд на DevOps-лекала, Git-рельсы и вот это все. Будет больно.
Тогда же в теме AI случается прорыв на базе глубокого обучения нейронных сетей. Постепенно в академической и исследовательской среде формируется фундамент для текущего бума AI. К счастью, у нас есть Microsoft Research. К несчастью, мы, занимающиеся евангелизмом платформы, про AI и сопутствующие инструменты не сильно в курсе и еще не понимаем, что это приведет к огромному скачку популярности Python и экосистемы вокруг него.
Тогда же Сатоси Накамото публикует описание протокола и принципов работы Bitcoin. Границы между криптовалютами и криптоанрхистами еще много лет будут оставаться в тумане, и никто не понимает, что из всего этого потом вырастет Etherium и другие платформы для blockchain-решений.
…
Мы попали в ловушку, которую часто называют “проклятием знаний”. Мы были настолько погружены в собственную экосистему и настолько увлечены улучшение эффективности наших собственных методов, что не заметили, как технологический мир вокруг изменился. Рядом с нашей экосистемой выросло множество других. Разных и удивительных.
Это не означает, что мы что-то делали неправильно. “Неправильно” тут неверное слово. Мы не были слепыми, чтобы совсем не замечать, что происходит вокруг. Но наша сконцентрированность на собственных процессах привела к тому, что мы начали упускать из виду, что не только “все другие”, но и наша собственная аудитория началась меняться быстрее, чем мы сами.
И, конечно, об этом легко судить ретроспективно. А когда ты находишься внутри бурлящего процесса, который эффективно делает то, для чего он предназначен, тебе как-то трудно осознать горизонт упускаемых возможностей и творящихся вокруг перемен.
…
Года два назад мы сделали турне по 13 городам региона с неформальным лозунгом “Мир изменился!”. (Тут слеза падает у нашего юного поколения евангелистов.)
Мир многих экосистем
Конечно, все не так черно-бело. Например, наша же эффективность в проведении конференций, подсказала нам, что что-то тут не так, о чем я немного писал в предыдущей статье. Сейчас я с улыбкой слушаю рассказы коллег по цеху о том, как они лучше всех проводят технологические конференции, улавливая примеры того, что мы делали еще 3–5 лет назад.
Наш постоянный поиск новых эффективных форматов, который хотя и не подсказал нам заняться видео-блоггингом, позволил научиться качественно готовить видео-контент (от зеленого экрана и посекундного сценария до интерактива в online), что было востребовано тогда и особенно актуально сейчас в контексте Youtube, массового online-обучения и роста популярности стримминга.
Мы научились хорошо делать “кирпичики”, но самый большой вопрос — как их правильно пересобрать в новой реальности, что выкинуть, а что добавить.
…
Я выше написал, что “рядом с нашей экосистемой выросло множество других”. Это не очень точная формулировка, хотя и подчеркивающая назревшие перемены. На практике оказалось, что все намного сложнее.
Приход HTML5 и нового поколения веб-стандартов дал сильный толчок развитию экосистемы вокруг JavaScript. Конечно, в его ядре по-прежнему frontend с вкраплениями backend в лице Node.js, но вдруг оказалось, что на JS можно удобно писать десктопные и мобильные приложения (привет Electron, WinRT/UWP, Cordova, ReactNative), можно программировать IoT-решения (привет Tessel, Espruino и др.), можно писать плагины (от Adobe до браузеров) и смарт-контракты (привет Solidity в Etherium), можно создавать низкоуровневый код (привет WebAssembly), можно создавать трехмерную и VR-графику (привет WebGL и WebVR),… И далее тут своя проекция DevOps (привет WebOps), тут свой срез безопасности, свое понимание развития языков разработки и фреймворков. Уместный вопрос: как описать современную экосистему JavaScript?
Я помню свое удивление, когда обнаружил, что одна из версий Цивилазации была практически полностью написа на Python. Сегодня, он кажется практически столь же вездесущим, как и JS. Со своей спецификой, конечно. Я прохожу курс по DNN — и мне показывают примеры на Python (да, не удивительно, но это растущий рынок с огромным потенциалом!), я смотрю рекомендации по выбору платформы/фрейворков для веб-разработки — и там Python вдруг начинает обгонять PHP, я заглядываю в описание новой версии SQL Server — и там возможность писать хранимки на Python!… И снова: это экосистема Python, Web, Data Science?
Может это только про языки так? Да нет. DevOps как идея от чего-то целостного вдруг начал ветвиться на специализированные направления: DevOps для мобилки, для веба, для gamedev, для enterprise, … И вот даже уже видны первые проблески DevOps for Data, и я уже чувствую, что не за горами DevOps for Bots, for Blockchain, for AI, …
Может это тогда про сегменты разработки? Да нет. Оно как-то размывается все. Вот свежий пример с AR/MR/VR. Тут же полный компот: игровые движки, мобильные и веб-платформы (все с сопутствующими инструментами и языками), телекоммуникации и железо, переосмысление дизайна, плотное пересечение с компьютерным зрением (читай AI). А потом будет и свой срез понимания безопасности, процессов разработки/развертывания и т.д.
А ведь есть же еще индустриальные срезы! Финтех, Агротех, Медтех и прочие *-техи.
…
И вот тут тебя накрывает. Ты понимаешь, что это не столько десяток разных независимых экосистем, на которые ты бы мог просто перенести наработки “евангелизма” в одной из них, сколько сложно пересекающиеся и накладывающиеся экосистемы. Это совершенно другая конфигурация.
Каждая со своими технологическими тонкостями, нюансами отношений, лидерами, ведущими компаниями, пониманиями процессов, каналами общения и т.п. Но все существующие параллельно в одной реальности и приземляющиеся на одну и ту же довольно-таки узкую прослойку IT-специалистов.
А дальше большой вопрос. Вот я, условная компания “Рога и Ромашки”, делающая облачную платформу, или платформу для картографии и навигации, или платформу для общения, или игровой движок, или блокчейн-платформу, или AI-платформу для работы с изображениями, или… — вот как я должна подходить к взаимодействию с технологическими экосистемами? Или что я должна сделать, чтобы вырастить свою?
Вот этот факт признания и понимания сложной мульти-системности современного технологического мира дорогого стоит, потому что дальше он продолжит усложняться и переупаковываться в новые слои и смыслы.