Какой охват у разработчиков в гигантах Кремниевой Долины?

· 2 мин

Раньше, когда я думал про работу в компаниях вроде Google, Amazon или Facebook, я представлял себе такую картину. Вот ты устраиваешься на работу и начинаешь работать над основным продуктом и делать в нём изменения, радующие пользователей и приносящие деньги.

Реальность же куда прозаичнее. Возьмём для примера Инстраграм, продукт компании Фейсбук. За каждой маленькой фичей стоят целые команды, создающие и поддерживающие API, за которыми стоят микросервисы, которые, в свою очередь, состоят из ещё более мелких компонентов.

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

Например, есть API для лайков. Казалось бы нажал ❤️ и где-то в хранилище данных отразилось то, что пользователь нажал кнопку и счётчик лайков поменялся. На простом сайте всё было бы так, но у Инстаграма миллиард пользователей, которые постоянно что-то смотрят и лайкают, создавая нагрузку в сотни тысяч операций в секунду для API.

API должен быть быстрым и устойчивым к отказам инфраструктуры. Он должен обладать максимальным уровнем защиты от взлома и несанкционированного использования. Когда работаешь в таких компаниях, безопасность — это то, о чём ты думаешь всегда. За тобой смотрит весь мир и самые продвинутые хакеры постоянно пытаются тебя взломать.

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

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

View this post on Instagram

A post shared by Илья Безделев | Чувак из Гугла (@ilya.bezdelev)