Меня зовут Дмитрий, мне 36 лет. Расскажу, как я, работая проджектом, решил уйти в IT из-за проблем с заказной разработкой, почему бросил эту затею и вернулся к ней снова, а также какой важный урок я вынес, обучаясь программированию.
Мое знакомство и увлечение программированием началось еще в школе — и там же внезапно оборвалось. В 9-11 классах мы программировали на Basic и Pascal, и я был одним из немногих в потоке, кто показывал неплохие результаты — даже несколько раз участвовал в городских олимпиадах по алгоритмам. Всё благодаря преподавательнице — она уделяла нам много времени, организуя внеклассные уроки, на которых мы решали алгоритмы и разные задачи.
И вроде всё было хорошо, я даже собирался поступать в институт на инженерную специальность, связанную с разработкой. Но неожиданно прямо в 11 классе мой интерес к программированию одномоментно пропал. Тогда я написал игру, на которую потратил несколько недель, и показал ее одноклассникам и преподавательнице.
Поиграв в нее, одноклассники похвалили меня. А преподавательница, даже не посмотрев код, сказала, что это написал не я. Этим она полностью подорвала доверие и отбила желание продолжать делать хоть что-то.
На тот момент мое отношение к программированию сменилось с безудержной любви на тотальное отвращение.
В итоге я поступил в строительный институт, где параллельно получил два диплома: инженера-строителя гидротехнических сооружений и менеджера по управлению недвижимостью. А следующие несколько лет проработал в консалтинге, строя финансовые модели и занимаясь оценкой бизнеса и недвижимости. В какой-то момент консалтинг и постоянные переработки мне надоели, и я решил уйти в собственный «бизнес».
Первые несколько лет это были интернет-магазины — еще до появления маркетплейсов. В то время я сотрудничал с партнером, который отвечал за работу с клиентами и товаром, а я взял на себя разработку сайта, его наполнение, SEO-продвижение и маркетинг.
В тот период я познакомился с типовыми CMS, HTML и CSS и даже немного «пощупал» PHP, но глубоко погружаться в программирование не было ни цели, ни желания. Зато, погрузившись в SEO-продвижение и маркетинг, я познакомился с движением манимейкеров — людей, зарабатывающих аффилейт-маркетингом, разработкой и монетизацией трафиковых и контентных проектов. И я плотно погрузился в эту тему.
К 2014 году трафиковые проекты уже приносили в несколько раз больше, чем интернет-магазины, и уж тем более моя предыдущая работа в консалтинге. И на фоне событий и кризиса того года я продал интернет-магазины и на следующие 5 лет ушел в трафиковые проекты.
Занимаясь трафиковыми проектами, я с одной стороны делал много ручной работы, которую всегда хотелось автоматизировать. А с другой — выполнял роль проджект- и продакт менеджера, организуя работу разработчиков, SEO-специалистов, контент-менеджеров, редакторов.
Однако меня преследовал комплекс неполноценности: я вроде бы варился в IT, мы делали проекты, которые приносили неплохие деньги. Но взять и сделать какой-то нестандартный сервис — мне уже было тяжело. А в общении с разработчиками постоянно присутствовала какая-то дискоммуникация: они постоянно разговаривали на своем птичьем языке, срывали дедлайны, не читали технических заданий, часто делали фигню, и стоили (как мне тогда казалось) неоправданно дорого. Ну как при таких вводных, не имея компетенций в IT, можно разработать какой-то сервис или даже несколько сервисов? Никак!
Более того, не понимая, как устроена разработка и «что есть что» в IT, невозможно было банально выбрать оптимальный стек и оценить квалификацию разработчиков. Некоторые «трушные» программисты в то время предлагали писать сервисы и интернет-проекты на Java — сейчас я понимаю, насколько это утопичная идея.
Постоянно сталкиваясь с этими проблемами, я начал погружаться в IT — смотреть видео на YouTube по существующим технологиям и стекам — и даже пробовал что-то писать на PHP. Но с одной стороны не было достаточного интереса — становиться разработчиком не хотел, а с другой стороны не было времени глубоко погружаться в это.
К 2020 году модель трафиковых и контентных проектов сломалась, а ковид окончательно добил это направление, поломав всю экономику трафиковых проектов. Пора было что-то менять, и я понимал, что нужно уходить в разработку сервисов. А для этого нужно было глубоко погружаться в программирование.
На YouTube-канале SHIFU Николая Ясинского я узнал про курсы Хекслета — он рекомендовал их как одни из лучших среди тех, что были представлены в тот момент на рынке. И так началось мое знакомство с Хекслетом.
Проходить курсы в Хекслете я начал в 2020 году, вообще не понимая, чего я хочу и зачем мне это нужно. Начал прохождение курсов с основ PHP, но постоянно колебался в своем выборе — а может, лучше JavaScript? Или даже Python? В итоге поигравшись несколько месяцев с PHP, сменил программу обучения на Python. А дальше начались мучения и в буквальном смысле перманентное насилие над собой и своей психикой.
Как я уже говорил, цели становиться программистом я не ставил. Был абсолютно убежден в том, что сейчас быстро изучу то-то и то-то, не погружаясь в детали, и мне этого будет достаточно. Но как глуп и наивен я был!
Первые модули были простыми и с основами самого Python проблем не возникало. Но модули по настройке окружения вызывали вопросы и требовали понимания, как устроена операционная система: что такое процессы, какие там есть слои, зачем нужно разграничение прав и ответственности между ними и еще куча всего. И это я не говорю про алгоритмы, основы компьютерных сетей, базы данных... В общем, темный лес. «Да и зачем мне это вообще?», — думал я тогда.
В рамках профессии «Python-разработчик» я выполнял проекты с наставником – ох и намучился же я тогда! Когда один и тот же проект мне отправляли на доработку по пять и более раз, меня бесило все.
Я искренне не понимал, почему наставник придирается к деталям? Почему требует выделять абстракции и докапывается до малозначительных деталей — ведь все же работает, что еще нужно?
В общем, я мучился, страдал, но все равно шел дальше. Даже разобрался с рекурсией во втором проекте, сделал третий проект. Но потом все пошло не так.
Примерно с третьего проекта началась активная работа со сторонними библиотеками, для полноценной работы с которыми нужно достаточно хорошо знать и понимать объектную модель самого Python. Так, после столкновения с полноценной разработкой с использованием сторонних библиотек, мой прогресс заглох, причем на достаточно продолжительный срок.
Я искренне был убежден, что проблема во мне, и я чего-то не понимаю — ведь в курсах Хекслета все написано про ООП. Я проходил разные курсы и изучал туториалы по Django и Flask и от других авторов, вроде что-то писал, но уверенности не появлялось. Ну какой из меня разработчик?
Ловушкой для меня стала фраза в чате комьюнити Хекслета, что материалов, представленных в курсе по Python, достаточно, чтобы найти первую работу. Но меня не интересовал поиск работы — мне нужно было начать писать первые проекты. Пусть и примитивные — от идеи до полной реализации, в том числе деплоя. И от того, что у меня как будто ничего не получается, мой интерес к обучению угас (но не пропал!).
Читайте также: Из инженера-электрика и альпиниста — в бэкенд-разработчики. Мой путь в программирование
Охладев к разработке и не чувствуя уверенности в себе, я устроился в наём проджектом/продактом. Поработал недолгое время в нескольких проектах и воочию увидел, как устроена реальная разработка (часто в худшем ее проявлении). И до меня начало доходить, к каким результатам приводит отсутствие банальных инженерных практик, о которых я узнал из курсов Хекслета — бесконечные баги, срывы релизов, неоправданно долгий Time to Market, конфликты с оунерами и еще куча всего.
Проходя курсы Хекслета, я не понимал, зачем все это нужно. Зачем покрывать код тестами? Зачем автоматизировать деплой и развертывание инфраструктуры? Теперь и с инженерной, и с менеджерской точки зрения понимаю, зачем.
Поварившись в найме и устав от бесконечных совещаний, я выгорел и решил, что хочу вернуться к разработке — там хорошо и спокойно. За это время я не бросал полностью обучение: понемногу писал код, читал книги по операционным системам, управлению разработкой. И плюсом много общался с коллегами-разработчиками, перенимая практический опыт и видя проблемы, с которыми они сталкиваются.
Окончательно выгорев на последнем проекте, я твердо решил уйти в разработку. Первым решением было взять и раз и навсегда закрыть теоретические пробелы, на которые раньше не было желания тратить время.
Если раньше я хотел изучить все по-быстрому, прочитав какую-нибудь статью или пройдя курс, то после увольнения сел и прочитал в оригинале «Изучаем Python» Марка Лутца. Более 1500 страниц — от корки до корки! Эту книгу часто советуют для полноценного изучения Python, и она заслуженно считается «библией Python», потому что закрывает многие вопросы о том, как устроен язык изнутри и почему он устроен именно таким образом.
Именно прочтение Марка Лутца дало мне уверенность и глубокое понимание языка — то, чего мне не хватало раньше. Всем рекомендую!
Следующей книгой была «Asyncio и конкурентное программирование на Python» Мэтью Фоулера — она закрыла вопросы с конкурентностью и асинхронностью, без которой никуда, если вы хотите писать по-настоящему промышленный код. Отправить 1 миллион запросов через AIOHTTP, а потом через bulk_create записать результаты в БД? На изи!
Третья книга, которую читаю сейчас — «Python. К вершинам мастерства» Лучано Рамальо — в ней Python разбирается еще глубже. Автор показывает лучшие практики использования языка. Еще одна маст-рид книга для тех, кто уже знает базу.
И это мой главный совет — курсы-курсами, но нужно читать профессиональную литературу по языку, на котором вы пишете.
А дальше у меня все пошло-поехало. Я просто начал писать код и прикладные приложения на Django, постоянного гугля и в последнее время активно используя ChatGPT. Параллельно изучаю разные библиотеки типа Celery, покрываю код тестами. Недавно автоматизировал сборку Docker-контейнеров и их деплой через GitHub Actions, настроил плейбуки для конфигурирования сервера с помощью Ansible — все, чему учился в Хекслете.
Впереди еще много всего, что можно изучить — это одновременно и плюс, и минус разработки. Но впадать в перфекционизм я не собираюсь: программирование по-прежнему не самоцель для меня — это всего лишь инструмент для решения прикладных бизнес-задач, nothing more.
Результатом для меня стало то, что я окончательно вкатился в разработку и прокачал скилл, нехватку которого ощущал предыдущие несколько лет. Ушел в свои проекты и разработку сервисов (сейчас пилю один сервис на уровне MVP). Не мытьем, так катаньем — но своей цели я достиг. И самое главное — я начал получать удовольствие от этого занятия.
И знаете что? Это невероятное ощущение, когда ты можешь взять и реализовать приложение — от идеи до прототипа, а потом и законченного проекта, пусть и небольшого. Сделать все самостоятельно — это просто кайф!