«У 99% команд старый код и коробочные решения, нет бюджетов и DevOps, а мы слушаем инфлюенсеров из Facebook»

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

Пересказ колонки основательницы фирмы-разработчика ПО Akita Software Джин Янг.

Источник: <a href="https://www.google.com/url?sa=i&amp;url=https%3A%2F%2Fwww.flexwareinnovation.com%2Fseven-core-competencies-of-top-software-engineers%2F&amp;psig=AOvVaw3oEmx0Rs4jpdTZ5foU07yb&amp;ust=1645603939242000&amp;source=images&amp;cd=vfe&amp;ved=2ahUKEwib4pfD7pL2AhVTR0EAHanGCTAQjhx6BAgAEAo" rel="nofollow noreferrer noopener" target="_blank">Flexware Innovation</a>
Источник: Flexware Innovation

Бессерверные вычисления, язык запросов GraphQL, распределённая трассировка, DevOps-методологии — обо всём этом всё чаще говорят «технари». Однако эти и другие расхожие в 2020-х понятия не всегда отражают реальность, в которой работает 99% программистов, пишет основательница компании-разработчика ПО Akita Software Джин Янг.

По её словам, основной шум вокруг технических и продуктовых решений создают так называемые инфлюенсеры-разработчики — специалисты из быстрорастущих компаний вроде сервиса бронирования жилья Airbnb и финтех-стартапа Stripe или техгигантов биржи Nasdaq: Facebook, Amazon, Apple, Netflix и Google. Для последних даже придумали акроним — FAANG.

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

При этом компании, в которых работают эти «невидимые» 99% разработчиков, так их называет программист Microsoft Скотт Хансельман, необязательно бедствуют. Они строят сервисы и приложения для сфер страхования, медицины, торговли, банкинга, просто делают это тихо.

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

Я обожаю испытывать передовые технологии и раздвигать границы возможного. Но порой вспоминаю о тех 99% — тёмной материи в мире разработки — и напоминаю о них своим коллегам. Ведь инструментами крупных компаний пользуются в том числе и они.

Скотт Хансельман, программист, архитектор финансовых систем

Первый миф: в разработке действует теория «просачивания благ сверху вниз»

Зачастую на крупных отраслевых конференциях, в популярных блогах и социальных сетях высказываются технические специалисты из больших компаний вроде Facebook, Netflix, LinkedIn, Google и Amazon. Они говорят о том, какими бюджетами управляют и какие высокотехнологичные решения придумывают для проблем, с которыми однажды наверняка столкнётся малый или средний бизнес.

Однако у последних, как правило, другие потребности и возможности. У них может не быть целого штата тестировщиков, а также экспертов по наблюдаемости (observability) и эффективности разработчиков. И задачи, за которыми в компаниях вроде Facebook и Google закрепляют сразу несколько профильных команд, заниматься будут инженеры без нужных навыков.

А ещё малый бизнес часто работает с ограниченным бюджетом и чужими коробочными решениями — это готовые к использованию программные продукты, которые чаще всего достаточно лишь минимально настроить. С одной стороны, это способ сэкономить время и деньги и отказаться от разработки с «нуля». С другой, функционал «коробки» всё равно ограничен.

То же касается и масштабирования. Facebook ежедневно генерирует 4 петабайт данных в день — это 1 млн Гбайт. И, конечно, чтобы хранить эти информационные массивы, компания построила свои цифровые склады Tao и Hive. А Neflix, чтобы эффективно работать сразу с несколькими облачными инфраструктурами, построила сервис непрерывной доставки Spinnaker, чтобы множеству команд было проще работать над одним кодом.

Вот только у 99% разработчиков этих проблем, возможно, нет в принципе, пишет Янг. У них нет миллиардов пользователей или десятков тысяч партнёров и поставщиков. И данные они, конечно, собирают, но не в петабайтах. Поэтому разрекламированные высокотехнологичные решения, скорее всего, никогда им не пригодятся.

