Debug_Yourself – Telegram
Debug_Yourself
669 subscribers
87 photos
3 videos
7 files
80 links
Рассказываю про свой путь становления программистом.
Делюсь информацией, которую изучаю, проектами, которые делаю, шишками, которые набиваю. Также иногда проскакивает диванная философия.

Админ - @arutemu_su
Download Telegram
Какой градиент смотрится лаконичнее?
Anonymous Poll
52%
Зелено-желтый
32%
Желто-красный
17%
Оба
Обновил своего телеграм бота. Хотя по факту просто лого заменил и кое-что в коде подправил по мелочи.

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

Фишка в том, что всем пользователям, которые не закончили сессию, бот предложит ввести команду start, тем самым получив актуальную инфу о товарах. Быть может кто-то учиться писать ботов и ему будут интересны мои исходники.

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

Если вам интересен процесс, то ниже опишу вопросы и атмосферу, которая царила в тот вечер. Надоумил меня на это, кстати, один из подписчиков канала, за что ему огромное спасибо.

В общем и целом все прошло хорошо. Договорились на 9 вечера собраться в дискорде. Я предварительно выпил красного чая, чтобы мозги лучше соображали, повторил некоторые моменты по JS, пробежался еще раз по документации реакта и был готов к жесткому бою.

Однако по факту в беседе царила легкость. Думаю, что там парни моего возраста, поэтому никакого дискомфорта не возникло. Сначала была пару вопросов по HTML и CSS, на которые я ответил, что никогда особо не вдавался в подробности. То есть я сказал, что знаю про общие принципы, что есть теги, их атрибуты, как менять свойства при помощи css, но если спросить меня, к примеру, как сделать что-то хитровыебанное, то я скорее всего просто погуглю.

Потом зашел разговор о реакте. Был разговор про компоненты, про виртуальный DOM, про значимость key в списках, а также хуки. Сюда же можно добавить вопрос о том, что из себя представляют веб-сокеты.

В целом, вопросов было, наверное, не так много. Половину собеседования я просто рассказывал, что вообще делал. Упомянул про чайного бота, про чайный парсер. Но тут, конечно, большой для меня минус в том, что конкретно фронтэндерского проекта в моем рукаве не было.

Получается, что у меня уже сформировались какие-то теоретические знания, но они не подкреплены практикой. Собственно, поэтому мне сказали, что в теории могут взять меня как стажера на +- 2 недели. А там уже на джуна с ЗП.

Я доволен, что не ссыкнул и спокойно пособеседовался. В таких вопросах вообще надо придерживаться правила «созидательное похуй». Даже при условном отказе я ничего не потерял, напротив, появилась уверенность, что я что-то да и понимаю.

P.S. Немного обидно за то, что не погоняли по чистому JS, на который я так старался сделать упор. Но я уверен, что в крупных компаниях собес был бы жестче.

Спасибо, что читаете!
За пиалой чая меня посетила интересная мысль. Обычно принято считать, что подлинная красота скрывается от нашего взора. Надо быть чутким и иметь определенную долю усердия, чтобы обнаружить ее. Однако думается мне, что сегодня мы проживаем век, когда не красота прячется от нас, а мы прячем от нее свой взор.

Быть может красота никогда и не пряталась на самом деле? Ведь мы сами выдвигаем к ней требования, которые всегда претерпевали изменения. Просто сейчас, в эпоху информационного чревоугодия, эти требования как нельзя примитивны. То, что проще, динамичнее, с яркой обложкой и как можно короче - вот что склонно привлекать внимание в наши дни. Требующее же времени и терпения чаще остается незамеченным. Незамеченным по инициативе наблюдателя, ибо такова его воля - прятать свой взор.
Друзья! Очень хочется уже сесть, покодить и поделиться с вами проектами, но последнюю неделю я целиком и полностью занят своим хобби – чайным делом.

Мне пришла новая поставка чая, и я решил очень ответственно подойти к вопросу оформления товара в свой магазинчик. Сначала я закупил оборудование для фотосета чаев и посуды, после чего мы несколько дней спали по 4-5 часов, чтобы сделать качественные фотографии. Днями же я в фш сидел и обрабатывал их, чтобы получить результат близкий к совершенству.

Что я хочу сказать? Во-первых, мне будет приятно, если вы оцените проделанную работу. Весь процесс ведения своего дела (можно сказать, что бизнеса) я описываю на втором канале @tea_votary. Во-вторых, скоро я закончу основную работу с чаем и смогу снова вернуться к проге. Помимо сайта и crm надо будет обновить бота для телеги, чтобы была возможность удобно просматривать каталог товаров.

