Cat

Вхожу в IT - telegram bot (часть 1)

Данная статья открывает цикл статей о том как я вхожу в IT product уровня в сфере Telegram ботов на aiogram3. Тут я описываю сложности вхождения в коммерческий мир IT, высказываю свои мысли, рассказываю через какие трудности приходится пройти на старте продуктовой карьеры в IT.

Путь в IT Arduinum628 03 Октябрь 2024 Просмотров: 160

Вступление

Всем доброго дня! Моя предыдущая статья Сравнение hash map С и C++ с dict Python (часть 2) не закончила собой цикл статей про тему hash map. Еще должна была выйти статья с реализацией телефонной книги на C++. Но выход этой статьи переносится на 24 октября из-за новых событий, которые неожиданно втиснули тему вхождения в IT в мою писательскую деятельность. Я знаю, что на канале "Код на салфетке" сидит очень много новичков, которым интересна тема Telegram ботов и вката в IT. Я просто не мог не написать эту статью =) Статья содержит в себе информацию о том что делать новичку в новой сфере, как себя реализовать и даже зацепит вкратце тему старта обучения. Всё это на примере моей истории вката в IT. Возможно кого-то данная статья вдохновит на реализацию себя, возможно кого-то поддержит в его сложном пути в IT. Давайте пройдём этот сложный и интересный путь вместе и узнаем, что может ждать впереди новичка в IT.

 

Начало пути в IT

С чего всё начинается в IT? Обычно - с решения кем вы хотите стать и для чего вам это нужно. Несколько лет назад и я столкнулся с этим вопросом. Для чего мне это нужно я знал ещё с детства, когда начал играть в Lego. Программирование очень на него похоже - вы собираете программу и она превращается в единую конструкцию, которую можно запустить. Поэтому код для меня это что-то фановое и знакомое. Для меня важно чтобы мне нравилась моя работа. Мой двоюродный брат когда-то давно программировал для старых iPhone 3gs, 4s и увлекался компьютерами. Приходя к нему в гости, я вдохновился его примером. Мне нравилось наблюдать за его увлечениями, порой это было очень фаново. Помню тот момент, когда он просто хотел откатить прошивку своего старого iPad mini первого поколения и принялся изучать тему откатов и программирование на Objective-C. И самое классное - у него получилось то что он хотел и даже больше. Однако я знал, что это не мой путь в IT. На тот момент я даже не думал входить в эту сферу. Правда, некоторые перемены в моей жизни уже назревали, а именно мне надоела моя старая работа.

 

У вас бывает, что со временем вам надоедает ваша работа и вы просто увольняетесь потому что вы не хотите больше? Так случилось и со мной. Мне захотелось самореализации, а моя работа была тупиковой в ветви развития. Я даже испытывал что-то похожее на кризис или депрессию. В тот момент тема IT опять проскочила мимо меня, напомнив о себе. На работе у нас был парень, который рассказывал всем о том, что учится на курсах программирования. Самое интересное, что он даже запускал код на офисных ПК чтобы делать домашку. Коллеге он поставил Linux Ubuntu на старый ноут прямо в столовой. Глядя на него и наблюдая ухудшения условий труда на работе, я захотел перемен. Я уволился и решил попробовать выучиться на новую профессию. Потыкав Sololearn программу с интерактивными упражнениями по программированию я решил выбрать язык Python. Мне нравилась простота и лаконичность этого языка, а также универсальность и низкий порог вхождения. Оставалось выбрать способ обучения. На выбор было самообучение, платные курсы и IT универ. Я решил выбрать платные курсы, так как это была для меня новая сфера, а остальные варианты казались мне слишком сложными.

 

