Последние четыре месяца я работал полный рабочий день разработчиком программного обеспечения Full Stack. И это было здорово.

Это был мой первый опыт работы в качестве программиста, поэтому я считал себя младшим, несмотря на то, что почти два года программировал в университете, участвовал в дополнительных проектах и ​​хакатонах. На этот раз я погрузился в реальный мир создания функций, поиска решений для улучшения текущей кодовой базы, исправления ошибок (любимая задача каждого программиста…) и использования творческих способностей, управления временем и коммуникативных навыков для выполнения работы. Обязанности сделали меня более зрелым, и я узнал многие аспекты отрасли, в которой работал. Как это было?

Я работал в компании Transnomis Solutions, которая занимается системами управления дорожным движением. Для этого он собирает данные с датчиков дороги, обрабатывает их и предоставляет пользователю чистый и полезный пользовательский интерфейс (пользовательский интерфейс) для отображения и анализа информации. Я работал в относительно небольшой команде, особенно по сравнению со многими другими моими друзьями, работающими в более крупных фирмах. Для меня это было преимуществом, так как мне давали важные задачи, и у меня всегда было много работы, которую нужно было выполнить. У меня была гибкость, чтобы работать над любой частью проекта, что дало мне уникальную возможность испачкать руки по многим его аспектам: от выполнения запросов к базе данных и настройки логики для таблиц до функциональных возможностей серверной части для управления data, для внешнего отображения полученной информации, для проектирования шлюзов и работы с данными ГИС для улучшения алгоритмов поиска пути.

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

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

Еще один важный урок, который я понял только в конце семестра, - это полезность моей первой работы в качестве QA. Для тех из вас, кто не слишком знаком с технологической отраслью, QA часто рассматриваются как менее полезные и менее квалифицированные члены команды. Это очень неправильное предположение, потому что без надлежащего тестирования любой проект потерпит неудачу в течение нескольких недель после запуска. Работа в качестве QA дала мне инструменты и аналитическую перспективу, чтобы не только находить ошибки и недочеты в приложении, но и тщательно проработать все возможные сценарии при тестировании, чтобы убедиться, что каждая мелочь принята во внимание. Это действительно может иметь большое значение при эффективном применении, поскольку это даже помогло мне придумать дополнительные функции, которые улучшили бы текущую систему, поддерживая сценарии, о которых раньше не думали.

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

Как и все хорошее, это длится недолго. К концу семестра я был готов вернуться в школу и снова изменить свой распорядок дня. Срок работы действительно велик, потому что, когда работа сделана, она действительно сделана, и больше не нужно делать никаких заданий или экзаменов, к которым нужно учиться. Это дает возможность однажды расслабиться дома и заняться несколькими хобби, при этом совесть не будет кричать на вас из-за того, что вы не учитесь. Моя работа в качестве разработчика, безусловно, запомнилась, она научила меня не только тому, насколько сложны и интересны дороги, по которым мы все путешествуем, но и тому, как справляться с проблемами, решать проблемы, общаться с коллегами и писать чертовски хороший код (на по крайней мере, некоторые из них были).

Если вы раньше проходили стажировку или работали в кооперативе, как вы это узнали? Как это было по сравнению со школой? Позвольте мне знать в комментариях ниже. Надеюсь, вам понравилось чтение :)