В общем, впереди много интересного. Спасибо всем, кто читает и следит за мной, самурайский вам поклон.
С течением времени само время обесценится.

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

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

Имея такую власть, есть все шансы моментально обесценить как время, так и саму жизнь. И, возможно, истинный страх должен заключаться не в подчинении, а в обладании. Открытие ядерной энергии – чем не хороший пример?
Больше месяца я скитался по цифровым просторам, ведомый желанием найти хорошую вакансию. По итогу на глаза попалась любопытная должность, где сразу было выложено тестовое задание, что, по моему мнению, является грамотным подходом.

Так как я был не ограничен в сроках, да и параллельно много иных дел навалилось, выполнял задание около двух недель. Работа еще не закончена (не все требования задания удовлетворены), однако функциональная составляющая в принципе готова.

Если очень коротко о самом задании, то надо было реализовать редактор маршрутов — одностраничное приложение, в котором пользователь в интерактивном режиме может создавать на карте маршрут, указывая начальную, конечную и промежуточные точки движения. Для каждой точки маршрута можно посмотреть ее адрес.

На картинке показана схема, которую предложили авторы задания. Этой схемы я и придерживался. Результат можно оценить на нижней гифке. В целом считаю, что получил очень большой и необходимый опыт в работе с реактом.
This media is not supported in your browser
VIEW IN TELEGRAM
В приложении можно вводить адрес (присутствуют подсказки), который при нажатии на Enter добавится в общий список, а также отобразится на карте. Несколько таких адресов образуют единый маршрут. Сама карта интерактивная - все метки можно передвигать и их координаты реактивно меняются.

Также список состоит из drag ’n’ drop адресов, которые можно спокойно передвигать, изменяя порядок. Маршрут будет перестраиваться также реактивно. При клике на адрес он окажется в центре карты.

В целом, это все. Есть необходимость поработать с некоторыми нюансами (адекватное отображение в мобильной версии), а также добавить unit тесты. Если смогу, то уже на этой неделе закончу все и отправлю, а там уже останется только ждать.
Что касается моего последнего проекта «редактор маршрутов», очень хочется снять два полноценных видео: в одном я бы хотел рассказать о том, как происходит процесс решения тестового задания и трудоустройства в целом с точки зрения джуна-самоучки; во втором же я бы углубился непосредственно в техническую составляющую и показал от А до Я как можно написать такой проект.

Как знать, быть может до конца года я найду время и сделаю это. А пока что поделюсь с вами тем, что можно использовать для реализации такого проекта:

1. React. Можно также Vue или Angular (что там еще есть), однако в моем случае в задании был указан именно реакт.

2. Стэйтменеджер (опционально). На данный момент я не использовал подобное так как изначально хотел поработать именно с контекстом реакта. Не могу судить на сколько удачно это у меня получилось. Надеюсь, когда буду показывать задание на собесе, там мне пояснят за это.

3. Если в качестве карт вы решили работать с яндексом, то React-yandex-maps. Довольно неплохая вещь (по сути обертка) для работы с yandex api. Стоит отметить, что для запросов потребуется личный api-ключ, который можно без проблем получить у яндекса в кабинете разработчика.

4. Material-ui. Позволяет довольно просто и эффективно набросать макет, предоставляя набор готовых реакт-компонентов.

Спасибо, что читаете!
Самое обидное в собеседовании, к которому ты подготовился и морально и физически - это когда такое собеседование не состоялось. Когда ты сделал тестовое задание, а тебя сразу отшили, не предоставив даже возможности отстоять свое мнение. Именно так и произошло со мной.

Мои последние посты были посвящены тестовому заданию и устройству на работу. Напомню - надо было сделать редактор маршрутов. В общем-то, вы можете теперь повзаимодействовать с приложением тут, а сам код выложен в репозитории.

В процессе разработки меня поджидало много нового и неизведанного, но энтузиазма мне было не занимать. Поэтому когда была написана последняя строчка кода и все работало, я даже поверить не мог в то, что способен на подобное.

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