Второй миф: стремиться нужно к идеалу

Разработчики из крупных технологических проектов нередко публично хвалятся своими успехами. Рассказывают, какие безупречные юнит-тестирования проводят и какой чистый у них код. Говорят, что их staging-среда — пространство, где обкатывают функции перед релизом, — на 100% повторяет основной продукт. И что придраться к их процессам реагирования на инциденты — например, кибератаки — просто невозможно.

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

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

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

Если у кого-то получается добиться идеала, то об этом, безусловно, нельзя молчать. Но и о реальности забыть не стоит. Как, например, работать со старыми кодами, авторы которых давно ушли из компании, ведь менять их зачастую страшно — вдруг сломается сразу всё. Или как эффективно тестировать и накатывать код, если в штате ни одного DevOps-специалиста.

Джин Янг, основательница Akita Software

Google может сколько угодно говорить, что образцовое покрытие кода — когда тестирование запускает сценарии в коде — только 90% и более. Но чаще всего добиться высоких показателей невозможно, ровно как предсказать, как «поведёт» себя код в итоге.

Как сказала соучредительница фирмы-разработчика ПО Honeycomb Чарити Мейджорс, после развертывания ИТ-отдел тестирует не код, а сложную систему — из пользователей, самого кода, окружающей его среды, инфраструктуры и временных отрезков.

Третий миф: строить нужно в однородных экосистемах

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

По её словам, проекты часто рассчитывают перейти на новую систему в условном «следующем квартале и лишь потом понимают, что процесс это продолжительный — даже для слаженных команд. А для тех «невидимых» 99% он может в принципе тянуться вечность — если речь о переходе, например, на микросервисную архитектуру.

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

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

«Круглый стол» разработчиков ПО Akita Software — о том, почему разработчикам трудно анализировать все процессы в системах. Одна из причин в том, что они неоднородные — именно потому, что много разных инструментов и языков
11 показ
30K30K открытий
55 репостов
88 комментариев

Хорошая статья.
Тот же qip который забыт, по сути не что иное как сегоднячний телеграмм, только у телеги более богатая инфраструктура.
Не знаю как в других сферах но такое ощущение что в IT дебилов прибыло. в 2006 все носились с XP программированием, потом был scrum и аджайл. Как будто до этого софт не писался и пришли "собаководы" с минимальным опытом, которые рассказали всем как надо писать софт! Мы такие дартаньяны а вы все долбаебы.
Потом начали носиться с кладуами и даталейками и проывайдерами. В эту же копилку идет микросервисная архитектура. Монолит вдруг резко оказался говном, а микросервисная архитектура тру решением.
Но при этом если команда пишет говнокод, то и то и то будет дерьмищем.
В туже копилку идут всякие ORM с ними тоже носились в свое время, хотя их задачи весьма специфичны. И свои ORM тоже писали.
Бесусловно у клаудов, микросервисов и даже скрама, есть преимущества, но точно также есть и недостатки и границы использования.
Но люди зачастую берут бездумно применяют инструменты, пытаясь модным микроскопом заколачивать гвозди.

Ответить

Вас послушать и можно представить что вы пишите на Фортране и БД на своем сервере с прямыми запросами из клиентского приложения. И по ватерфолу

Ответить

QIP - каким боком? Они по сути были оболочкой над протоколом Oscar8, применяемый на серверах Mirabilis ICQ. Они пытались обрасти своей инфраструктурой, но получилось это очень плохо.

Ответить

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

Ответить

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

Ответить

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

Ответить

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

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

Я бы ещё добавил к списку тесты, которые пишут, потому что "а как же без них?!", хотя на проекте работает 1-2 человека одновременно и они могут спокойно писать качественный код безо всяких тестов. Имхо, если у вас на одном проекте команда меньше ±10 человек, тесты только удорожат и удлинят разработку, не дав особой пользы. С другой стороны, их писать очень модно, так что можно легко их впарить заказчику, содрав с него побольше денег.

Ответить