Самое забавное: сейчас я бы ни за что не выбрал платные курсы в качестве старта в обучении =) Потому что некоторые платные курсы сделаны хуже чем бесплатные обучающие видео на YouTube. Я хотел увидеть как выглядит профессия и думал, что курсы мне в этом помогут. Спойлер - курсы и работа это совершенно разные вещи. Работа и курсы не сопоставимы в принципе по сложности и самой деятельности. На курсах вас ждут упражнения, видео-лекции и методички, которые зачастую бывают устаревшими. Вам там дадут минимальную базу, которая не позволит полностью войти в профессию. Ещё вас могут подловить корочками об образовании, стажировкой и гарантией трудоустройства. У нас был бот для стажировок, на которые поступать нужно было самому. Никаких по сути плюшек в этом отношении для студентов, а стажировки короткие. Я не буду писать о том где я учился, чтобы не делать рекламу или анти-рекламу для конкретных онлайн курсов и никого не обижать. Вы можете подумать сами на моём примере, нужно вам это или нет. Я скажу лишь, что я получил там базу для минимального понимания, что такое веб разработка на Python и JS. Представление это очень поверхностное. Банальный пример: был курс по React продолжительностью один месяц, за который вы никогда не научитесь быть на уровне junior фронтендер на данном фреймворке. Однако базовое представление о том, для чего это нужно, вы иметь будете. Но всё же, не смотря на вышеупомянутое, я был прилежным учеником, сдавал домашки в срок, получил свидетельство об образовании, написал командный курсовой проект с бекендом на Python Django и фронтендом на JS React. Закончив обучение на курсах, я начал думать над тем куда двигаться дальше. А еще, очень будет интересно почитать как вы относитесь к платным курсам и про ваши впечатления от них?

 

Стажировки и стартап

Куда же двигаться дальше после курсов, самообучения или IT университета? До 22-го года можно было однозначно пойти на работу intern разработчиком в какую-нибудь IT компанию, которая принимает новичков. Так сделал мой друг и в 21-м году устроился intern разработчиком в мелкую фирму, которая делала софт на заказ. Он прошёл со знаниями основ языка JS. По современным реалиям это звучит фантастично =) У нас была группа после обучения, в которой люди делились опытом трудоустройства. Я был очень удивлён и расстроен, что малый процент людей трудоустраивается после курсов. Часто трудоустройство получается спустя год-полтора после окончания обучения. Я думаю, что все знают что произошло с IT рынком в 22-м году. Стажёрских вакансий стало очень мало и теперь новички должны быть как минимум Junior+ с хорошим знанием теории + опытом разработки. Какой может быть опыт разработки после курсов? Пет-проекты, написанные на курсах очень простые и, как известно, таких проектов пишут очень много. Лично мне такое даже вписывать в опыт работы стыдно. Курсовой проект по итогу обучения уже более сильная работа, но, как правило, его будет лень дорабатывать и сроки его реализации, как и сам код будут на низком уровне. Всё отягчает то, что преподаватели не делали ревью курсовых проектов. Ваш код, возможно, ужасен, а вы может быть и не в курсе. Тут я веду к тому, что если код работает, то это не значит что он хорошо написан. И сейчас при поиске работы у вас есть несколько путей. Вы можете подготовиться к алгоритмам и собеседованиям по теории и лайвкодингу (вариант для олимпиадников), с которым вам без опыта возможно придётся года полтора искать нормальную работу. Либо искать места, где вы получите опыт бесплатно либо за очень малые деньги. Если вы такой же как я - человек, который предпочитает учиться на практике, которая подразумевает процесс самой работы, то следующие варианты вам подойдут. Вариантов масса: хакатон, стартап (без финансирования), стажировка, opensource проект, мелкие фриланс заказы, IT мероприятия.

 

Я пробовал всё из списка кроме opensource проекта, поэтому мне есть о чём сказать. Взглянем на мой нелёгкий путь в IT практике по порядку. Первое место куда я попал для практики, был стартап (без финансирования). Нашёл их объявление на сайте для поиска вакансий. Я побыл там буквально два дня, а затем ушёл. Почему я так поступил? Тут несколько причин: бесконечная текучка разработчиков, беганье от проекта к проекту, сложные задачи для одного человека. Задачи по типу "изучай интернет-магазин месяц и далее в одиночку пиши такой же". Это даже для оплачиваемой работы очень большая нагрузка на разработчика. Я видел их код бэкендной части и могу сказать, что там огромное количество работы на одного человека. Вам решать, нравится такое или нет. Совсем другое дело если стартап вам даёт хороший опыт, не перегружая вас. Напишите в комментариях, был ли у вас опыт в бесплатном стартапе? Будет интересно почитать о вашем опыте. Самое интересное, есть ли те кто дождался финансирования такого IT стартапа?

 

