- PVSM.RU - https://www.pvsm.ru -
От переводчика: Валерий Алексиев, опытный программист, рассказал [1] о том, что лучше делать разработчику ПО в самом начале карьерного пути. В частности, какие инструменты стоит использовать и на что обращать внимание на собеседованиях.
Первые несколько лет моей карьеры были годами интенсивного обучения. Я столкнулся с суровой реальностью и понял, что мне необходимо получить много различных скиллов, о которых я раньше даже не думал. Поэтому я решил написать небольшой гайд для других разработчиков. В статье раскрываются такие темы, как собеседования, работа программистом, ресурсы, которые помогут совершенствоваться.
Начав карьеру программиста, вы сразу поймете, что собеседования — отстой. Они могут быть ужасными для всех вовлеченных сторон. Это просто убийцы времени, стресс-образующий фактор и первое препятствие на пути к успешной карьере. Но вам придется иметь с ними дело, так что лучше знать, к чему готовиться.
Подготовка к битве
Вопросы и задачи могут быть самыми разными, в качестве примера приведу популярную задачу FizzBuzz.
Напишите программу, которая выводит цифры от 1 до 100. Но для чисел, кратных трем, нужно выводить Fizz вместо самой цифры, а для чисел, кратных пяти, Buzz. Для чисел, которые кратны и трем, и пяти, выводите на экран слово FizzBuzz.
Вроде бы все просто и ясно, как день, верно? На самом деле большинство начинающих программистов на собеседовании проваливают это задание. Я видел даже случаи, когда задачу не выполняли претенденты на позицию senior, причем у них был доступ к сети. Мой совет — выполните эту задачу до собеседования на том языке программирования, который вы используете чаще всего. В противном случае собеседование станет пустой тратой времени для всех его участников.
Конечно, вам необходим гораздо больший объем знаний. В частности:
— Основные структуры данных и алгоритмы: связанные списки, массивы, деревья и сортировки.
— Общая информация о «вашем» языке, включая неизменяемость строк, управление памятью и другое.
— Объектно-ориентированные концепции программирования, такие как класс vs объект и наследование.
Все это необходимо в буквальном смысле отполировать до блеска, если вам хочется себя показать с лучшей стороны. Я могу посоветовать вот такие ресурсы, которые помогут подготовиться к собеседованиям:
Skillbox рекомендует: Практический курс «Профессия веб-разработчик» [4].
Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».
И еще немного всего
Есть еще пара моментов, которые помогут вам приобрести дополнительные знания и опыт.
Во-первых, научитесь четко излагать свои мысли, а также описывать свои знания и возможности. Научитесь делать хорошие и складные резюме. Это может звучать глупо, но многие соискатели не умеют этого, у них не получается ни объяснить, что они собой представляют при личной встрече, ни составить грамотное резюме.
Во-вторых, выкладывайте примеры своего кода на GitHub или любой другой открытый репозиторий. Образцы кода не должны быть слишком сложными, но код нужно сделать чистым и рациональным. Это ваш шанс показать часть своих умений еще до интервью.
Попробуйте принять участие в open-source-проекте. Это покажет ваш опыт и научит работать в команде.
Собеседуйте вашего интервьюера
Да, на собеседовании должны спрашивать не только вас. Вы можете и должны интересоваться различными нюансами своей будущей работы и компании. Внимательно прислушивайтесь к ответам. Они могут быть очень важными, содержать явную и не очень информацию о том, что представляет собой новая компания, ее команда и работа.
Вот примеры вопросов, которые стоит задавать.
Каким будет мой стандартный рабочий день?
Это важный вопрос, поскольку задачи разработчика ПО в разных компаниях могут заметно отличаться. Если ответ будет не слишком уверенным или расплывчатым, можете считать это предупреждением, индикатором того, что здесь что-то не так. У человека, который вас нанимает, должно быть четкое понимание того, зачем вы компании.
Как вы тестируете ваше ПО?
В идеале тестирование должно быть достаточно разнообразным. Если ответом будет нечто вроде «Мы просто сразу все пишем без багов, хаха», — стоит понимать это так, что ошибки есть, но исправлять их никто не хочет или не может.
Какую систему контроля версий вы используете?
Важный вопрос, поскольку это необходимо для работы в команде. Если ответ: «Что, система контроля версий?» — то убегайте с такого собеседования быстро и далеко.
Если ваш собеседник начинает рассказывать о кастомной системе, то ничего хорошего в этой компании вас тоже не ждет, поскольку инфраструктура здесь явно давно не обновлялась.
Вы проводите ревью кода?
На самом деле, ревью кода — важный этап работы в команде, поскольку он позволяет выявлять многие ошибки. Если вам отвечают отрицательно, значит, командная работа поставлена не очень хорошо. Конечно, могут быть и исключения, но в большинстве случаев это так. Если вам говорят нечто вроде «Мы доверяем друг другу», то стоит задуматься. Скорее всего, в этой компании никто ничего не выверяет.
Какие образовательные программы вы можете предложить? Программист должен постоянно развиваться, так что большинство компаний предлагают возможность обучения. Если этого нет, значит, либо с деньгами проблемы, либо же разработчиков часто меняют.
Какой процесс разработки ПО вы используете?
В любой компании, где трудятся больше двух человек, должен быть какой-то алгоритм общей работы команды, отлаженный процесс. Если ничего такого нет, работа в этой компании будет похожа на езду на велосипеде, который горит, и все вокруг горит, все горят.
Как вы решаете проблему технического долга?
Технический долг, или долг кодинга — термины, которые обозначают баги-долгожители в коде или архитектуре приложения. Проблемы накапливаются и в конце концов становятся весьма серьезным препятствием для дальнейшей работы над проектом.
Если вам отвечают, что решений нет, а компания «фокусируется на новых функциях», то, скорее всего, проблема либо разрослась до такого масштаба, что решить ее нельзя, либо же хаос начнется в ближайшее время.
Что вы можете расказать о корпоративной культуре?
У разных компаний атмосфера и культура очень разные. Но имейте в виду, что вам нужно будет находиться внутри коллектива 40+ часов в неделю в течение нескольких лет, так что прислушивайтесь к тому, что вам говорят.
Окей, вы прошли все стадии собеседования и устроились на работу. Поздравляю!
Что теперь? Нужно осознать много интересных и не очень вещей. Поскольку мы программисты, давайте остановимся на обсуждении кода.
Хороший код
Он должен соответствовать следующим критериям:
Вот еще несколько вещей, которые вам предстоит усвоить.
Вы не будете много программировать.
Да, это может показаться странным, но действительно гораздо больше времени вы будете проводить за:
И еще давайте поговорим о скиллах, которые важны для карьеры программиста.
Отладка и чтение кода
Организация и планирование
Поскольку вам много придется много общаться с коллегами, заниматься планированием и выполнять таски (причем некоторые — одновременно), нужно уметь организовывать свое время. В этом вам помогут:
Когда использовать библиотеки?
Практически всегда. Нет нужды изобретать велосипед снова и снова. В большинстве случаев работа без библиотек приводит к потере времени. Конечно, это не значит, что вы должны оставаться в неведении насчет того, как использовать алгоритмы или какова структура баз данных, — ведь вам нужно понимать, как и где все это использовать.
Стандартные библиотеки большинства популярных языков чрезвычайно эффективны. Изучите документацию, чтобы лучше понимать, как их использовать.
Вы не должны бояться работать с дополнительными библиотеками, если они помогают сэкономить время. Это могут быть:
Постоянно совершенствуйтесь
Это может звучать банально, но учиться нужно даже во время работы, а также в свободное время — каждый день. В этом помогают онлайн-курсы, книги, блоги, а также второе (третье) образование. Также стоит уделять внимание конференциям и разного рода воркшопам. Среди наиболее известных конференций я бы выделил GOTO (общее направление), Strange Loop (тоже общее), PyCon (Python), CPPCon (C++), DEF CON (безопасность), Fluent (webdev).
Автор: fokus-lop
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/298969
Ссылки в тексте:
[1] рассказал: https://medium.freecodecamp.org/a-software-engineering-survival-guide-fe3eafb47166
[2] “Cracking the Coding Interview: http://www.crackingthecodinginterview.com
[3] CodeWars: https://www.codewars.com
[4] «Профессия веб-разработчик»: https://skillbox.ru/webdev/?utm_source=skillbox.media&utm_medium=habr.com&utm_campaign=WEBDEV&utm_content=articles&utm_term=beginnerdevway
[5] «Профессия frontend-разработчик»: https://skillbox.ru/frontend-developer/?utm_source=skillbox.media&utm_medium=habr.com&utm_campaign=FRENDEV&utm_content=articles&utm_term=beginnerdevway
[6] «Мобильный разработчик PRO»: https://skillbox.ru/agima/?utm_source=skillbox.media&utm_medium=habr.com&utm_campaign=AGIMA&utm_content=articles&utm_term=beginnerdevway
[7] «PHP-разработчик с 0 до PRO»: https://skillbox.ru/php/?utm_source=skillbox.media&utm_medium=habr.com&utm_campaign=PHPDEV&utm_content=articles&utm_term=beginnerdevway
[8] Источник: https://habr.com/post/429720/?utm_campaign=429720
Нажмите здесь для печати.