Если вы повзаимодействуйте с моим приложением, то увидите, что в поле вбивается нужный адрес и при нажатии enter этот адрес добавляется на карту, а также в список адресов. Так можно добавлять несколько адресов, между ними прокладывается прямолинейный маршрут; адрес точки можно интерактивно менять как и последовательность адресов в целом. И вроде бы все логично, ведь ИМХО мы, пользователи, привыкли пользоваться картами именно так - вбиваешь адреса, между ними строится маршрут.

Но задание же требовало, чтобы пользователь центрировал нужный адрес на карте сам, а потом вбивал в поле название типа «точка 1». Дальше точка добавляется в список, на карте рисуется ее маркер.

Только перечитав задание несколько раз я уловил это требование, но блядь насколько же оно не логичное. Еще более не логичным является то, что в теоретических вопросах тебя спрашивают про то, что такое «хорошее» приложение с точки зрения клиента, ожидая упоминания про хорошие UI/UX, а на практике за хороший UX «дают по рукам».

На самом деле если уже на то пошло, сумев воплотить текущую реализацию добавления точек, я бы точно смог посидеть и сделать именно то, что они требуют. И это вроде как должно быть понятно адекватному человеку. Просто им не нужен джун, но прямо об этом они говорить не хотят. Вместо прямоты они будут мять жопу и, лицемерно улыбаясь, «тактично» сливаться.
Спасибо большое всем, кто читал в этом году. Буду очень краток. В грядущем году хочу неимоверно много кодить, чтобы глаза кровью наливались. Хочу созидать как можно больше вещей – это касается и моего чайного дела, и нескольких других веб-проектов. Ведь в конце концов плоть эфемерна. Созидания следы будут жить вечно.
В начале года со мной связался какой-то парень и предложил «работу». Хотя правильнее сказать, он предложил скинуть ему на почту резюме и желаемую позицию.

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

В конце концов я выразил личные пожелания относительно позиции фронэндера с перспективой фулстэка и прикрепил резюме. Важно, что я четко упомянул JS и React, да и сам парень когда первый раз написал мне, акцентировал внимание на том, что им нужен реакт.

По итогу мне приходит файл с тестовой алгоритмической задачей на Java с подписью «для бэкэндера». Честно, я даже тратить время не стал, ибо если люди не могут организовать нормально процесс найма, не понимают, кто им нужен, то что уж там про саму работу говорить.
Друзья! Я не раз упоминал, что у меня есть чайное хобби, над которым мы трудимся командой из двух человек. Сейчас дизайнер работает над макетом, однако нам бы хотелось, чтобы результат порадовал как можно больше покупателей. В связи с этим мы сделали небольшой опрос на 5-7 минут, который поможет нам в разработке.

Пройдите его пожалуйста. Только ваша обратная связь поможет нам понять, на что стоит сделать упор при реализации данного проекта.

Сам опрос тут
Продолжая осваивать сферу подкастов, совместно с напарником я выпустил третий по счету подкаст, в котором мы взяли душевное часовое интервью у отечественного композитора Free Flow Flava - Александра Осипова.

Решил поделиться с вами тут, может кто-то знает FFF и слушает музыку в жанрах ethnic Hip-Hop, phonk и др.

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

Пока что его можно послушать только в вк, но если кто-то может подсказать, как распространить по другим площадкам, смело пишите мне @arutemu_su.
Как я умудрился попасть разрабом в Яндекс?

Это будет очень захватывающая и объемная история, но я обещаю описать ее так, чтобы читалась на одном дыхании.

Начать стоит с того, что я не выходил на связь почти два с половиной месяца. И причина тому не лень или депрессия. Напротив, это были месяцы плотной и плодотворной работы. Ведь за это время я успел попасть на бесплатные курсы в EPAM, потом неофициально поработать с товарищами и впервые в жизни получить за написанный код деньги. После чего случайно откликнуться на стажировку в Яндекс и уже почти оказаться там. Давайте по порядку.

Я стал ощущать желание набраться уже реального опыта. И тут однокурсница говорит, что можно пойти на бесплатные курсы в EPAM (такая типа крутая международная IT компания), потом к ним же на стажировку, а потом и вовсе в штат. Путь несложный, но достаточно долгий. На курсах надо учиться около 3х месяцев, потом еще столько же на стажировку (при занятости около 30 часов/неделя) и только потом в продакшн.

Важно, что в ЕПАМе ни вы, ни вам за стажировку не платят. С одной стороны это не плохо, но с другой вы около 6 месяцев тратите время, причем 30 часов/неделя - это сродни подработке. А на что жить и кушать?

У меня ситуация не критичная и родители инициативу готовы были поддержать, но очевидно, что многие просто не вывезут. В любом случае вариант приемлем, поэтому я записался на курсы. Просто так, разумеется, не попасть, ибо на поток берут 20 человек. Но если какой-то опыт с JavaScript (JS) и прогой (ООП) в целом есть, то стать студентом ЕПАМ вполне реально. Также требуют английский B1/B2, и это обоснованно для них, потому что вы потенциально будете работать как с иностранными клиентами, так и с коллегами.

Ходят слухи, что у всех зачисление в епам было по-разному. Кто-то, как я, проходил вступительный онлайн тест по js и тест по английскому, после чего было общее собеседование с hr по видео. Там минут 5-10 идёт разговор на английском, переходя на беседу по душам на могучем русском, где hr пытается узнать твою мотивацию.

Кто-то, напротив, вдобавок ко всему вышеописанному ещё и технические собесы проходил, где судя по всему решал задачки на JS. Зависит это, думаю, от начального теста.

Что же из себя представляют сами курсы? Это занятия 2 раза в неделю по 1-2 часа (вечером) с некоторым количеством дз. На лекциях сначала идет html/css, потом js, потом react. В конце концов надо будет сделать несложное react приложение, защитить его + пройти тех. собеседование. Если все проходит успешно, ЕПАМ зачисляет вас в лабораторию (на стажировку).

Тут важно отметить, что все описанное происходит дистанционно, что для многих может служить плюсом (хотя раньше надо было ездить в офис). Можно выбрать занятость (по-моему 20/30/40 часов/неделя) и стажироваться. Однако ходят слухи, что даже если выбрать 40 часов, то 2-3х месячная стажировка может растянуться. Почему? Да просто тебя как джуна некуда будет пристроить.

В ЕПАМе такая модель, что ты устраиваешься на оклад и тебя определяют в проект. Может случиться так, что для тебя не найдется подходящего проекта, поэтому ты будешь просто получать деньги. В общем не буду уходить в дебри, скажу лишь, что ситуации разные. В целом вектор развития себя как прогера через EPAM имеет место быть. Там настолько много внутренних собесов, что JS (если мы говорим про фронтэнд) вы уверенно освоите и потом устроиться в другую фирму проблемой не будет.

Тут мы плавно переходим к моей первой неофициальной работе. Есть у меня товарищ, с которым мы вместе учились в бакалавриате. Волею судеб мы оба оказались в Питере, где он основал свое рекламное агенство. Иногда приходят клиенты, которым надо сделать сайт/бота/скрипт. Собственно, товарищ предложил поработать, я согласился. Оплата по проектам (хотя можно было и за оклад работать).

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

Второй бот был некой формой обратной связи. У клиента есть сообщество, связанное с переездом/жизнью в Германии (если я правильно понял). Он хотел, чтобы люди из телеги могли писать свои посты, которые потом должны отправляться в вк. Тут я и с api vk поработал, и с телегой, и глубже освоил саму библиотеку telegraf.js для тг ботов.

Также стоит отметить внутренний проект для самого агенства: я делал по факту фул-стэк приложение, которое позволяло агрегировать сотни чатов в БД, потом разбивать их по категориям и в конце концов отправлять различные офферы по разным категориям. Собирать чаты и рассылать сообщения я решил при помощи бота; данные хранил в MongoDB; на nodejs написал API для взаимодействия с БД; фронтэнд был реализован на React.

Решая все эти задачи, я заметил, что когда за написанный код получаешь деньги, то будто бы уверенности в своих силах больше становится. Безусловно, это хорошо. Однако тут же в процессе работы я познал боль взаимодействия с клиентами, которые, порою, не могут внятно описать, чего хотят, и это сильно замедляет и усложняет разработку.

И, значит, получаю небольшую денежку за проекты, обучаюсь на курсах в ЕПАМе и тут мне звонят с Яндекса и говорят «мы нашли ваше резюме на hh. Хотите попробовать к нам на стажировку?»

Я тогда прокрутил в голове сразу две мысли:
1. Яндекс топовая компания. Туда наверняка на одно место сотни человек. Куда мне с моим мизерным опытом в проге.
2. А что я, собственно, теряю?

Таким образом я соглашаюсь и получаю входное задание. Оно состоит из 4х задач, которые надо решить в течение 6 часов. В целом на то, чтобы пройти этот тест, отводилась неделя. Поэтому я разгреб немного свои дела и сел бодаться с тестом.

Надо ли говорить, что каждое задание выглядело как Шао Кан из Мортал Комбат. Причем все из разных тематик. Первое задание было на хорошее знание самого JS. Условно, был дан чей-то код и описание того, как он должен работать. Мне надо было исправить его.

Этого босса я одолел за 1.5 часа и был несказанно рад этому. Следующее задание представляло из себя хитрую верстку (а я верстку, да еще и пиксель перфект, терпеть не могу), поэтому я пропустил его.

Третье задание было на рекурсию, и его я не осилил. У меня всегда были проблемы с ней, поэтому я долго над ним не сидел. Надежда оставалась на последнее задание, которое по итогу высосало из меня силы и душу.

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

По итогу я как будто бы нашел зацепку, которая говорила, что мне не хватает знаний, чтобы продвинуться дальше, но я на верном пути. Поэтому я все свои мысли описал в комментариях к заданию. Время подошло к концу. Я отправил лишь одну решенную из четырех задач и понял, что этот путь закрыт.

Как вдруг через пару дней со мной в телеге связывается hr яндекса и говорит, что я прошел первый этап и что самое интересное еще впереди.

Теперь мне предстояло пройти часовой собес по видеосвязи 1 на 1 с прогером из Яндекса. Что было по факту? Мы созвонились в зуме и я за час решал 3 задачки. Они были в разы легче, чем предыдущие. Также все они были на чистом JS и в основе своей направлены на смекалку. Я старался использовать как базовый синтаксис, так и фичи ES6.

Самое тяжелое здесь – это отсутствие среды разработки. Ты просто пишешь код, компилируя его по факту в голове. Его нельзя 100500 раз дебажить. Хотя там подсвечивался синтаксис, и на том спасибо.
Поэтому пишешь решение, говоришь «готово» и там уже ее либо принимают либо нет. Но стоит сказать, что интервьюер не валит. Напротив, он местами может помочь. Главное - надо размышлять вслух. Человек слышит ход твоих мыслей и уже составляет о тебе портрет в своем отчете.

По итогу мы закончили беседу и я предположил, что это все. Больше ведь этапов не будет, это же не на полноценную работу, а всего лишь стажировка? Довольно сладко звучащее заблуждение.

Через пару дней со мной вновь связывается hr и говорит, что я прошел на следующий этап – 1.5 часовое собеседовение по алгоритмам. Тут я понял, что дело реально пахнет жаренным и назначил эту встречу через неделю, чтобы хоть как-то подготовиться. Второе довольно сладко звучащее заблуждение.

Я просто не смог найти время, чтобы адекватно что-то почитать по алгоритмам. У меня сейчас последний год магистратуры (высертация, все дела). Плюс намечающийся переезд. В общем я просто принял это и подумал «хер с ним, на текущих знаниях буду вывозить».

Самое смешное, что это все было каким-то преувеличением, ибо этот собес был точно таким же, как и прошлый, только с другим человеком. И задачу я решал уже одну, а не три. Правда задача была посложнее, поэтому я час с ней бодался, но одолел.

В итоге за плечами было два пройденных собеса и готовность к тому, что впереди как минимум столько же. Я все еще не верил, что из этой затеи что-то получится, но азарт и интерес двигали меня дальше.

По итогу мы созвонились с hr и она сказала, что теперь предстоит финальный собес с командой. Но таких команд, которые хотят со мной поговорить, оказалось аж 4. Всю эту неделю, собственно, я проходил эти собесы.

Каждая команда занимается отдельными проектами, многие из которые мне будет тяжело описать (я просто не до конца догнал их суть). Но могу точно сказать, что последняя команда занимается браузером и там очень много задач на чистом js. Третья команда занимается внутренним сервисом для автоматизации процессов в яндекс токоле. Там очень много задач как на nodejs, так и на react.

На текущий момент я не могу точно сказать, что я устроился в Яндекс, но все собесы пройдены и сейчас осталось лишь мне выбрать команду, а команде меня. Думаю, что за следующую неделю этот вопрос решится и я реально попаду в далеко не самую худшую IT компанию.

Причем мне обещали за стажировку больше 40к в месяц (если на 40 часов/неделя) выходить. Плюс бесплатное питание там + крутое оборудование (но об этом всем я расскажу уже по факту). Мне кажется, что не многие джуны на такое могут рассчитывать. Но самое главное, что тут будет жесткий буст навыков.

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

Спасибо, что читаете!