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

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

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

Источник: 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 — о том, почему разработчикам трудно анализировать все процессы в системах. Одна из причин в том, что они неоднородные — именно потому, что много разных инструментов и языков
0
88 комментариев
Написать комментарий...
СлавалС

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

Ответить
Развернуть ветку
Anton Shuleshov

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

Ответить
Развернуть ветку
13 комментариев
Sergei Timofeyev

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

Ответить
Развернуть ветку
2 комментария
Денис Демидов

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

Ответить
Развернуть ветку
2 комментария
Denis

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

Ответить
Развернуть ветку
Alexander Peresypkin

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

Ответить
Развернуть ветку
1 комментарий
Евгений Романов

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

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

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

Ответить
Развернуть ветку
Denis

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

Ответить
Развернуть ветку
2 комментария
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
17 комментариев
alex b

Про тесты бред, само собой 100% покрытие мало кому нужно, но покрыть тестами бизнес-логику это мастхэв, плюс с тестами можно вкатываться в ci/cd, как простой вариант - сначала раскатывается новая версия на релизный сервер, прогоняются тесты автоматом и если все окей - переключаем продакшн на релиз. На моем текущем проекте тестами покрыто около 15% проекта если верить code coverage в ide, но эти 15% это основные фичи вроде оплат, работы с юзерами и прочего, что ломаться никак не должно

Ответить
Развернуть ветку
СлавалС

Тесты еще одна инфоциганская тема, особенно покрытие )))
Я пишу тесты для того, чтобы не поднимать всю инфраструктуру в проекте, чтобы гвоздями прибить какую-то обработку данных или state-machine.

Я бы сказал так, что тесты надо писать всегда, но с разумным подходом.

Ответить
Развернуть ветку
Alex Chernyshev

Все даже еще хуже: технические сотрудники FAAG очень часто напоминают служителей бога-машины: они не код пишут а фактически обслуживают огромные механизмы-сервисы.
Если кто-то сталкивался с ex-гугловцами на собеседованиях думаю заметили что у них в порядке вещей не иметь практики с общепринятыми фреймворками и технологиями вообще, только голые алгоритмы и CS. Особенно если человек попал туда сразу после университета в том или ином виде.

Применимость такого 'бриллианта' в реалиях обычной корпоративной разработки - сами понимаете что достаточно сомнительна.

Ответить
Развернуть ветку
Гала Перидоловна
Если кто-то сталкивался с ex-гугловцами на собеседованиях думаю заметили что у них в порядке вещей не иметь практики с общепринятыми фреймворками и технологиями вообще, только голые алгоритмы и CS. Особенно если человек попал туда сразу после университета в том или ином виде.

1. Фреймворки меняются довольно часто, а CS нет.
2. Большинство фреймворков создано этими большими компаниями.
3. Освоить фреймворк занимает ну максимум пара недель. Освоить CS на уровне хотя бы Кормэна открыть у людей занимает годы. Я встречал уже не молодые компании где была куча погроммистов на X фреймворке, которыми управлял небожитель - тимлид, который 2 страницы Кнута прочел и теперь он уже считай все осознал в этой жизни.
4. Человек с хорошим CS бэкграудом вряд ли пойдет перекладывать json на тот же грейд, что и обычный землекоп, который с трудом понимает что такое стабильная сортировка. Очевидно, что в корпоративной разработке более узкие и интересные места отдадут экс-гугловцу, а на обычную бизнеслогику посадят более дешевых разработчиков.

Ответить
Развернуть ветку
15 комментариев
Влад К
технические сотрудники FAAG очень часто напоминают служителей бога-машины

Во имя Омниссии!

Ответить
Развернуть ветку
Denis

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

Ответить
Развернуть ветку
4 комментария
alex b

В самом деле смешно читать будто в FAANG нет легаси и проекты у них - эталон и пример для остальных. Легаси на том же фейсбуке - чуть ли не основа системы, а переписывать долго и дорого, тем более если учесть что пхп код до кучи собирается через пропиетарный HipHop и не факт что он вообще будет работать даже если взять и переписать на актуальной версии языка и без того самого HipHop, часть фич вообще живут за счет сайд-эффектов от других фич. Конечно есть R&D и свежие вещи пишутся на максимально актуальном стеке, но дойную корову, приносящую бабло никто не станет просто от нефиг делать переписывать

Ответить
Развернуть ветку
Reverent Evzheniy

норм

Ответить
Развернуть ветку
Vice Doh

да

Ответить
Развернуть ветку
George Berezkin

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

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
6 комментариев
Memory Clutter

Хочется сказать вот что "ну и че?" (в шутку :))

Смысл работы разработчиком, в поиске решения поставленой задачи от бизнеса. Вот какого уровня бизнес такого уровня и задачи. Какого уровня задачи такие и решения.

Ответить
Развернуть ветку
Gri

Иногда всё принимает обороты вплоть до абсурда и в большой крупной компании используют всё подряд, будь то СУБД, будь то ЯП, у нас вон фортран легаси код бородой порос, но его юзали до какого-то недавнего времени.

Ответить
Развернуть ветку
1 комментарий
Marat Sungatullin

Все нормально, не кипишуйте!

Ответить
Развернуть ветку
Artyom Silchenko

Вот схожая другая переводная статья "Вы - не Google" https://habr.com/ru/company/infopulse/blog/330708/ . Оригинал Ozan Onay - You Are Not Google https://blog.bradfieldcs.com/you-are-not-google-84912cf44afb

Ответить
Развернуть ветку
85 комментариев
Раскрывать всегда