Всем привет! Хочу поделиться своим опытом (пока не очень удачным) «войти-в-айти» и получить советы, возможно, поддержку даже.
В июне 2021 года получила диплом (не IT) и, как это часто бывает, уже ближе к концу обучения в универе понимала, что хочется попробовать себя в программировании. До этого сталкивалась с этим разве что на уроках школьной информатики по Paskal, но мало что помню. В общем, начала проходить самостоятельный курс по Node.JS.
Было что-то вроде установки для самой себя в подходе к обучению. Что это тоже работа в какой-то степени, поэтому с понедельника по пятницу я занималась курсом (бывало, что какие-то дни «выпадали» ввиду тех или иных обстоятельств, но это было довольно редко).
Были трудности иногда даже на простых задачах, когда мозг ловил резонанс и уходил в рекурсию, а решение в итоге было простым.
Первый проект — «Игры разума», кажется, был сделан за неделю-полторы. Сами задачки казались простыми и делались быстро, потому что логика сводилась к математике, которую я люблю. А вот с точки зрения красоты и иммутабельности кода в тот момент был серьезный сдвиг с мертвой точки, потому что многое было в новинку.
Второй проект дался довольно трудно — я его делала около месяца. А к рефакторингу его я так и не вернулась.
Где-то в ноябре я наткнулась на вакансию в компанию, это было что-то вроде стажировки. Я заполнила анкету, в конце которой было предложено сделать небольшое тестовое и прикрепить ссылку на репозиторий на гитхабе. Оно было несложным, справилась довольно быстро. Но толика сомнений на предмет наиболее рационального решения у меня все-таки была. На тот момент, по направлению мне оставалось пройти курс по мини-фреймворку Express, основы реляционных баз данных - по существу, фундаментальные вещи для работы на бэке, и, кажется, завершить начатый курс по продвинутому тестированию. Точно не помню. И плюсом третий и четвертый проекты.
Через какое-то время мне позвонил HR и меня пригласили на очное техническое интервью. К слову, оно прошло не очень, и это было объективно, потому что тогда я была на середине курса по базам. Да, курсы заканчивались, но тем не менее, завершение курса — это лишь часть на пути.
На собеседовании были вопросы по базам, ответ на которые я узнала буквально на следующий день, продолжая изучение курса. Было немного обидно даже. В ходе собеседования меня спросили еще на предмет наиболее рационального решения тестового — честно говоря, я была в растерянности, но меня натолкнули на верный ход мыслей, и дома я доделала его.
Еще это было очень волнительно, и я путала самые элементарные понятия. Но, как минимум, я получила ценный опыт собеседований. Компания тоже очень понравилась, чувствовался основательный подход к тому, чем занимаются — что очень круто.
К концу декабря я закончила со всеми курсами, которые были по данному направлению, и мне оставались последние два проекта.
Параллельно откликаясь на вакансии, я приступила к третьему проекту. Но — как-то мне не терпелось посмотреть изнутри, что такое коммерческая разработка, и продолжать свое развитие, уже работая. Конечно, я понимала, что одного завершения курса при изучении с нуля, и не имея какого-то бэкграунда или работы в смежной сфере или на другом языке, было маловато. Поэтому я решила сделать свой небольшой учебный проектик — с написанием небольшого количества API, взаимодействия с фронтендом, через простые формы, валидацией данных, локальной базой, взаимодействием с внешними API. Собрать воедино то, что изучалось.
В середине января было еще одно собеседование (тоже стажировка). До него было тестовое по взаимодействию с API и короткий видео звонок с теоретическими вопросами в основном по HTTP-протоколу. Затем я переделывала тестовое под критерии оптимизации затрат памяти. Дальше — очное собеседование. Точно помню вопрос про асинхронность в JS, точнее, за счет чего она возможна (подталкивали в сторону движка JS). В голове крутился ответ про eventloop, но мозг идентифицировал его глупым. Да и ввиду волнения красноречиво и доходчиво описать, как это работает, я вряд ли бы смогла. Еще была задачка на переворачивание числа. Я точно знала, как решить через рекурсию, но лучший подход для этого — цикл, что меня и попросили написать, но... Волнение в таких ситуациях очень подводит. Я была рекурсией и я думала, как рекурсия! Мне снова отказали.
Я продолжала делать свой pet project и откликаться на вакансии. Были или отказы, или мне просто не отвечали, или я не подходила по требованиям и это сразу сводило все на «нет». Через пару недель был ответ, где предложили пройти небольшое телефонное интервью.
Я позвонила, меня поспрашивали про базовые вещи JS (зачем асинхронность, разница между bind и call, установка Node.JS, были еще какие-то вопросы, но я не помню — на какие-то не ответила). Потом был вопрос по работе с Vue.js и MongoDB (не работала с ними). Чтобы сделать какой-то оффер мне предложили в течение дня-двух написать маленький проект по взаимодействию node.js, vue.js и MongoDB. Я согласилась и тут же переключилась на это. Посмотрела основы синтаксиса запросов к Mongo, нашла проект с VUE и Node.js — начала смотреть взаимодействие между ними. Ближе к вечеру того же дня мне позвонил начальник и сказал, что ситуация несколько поменялась и меня могут подучить, что есть отдельные Vue-разработчики. «Круто!», — подумала я.
На следующий день поехала в офис, подписали договор. Дали рабочее место рядом с человеком, которому можно было адресовать все вопросы. Все было новым: от режима до людей и обстановки вокруг. Первое, что смутило, — офис в подвальном помещении. Затем стала на полном серьезе каждый день слышать довольное неоднозначные шутки о работе в этой компании и желании «найти нормальную работу». Чувствовался сумбур в организационных процессах. Делегирование обязанностей уборщицы (которой не было) менеджерам, у каждого из которых не по одному проекту и все это при условии вечно срываемых дедлайнов. По крайнем мере на моем проекте, ну такое прям.
К концу испытательного (две недели) начала подкрадываться та самая мысль «а может все-таки нет...». Но я решила остаться. В дальнейшем стало понятно, что до работы в этой компании у кого-то, как и у меня, не было коммерческого опыта работы или был, но совсем небольшой. Много начинающих разработчиков, которые делали задачи как могли, и как хотели, отсутствие какого-то планирования архитектуры/ структуры с дальнейшим замахом на безболезненное расширение проекта — как по мне, убийственное сочетание. Менеджеры тоже были новенькие. И абсолютно все воспринимали компанию как временный плацдарм. Тоже довольно сомнительная мотивация.
На проекте был сеньор, которого за два месяца ни разу не видела, и который мог просто не отвечать на вопросы и вообще не выходить на связь. Не говоря про рефакторинг, тесты и прочее. В общем, капля за каплей... я обновила резюме. На следующей день написал начальник. Вторым его сообщением, резюмируя, было: или я должна закрыть резюме, или смысла дальнейшего сотрудничества со мной не видели... Я немного оторопела, но резюме закрыла.
Где-то с неделю я думала про все это и написала, что мне не нравится такой подход, организация процессов и внутренние процессы в компании. На что мне ничего не ответили. А две недели отработки казались вечностью.
К концу моей работы в той компании мне предложили сделать тестовое — вполне можно назвать маленьким проектиком (правда, мне нужно было реализовать только REST API) — регистрация, аутентификация на основе jwt с refresh token-ом (до этого не делала), при выходе пользователя токен должен перестать работать, запрос новой пары токенов по refresh токену, работа с файлами (добавление, обновление, удаление и загрузка одного по id) и хранением данных о них в MySQL.
Старалась делать структуру легко дополняемой, с разнесением логики, валидацией через express-validator. Было отведено 3 дня, несмотря на то, что с утра до глубокого вечера делала, мне не хватило времени — большую часть его я разбиралась с токенами. Когда время подходило к концу, я отправило очень сырое решение, попросила время на доработку, если есть возможность, и мне повезло. Я доводила до ума, рефакторила, но последовал отказ ввиду того, что запросы к базе данных были напрямую написаны (sql), в остальном, вроде, неплохо было.
Еще неделю назад было удаленное собеседование, которое получилось не собеседованием, потому что при рассказе про прошлый опыт и что мне в нем не понравилась. HR честно мне сказала, что в роли наставника и помощника, в случае каких-то вопросов, может быть разве что strong junior — у них на проекте один сеньор и один джун, что все отделы построены больше на самостоятельной работе, но для меня на начальном этапе довольно важны ревью, советы/ объяснения/ комментарии, почему так или иначе, например, лучше не делать и т.д. И мы не стали отнимать время друг друга.
Сейчас делаю другое задание: GraphQL API, Apollo GraphQL Server, тесты на mocha + chai — c чем тоже еще не сталкивалась; Postgres, сжатие файлов, хранение на AWS S3, деплой приложения — тоже не работала. Довольно объемно. Разбираю по крупицам, понимаю, что нормально, когда сталкиваешься с тем, с чем не работал еще, но замечаю за собой, что как-то медленнее, что ли, работа пошла, наблюдается угасание запала.
Я знаю и верю, что все получится, что нет ничего невозможного, и в сравнении даже с первым тестовым, где нужно было написать малюсенькую функцию, уровень, определенно, повышается. Просто захотелось поделиться своей историей и узнать, у кого какой был первый опыт, с какими трудностями (внешними или внутренними) пришлось столкнуться, как боролись с демотивацией?
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях