Что нужно знать начинающему Backend-разработчику помимо языка программирования | Журнал "Вольт"
Чт. Окт 22nd, 2020


Лера Солодовникова

Лера Солодовникова, продакт-менеджер программы «Python-разработчик» Яндекс.Практики

Некоторые новички считают, что достаточно выучить необходимый язык программирования – и все, эти знания по умолчанию делают вас отличным бэкендом. Помните подход «купи зеркалку – стань фотографом»? Но это далеко не так.

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

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

Основа

Начнем с главного – с ОС. Хороший бэкэнд должен быть знаком с unix-подобной операционной системой. Это могут быть не только разные дистрибутивы Linux, но и macOS или FreeBSD, но общепринятым стандартом по-прежнему остается Linux. Вы можете работать на ПК или ноутбуке с любой ОС, но вам нужно знать Linux. В конце концов, вам придется довольно активно взаимодействовать с серверами, и большинство из них работает под управлением Linux.

Отсюда плавно вытекает второй пункт – работа с командной строкой. Это необходимо для разговора с сервером на его языке. Вам нужно не просто знать, как ввести в Google конкретную команду и что она делает, но и понимать командный интерфейс. Опять же, варианты действительны в зависимости от личных предпочтений или литературы, которую вы изучали: zsh, bash, fish, но стандарт – bash.

Следующее требование – знание систем контроля версий. И здесь без особых альтернатив: Git нужен, несмотря на выбор. Изучите сам Git и механику ветвления, если вы собираетесь работать в команде. Однако, если вы заинтересованы в бэкэнд-разработке и читаете этот текст сейчас, у вас, вероятно, уже есть учетная запись GitHub (а если нет, вы знаете, что делать).

Базовые знания о том, как работает Интернет в целом, будут очень полезны. Мы не говорим сейчас о тщательном изучении HTTP и всех тонкостей DNS, но вы должны знать, что именно происходит, когда вы пытаетесь войти на сайт. Что с чем связано, какие связки работают, что загружается в первую очередь, а все остальное тянет за собой.

Дополнительным преимуществом для начинающего backend-разработчика будет знание хотя бы одного веб-фреймворка – для Python это Django или Flask. Плюс базовые знания SQL. Никто не выставит вас на ежемесячный конкурс программистов SQL, но важно уметь самостоятельно проектировать базу данных, работать с ними через ORM, если мы говорим о Django, или через SQLAlchemy в случае Flask.

И, конечно же, никуда без азов серверного администрирования, хотя бы на уровне «Я сам могу развернуть свой проект по SSH, не отвлекая коллег от чтения Хабра».

Алгоритмы и тестирование

По базовым требованиям к кандидату и знанию основ профессии компании делятся на два лагеря.

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

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

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

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

GitHub и хакатоны

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

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

Командная работа

О soft skills написано много постов и, скорее всего, несколько книг, поэтому не буду вдаваться в их важность и необходимость – вы все это уже читали много раз.

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

Говорите, спрашивайте, уточняйте. Это нормально. Это так же нормально, как выйти на улицу и погуглить, если это не сработает.

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

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

Полезные книги

Марк Лутц, «Изучение Python». Марк написал эту книгу на основе собственных курсов, которые он преподает более 10 лет. Здесь важно все: обзор инструментов, типов объектов, функций, плюс описания моделей и инструкции по обработке исключений.

Антонио Меле, «Django 2 в примерах». Книга посвящена практическому созданию приложений для решения реальных задач. Помимо работы непосредственно с компонентами самого фреймворка, также рассматриваются возможности интеграции сторонних инструментов.

Лекции Тимофея Хирьянова по алгоритмам. Тимофей – один из преподавателей МФТИ. Есть много лекций по алгоритмам, но они иллюстративные. Особенно полезно для новичков, но также полезно для опытных разработчиков.

Если вы можете свободно читать специализированную литературу на английском языке, то мы также рекомендуем пару книг по разработке через тестирование: Гарри Персиваль, «Разработка через тестирование с помощью Python» а также Кевин Харви, «Разработка через тестирование с помощью Django»



Source link

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *