Меня зовут Никита, я — Python бэкенд-разработчик из Surf. Месяц назад я закончил первый проект в аутсорс-компании. Признаться, он стал для меня открытием — раньше я работал только в инхаус-продуктах. Это два совершенно разных опыта с разным отношением к продукту, коду, работе, которые повлияли на моё общее отношение к программированию. И сегодня я хочу поделиться этими изменениями за 2 года коммерческого опыта. Многие из этих вещей могут показаться очевидными, но я их осознал только со временем (да, два года для молодых – это уже срок).

Начало

Учиться бэкенду я начал на известных курсах по Django. До этого мой опыт программирования был основан на Pascal в школе, калькуляторе на C++ со stackoverflow для курсовой по ИБ (не очень понимаю, зачем это было) и Python с PowerShell для ИБ-скриптов.

Чтобы понять, какой язык выбирать, я просмотрел весь Youtube и прочитал все статьи на эту тему. Остановился на Python —  он мне всегда нравился из-за синтаксиса. И также из-за относительно простого входа сами знаете куда (да, немного и на это повёлся, но только немного, честно). 

PHP, ну, как сказать... C++ показался сложным, и не хотелось учить работы Ады Лавлейс. В Go мне не подошёл синтаксис — помню, я тогда решил, что оставлю его на потом. C# я не рассматривал, начитавшись про его сравнительно небольшую популярность, сильную завязку на экосистеме Microsoft, слабость opensouce. Про Java мне говорить нельзя — техлид у нас джавист и котлинист. А Rust испугал, потому что люди уже на подступах кричали, что это только для мегамозгов. Но он, и правда, казался китайским на фоне остальных «европейских» языков.

С тех пор почти всё обучение меня не покидала мысль, что я занимаюсь недопрограммированием, ведь Питон «простой», «медленный», «не для серьёзного» и т.д.

Мои инсайты

1) Бизнесу важны деньги, поэтому Python — их выбор

Далеко не весь бизнес —  это биржи или облака, которым нужны 10^10 операций в секунду, или проекты с EDA архитектурой на 1 млн строк кода.

И зачем нужно платить программисту на ассемблере, если можно нанять питониста, который может сделать всё в разы быстрее (к слову, даже нагруженные проекты порой проще покрывать увеличением мощностей).

Многие узкие моменты можно нивелировать другими языками (Gо), C-шными библиотеками (numpy) или сторонними решениями (то же кеширование redis). Да и сам Python не такой уж и медленный, как его преподносят. К тому же, он невероятно активно развивается. Как пример, его интерпретатор ускоряют умными вещами, разрабатывают многообещающие subinterpreters.

Так какие же у Python преимущества для бизнеса:

  • Скорость разработки из-за высокоуровневости языка. 

    Зачем беспокоиться из-за использования лишних 100 мб оперативки? Да, это расточительство, но никто не будет платить С-шнику, чтобы он думал, как очищать память, чтобы поберечь природу.

    Код для перекладывания джейсончиков на Питоне можно написать гораздо быстрее, чем на других языках. А с решениями на других языках (orjson, pydantic и т.п.) и по скорости не сильно отставать.

  • Скорость разработки из-за ещё большей высокоуровневости Django. 

    Для django написано уже всё. Только ищи и применяй. Можно хоть сколько закатывать глаза, видя питониста, упоминающего Django, но кто мы без фреймворков? Многие разработчики, наверное, даже не знают, как сети-то работают, не говоря уже о пакетах и подобных мелочах. А зачем, собственно, это знать? С повышением абстракции, детали становятся не важны.

    Отдельно хочу упомянуть прекраснейшую админку, которая решает 90% бизнесовых вопросов, не требуя практически никаких временных затрат.

  • Скорость разработки из-за огромнейшего сообщества. 

    За тебя уже написано практически всё. Нужен ТОТР? Прочитал документацию, подключил, потратил пару часов. Нужна интеграция? В большинстве сервисов уже есть реализации, опять нужна только пара часов. Да, многие начнут, что это уже не программирование, вот в наше время на счётах считали, а сейчас…

2) Django всё умирает и умирает, но никак не умрёт (тут что-то на PHPшном).

Когда я ещё только начинал учиться, говорили, что Django конец. Срочно нужно учить FastAPI и запрыгивать в уходящий поезд.

Да, асинхронность и скорость замечательного последнего фреймворка будут полезны во многих случаях. Но писать лишний месяц-два сервис с сотней запросов в час, чтобы показать, что ты крутой Грандмастер Бит, который умеет в FastAPI, не даст тебе очков, особенно если ты работаешь в аутсорсе.

Суть не в том, что не нужно учить что-то ещё. Нет, напротив. Но это и не значит, что Django можно забывать. Просто нужно понимать, где и что лучше использовать.

А ещё по Django много вакансий. Да и в крайнем случае, всегда будут легаси.

3) Лакончиность и аккуратность!

Учитесь писать кратко и красиво. Питон создан для этого! Можно проходить по одному массиву  несколько раз, если это добавит читаемости (и если он небольшой, разумеется). Твой код должен быть легко понимаем.

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

4) Учитесь писать по документации.

Я раньше любил по двадцать раз переписывать код при дебаге (спасибо интерпретируемым языкам) на основе полученного.

Но время на это будет не всегда, особенно если другие стороны затягивают с предоставлением. Что и случилось со мной на последнем проекте, когда я сделал ETL, CRUD и эндпоинты для перекладывания данных заказчика в наш сервис, но они дали данные только спустя недели. Пришлось многое переделывать, например, во многих местах я не учитывал то, что поле может быть null (None).

5) Перфекционизма поубавится, сопричастности с кодом тоже.

Я люблю писать код. Но я не могу сказать, что у меня всё так же невероятно горят глаза, как год-два назад. И это не выгорание, мне нравится работать.

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

Касательно сопричастности. Код, конечно, мой, но проект - нет. Со временем я стал понимать, что я делаю то, что от меня ждут. И тут я нахожу главный плюс: я делаю не то, что хочется, а так, как хочется.

я на прошлой работе

6) Учиться. Учиться… Учиться….

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

Мне нравится учиться, но порой это так надоедает. К слову, я не один такой. Даже за 3 года я устал… Не представляю, каково людям, занимающимся этим десятилетия. Современный мир слишком быстр. И тебе нельзя отставать…

Как жить дальше

Всё ещё не знаю, всё та же потерянность в этом зоопарке, всё та же неуверенность в завтрашнем дне, но уже чуть легче из-за большей (чем в прошлой жизни) зп, большего количества знаний в своей области, и, самое главное, большего смирения, привыкания к этому бесконечному потоку, появления умения вычленять важное. Ты лишь посторонний Альбера Камю, ты лишь маленький робот, делающий свою работу в окружении плитки Zima Blue и получающий от этой работы удовольствие.