Ранее на этой неделе я получил уведомления об отказе от двух разных компаний, в которые я подал заявку на должность инженера-программиста. Я был рад получить ответы от компаний, в которые я обращался через Интернет или по рекомендации, но позже меня охватило беспокойство, когда мне представили оценки по кодированию. Будучи недавним выпускником учебного лагеря по программированию, я чувствовал себя довольно уверенно в своих навыках программирования. После выпуска я также активно изучаю и практикуюсь в решении задач с кодом от LeetCode.com и HackerRank.com. Однако, пройдя тесты по программированию и получив отзывы, я понял, что мне нужно освоить еще много навыков, прежде чем меня признают инженером-программистом или разработчиком. На этой неделе я узнал, что мне нужно попрактиковаться в решении более сложных задач, связанных с кодированием веб-сайтов и написанием кода, который соответствует требованиям технической индустрии.

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

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

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

Здесь я собираюсь попробовать и узнать, как улучшить свои навыки.

Чтобы улучшить свой JavaScript, мне просто нужно будет ознакомиться с вопросами, которые, скорее всего, появятся на собеседованиях. Я нашел этот сайт особенно полезным. https://www.edureka.co/blog/interview-questions/javascript-interview-questions/ Это 50 самых популярных вопросов, касающихся JavaScript. Я также прочитал Статью Мадасами М о 15 концепциях JavaScript, которые должен знать каждый (JavaScript) программист и попрактиковался в написании кода для этих концепций.

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

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

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