Далее я попал на двухмесячную бесплатную стажировку на стек Python Django. Чтобы попасть туда, я писал тестовое + был лайвкодинг (задача по бинарному поиску). Тут компания была настоящей и я бы даже сказал навороченной по технологиям. Там были обещания по типу "лучших трудоустроим". Спойлер: никого из нас троих бэкендеров не трудоустроили =) При этом я слышал, что несколько человек из других направлений таки устроили на работу. Я так и не понял по каким критериям и как это делали. Сама работа оказалась практикой для студентов, аля учебный пет-проект. Практика для совсем нулевых по знаниям. Первый месяц мы проходили основы Django, а во втором накатали пет-проект с простой вёрсткой на Django template. Проект был уровня простого курса. Хотя по факту это не было стажировкой - мы просто написали проект в стол. Вывод насчёт коротких стажировок я сделал не самый радужный. Мне выдали значок, наклейки и сертификат. Но это всё никак вам не поможет трудоустроиться. На работу не устроят на такой стажировке с вероятностью 95%. Подобная практика поможет студентам, которых направили ВУЗы на практику. Остальным можно даже не пробовать. Тут тоже можете написать в комментариях про ваш опыт на стажировках сроком от одного до трёх месяцев. Мне интересно, насколько мои впечатления совпадут со впечатлениями окружающих. Иногда, конечно, бывают платные короткие стажировки с возможностью трудоустройства. Я больше рекомендую идти именно на них. Даже если не возьмут на работу, то хотя бы стажёрскую зарплату заплатят за три месяца активного труда.

 

Третьим местом, куда я попал на практику, была шестимесячная бесплатная стажировка на Python Django в моём городе. Для прохождения пришлось писать внушительных размеров тестовое, которое я писал неделю. Тут я наконец-то получил что хотел - полноценную командную разработку. Это было очень хорошее, интересное и весёлое время. Я наконец-то смог поработать в одной команде с продактами, проджектами, тестировщиками, аналитиками, бекендерами, фронтендерами и техписами. Кстати, если кто-то из них читает данную статью, то передаю пламенный привет =) Проджект даже попросил меня управлять задачами для бекендеров. Хотя, к слову, лидов не выбирают по активности в чате. От осознания этой роли мне было ещё веселее =) Задачи были самые разнообразные - от написания кода и настройки докер контейнеров до управления работой людей. У нас даже были dev и prod сервера. Проект носил благотворительный характер и у него был заказчик. Единственным минусом было малое количество код ревью от специалиста уровня выше нас. В остальном подобные стажировки это хорошая практика и достойная строчка в резюме. Если бы я остался на ещё две таких стажировки, то я бы имел полтора года опыта и мог даже увидеть выпуск данного продукта в свет. Если вы готовы полтора года работать бесплатно ради полного цикла разработки и полноценного опыта, то этот выбор для вас. Правда, чтобы сейчас туда попасть на стажировку нужно будет купить их курс по обучению. Наш поток, кажется, был последним кто бесплатно туда попал. Мне предложили остаться, но я хотел двигаться дальше. Мне хотелось начать переходить в разработку за настоящие деньги.

 

Переход на продуктовую разработку

Далее большинство, как впрочем и я, будет пытаться устроиться на работу после стажировки или стартапа. Я понял, что мне тоже пора. Накатал сопроводительное письмо и принялся искать вакансии на сайте для поиска работы. Я ожидал что, возможно, что-то изменится и эйчары будут более охотно действовать когда увидят что есть опыт стажировок восемь месяцев. Реальность оказалась не такой радужной. На приличных вакансиях вам прилетит приглашение, которое говорит о том что вас рассмотрят, а дальше тишина =) Меня подобные завтраки не мотивируют откликаться. Напишите в комментариях, нравятся ли вам подобные "приглашения" на сайтах для поиска работы? Конечно, за месяц откликов мне прилетали тестовые, были собеседования с hr и даже одно техническое собеседование. Но всё это меня не мотивировало продолжать этим заниматься. Стандартные задачи на тестовых не сделают из вас хорошего разработчика, который напишет хороший продукт. А технические собеседования по типу "лид Java разработчик, знающий Python поверхностно, проводит собес на Python бекендера" меня смешат. Я пару раз натыкался на вакансии где Python в компании это новый экспериментальный стек. Один раз после собеседования с hr через пару дней мне позвонили и сказали, что новый стек прикрыли =) И знаете что? Через месяц подобного мне стало откровенно скучно. Нет, правда, даже курьером за 60 000 и более в месяц вы можете устроиться на работу практически мгновенно, а тут при зарплате в 60 000 (если повезёт) я должен биться года полтора об эту стену. При этом процессе вы не учитесь писать хороший продукт. При этом процессе многие ещё и работают на другой работе, сидят за кодом по ночам. Как итог, многие новички просто бросают попытки, особенно те кого интересует в IT заработок денег, а не сам процесс. Мне хотелось чего-то нового, чувствовать, что я двигаюсь вперёд, а не буксую на одном месте год.

 

