«У 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

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

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

Если спикеров слушать, то только лох не перешел на go или c#/scala а в реальности тот же екоммерс почти весь на пыхе.

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

Так в реальности "пых" отличный.

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

Эх Денис Денис, если вы сделали полтора магазина на битриксе - это ещё не значит что весь екоммерс на php. В моей компании где я тружусь, весь бек на Java c python например)

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

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

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

Salesforce, Siebel - java, Microsoft Dynamics, BPMOnline/Creatio - C#/ASP.NET
Почти все что имеет отношение к BPM - на java, все что поддерживает 1000+ активных сессий - на java или c#.

Или вы про интернет-магазины?
Там вообщем тоже есть какой-то лимит, выше которого либо самописное что-то либо чужая жирная платформа на C#/Java

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

Интернет магазины и имею ввиду, почти все на пыхе работают, крупняк весь на самописе, симфони как правило.
Дело не в хайлоаде, его то как раз на go можно написать с асинхронностью, дело в надежности и простоте пыхи, что очень актуально с замудренной бизнес логикой.

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

А банкинг на джаве или с#

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

Там же целостность данных архиважна, от того оракл и ms-sql, соответственно java и с#

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

Думаю там дело в возможности поддержки дремучего Легаси. Когда там годовую отчётность сверяют десятки миллионов $$ считаются погрешностью.

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

Не весь на пхп. В Прибалтике например ценится nodeJs,. С graphQL and Typescript

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

Ну я работал на проекте с фронтом на реакте, бэк на пыхе и пыха же обеспечивала поддержку graphQL, язык в самом деле не особо важен

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

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

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

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

Хотя ватерфол был первой формализацией процесса разработки и в то время время автоматизация при разработке была совсем не такая как сейчас и задачи выполнялись совсем иные.
И даже автор этого ватерфола уже упоминал про итеративность, потом появился RUP, который весьма подробно описывает процесс разработки, уже в итерации, оно по сути так и осталось, только гранулярность увеличичилась.

В прямых запросах в базу, если что нет ничего плохого, если они уместны )

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