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

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

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

Источник: <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fwww.google.com%2Furl%3Fsa%3Di%26amp%3Burl%3Dhttps%253A%252F%252Fwww.flexwareinnovation.com%252Fseven-core-competencies-of-top-software-engineers%252F%26amp%3Bpsig%3DAOvVaw3oEmx0Rs4jpdTZ5foU07yb%26amp%3Bust%3D1645603939242000%26amp%3Bsource%3Dimages%26amp%3Bcd%3Dvfe%26amp%3Bved%3D2ahUKEwib4pfD7pL2AhVTR0EAHanGCTAQjhx6BAgAEAo&postId=368883" 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 — о том, почему разработчикам трудно анализировать все процессы в системах. Одна из причин в том, что они неоднородные — именно потому, что много разных инструментов и языков
3838
88 комментариев

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

31

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

10

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

5

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

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

16

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

2

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

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

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

3