Далее я пошёл прощупывать другие варианты в целях продолжения развития. Сначала я наткнулся на карьерную настолку. Там мы играли в текстовую ролевую игру, отвечали на вопросы и голосовали за интересные варианты. Вопросы там были больше творческими. Они проверяли нашу способность решать задачи, креативность мышления. Там же можно было выиграть призы, пообщаться с эйчарами, представителями компаний, откликаться на вакансии. Я не ожидал чего-то большего в этом месте, но я немного развеял скуку и рутину. Мне понравилось играть и взаимодействовать с людьми. Что самое неожиданное для меня - я оказался на первом месте по баллам. Я первым выбирал приз из списка подарков. Жаль, конечно, что там не было офферов =) Я выбрал мягкую игрушку и подарил её супруге. Также параллельно с игрой я делал отклики на позиции, которые там были представлены. Можно сказать, что это были вакансии для мидлов. Ни ответа ни привета не было с них. А я, в принципе, и не ожидал другого =) Самое почти успешное моё действие было, когда я пытался выйти на вакансию общаясь с hr напрямую. Выяснилось, что есть вакансия моего уровня, но, к сожалению, для неё не было удалённой позиции. Переезда в другой город у меня в планах не было поэтому я отказался. А еще в группе мероприятия карьерной настолки мне попалось обсуждение двух хакатонов.

 

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

 

Мне написал человек, которому был нужен парсер картинок для обучения нейросетей. Он предложил мне назвать цену и я пошёл к знающему человеку, который мог сказать сколько это стоит на рынке. Этим знающим человеком был создатель канала, на котором я собственно и пишу данную статью =) Я не знал сколько это стоит так как опыта фриланса у меня не было, а попробовать взять заказ хотелось. Спасибо Ивану за совет, так как неадекватная цена могла в принципе отпугнуть заказчика. Сумма оказалась адекватной на 4 дня работы поэтому заказчик согласился. Работал я на адреналине все 4 дня =) Это было для меня большим достижением, а если ещё получу вознаграждение, то это будет вообще круто (думал я). Делая заказ, я старался быть максимально клиентоориентированным и задавал вопросы по тому какой продукт он хочет видеть, детали по функционалу и т.д. По окончанию работы я записал видео демонстрацию работы на больших и маленьких данных и отправил заказчику. Заказчика всё устроило и мы успешно провели сделку. Пусть сумма и небольшая, но это было моё очередное достижение в карьере. Я знал, что есть заказы куда дороже, а для них нужно было перейти на очередной уровень вверх.

 

Что я имею в виду под уровнем вверх? Это опыт в продуктовой разработке в направлении, где я могу написать код один или в небольшой команде. Также задача должна быть хорошо оплачиваемой, а сроки не должны быть огромными. У меня на тот момент имелся неплохой опыт создания веб приложений на Django. Но этот опыт подходит для работы в большой или средней команде, где сроки могут быть очень большими. Я в принципе не против работать в большой команде, но такую команду надо ещё найти, как и сам заказ для неё. Я хотел расширить свои возможные варианты работы. Есть ещё опыт в небольших скриптах и парсерах, но это очень быстро и дёшево. Я знал, что есть неплохой вариант для моих потребностей - боты. Обычного бота может написать один разработчик за несколько недель (если он знает как это сделать). Кроме того, бота можно использовать как микросервис, связав его с сайтом на Django. Для меня это новая интересная тема и расширение компетенций. Ботов можно писать для Telegram, Discord и ВК. На данный момент это основные популярные платформы для ботов. Хорошо, предположим, я выбрал направление для улучшения своих навыков, а что дальше? Ранее я пробовал пытаться пройти в небольшой стартап (с финансированием) на Telegram боты, писал тестовое. Мне сказали, что им нужен кандидат с опытом написания ботов. На фрилансе тоже нужно иметь опыт, чтобы написать качественный продукт и при этом уложиться в сроки. Можно, конечно, учиться на месте, но в сложной задаче вы рискуете сорвать сроки или написать некачественный продукт. Также вы рискуете перегореть на работе, сидя за ней днями и ночами. Поэтому висел вопрос, где получить этот недостающий опыт? Я обратил своё внимание на канал "Код на салфетке".

 

Telegram бот product уровня

На тот момент я уже был автором на канале и знал, что одним из основных направлений канала является Telegram боты на Aiogram3. На канале имеются бесплатные обучающие статьи для новичков. Они хорошо подходят для того чтобы вы могли получить начальное представление о Telegram ботах, написанных на языке Python3 с использованием библиотеки Aiogram3. Также, у создателя было несколько стримов на эту тему. Ссылки на статьи с уроками и стримы я оставлю в ссылках к статье. Сначала я сам изучал начальные уроки в статьях и попробовал написать простейшего бота для друга. Это был простенький парсер данных с сайта. Это не дошло до чего-то сложного так как друг отказался от этой идеи спустя неделю. Однако это была небольшая практика, которой я благодарен. Покажу вам один скриншот, оставшийся от того старого бота.

 

На скриншоте вы видите разделы из интернет-магазина. Это ссылки, которые я получил с сайта по запросу arduino (плата с микроконтроллером). Чуть ниже на скриншоте я получаю одну ссылку, которую я получил введя название раздела. Нажав на ссылку, вы перейдёте на веб страницу с разделом интернет магазина. Это были тестовые данные. Собирать данные в принципе можно с любого сайта. Я понимал, что бота я написал абы как и мне требовалось набраться мастерства. Я хотел научиться делать качественный продукт, в котором будет правильная архитектура написания приложения, который будет оптимизирован, чтобы он работал асинхронно с базой данных и много чего ещё делал. Тут у меня возник выбор. Либо я сам, набивая шишки, буду брать лёгкие и дешёвые проекты на фрилансе, постепенно повышая свой уровень и сложность проектов. Либо я найду наставника, который уже в этом профи и прокачаюсь с ним гораздо быстрее. Я бы выбрал первый вариант если б у меня не было возможности кого-то найти. На тот момент я знал, что автор канала "Код на салфетке" Иван не просто писал гайды, но и написал ни один заказ на фрилансе по теме ботов. Кроме того, он много раз говорил о расширении работы на фрилансе и что ему будет нужна команда. Это была идеальная возможность для прокачки навыков как минимум. Я договорился с Иваном о моей практике.

 

Мне дали ТЗ - бота интернет магазина, от которого отказался заказчик. Это оказался полноценный и сложный проект продуктового уровня. Мы разделили его на две версии, после каждой из которых Иван делал мне код ревью, а я на его основании проводил правки кода. Первая версия по сложности выше чем тот бот, что я писал до этого, но и она является просто основой. Вторая же версия будет очень серьёзного уровня. Во второй части статьи вы узнаете о первой версии бота. Я расскажу вам о трудностях, с которыми столкнулся при написании бота, и покажу что у меня получилось в итоге. Дальше будет ещё интереснее :)

 

Заключение

  1. Поговорили о начале пути в IT;
  2. Узнали об опыте на стажировках;
  3. Посмотрели каким может быть переход к продуктовой разработке;
  4. Узнали, где можно получить начальный опыт в Telegram ботах на Aiogram3;
  5. Узнали о моём личном опыте и планах на продолжение карьеры.

 

Ссылки к статье

  1. AIOgram3 1. Начинаем создавать Telegram-бота
  2. Бот для управления сервером на AIOgram - первый стрим (YoTube)
  3. Бот для управления сервером на AIOgram - первый стрим (Rutube)

Автор