Software Engineering: руководство по выживанию

5
5132
Добавить в избранное

Данное руководство призвано помочь начинающим в сфере Software Engineering выбрать правильный путь развития от резюме, до обучающих ресурсов.

Собеседование

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

Подготовка

Вам нужно знать базу:

  • структуры данных и алгоритмы (связные списки, массивы, деревья, сортировка);
  • основы ООП (класс, объект, наследование).

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

Обзаводитесь преимуществами

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

Резюме

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

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

Затем покажите ваш репозиторий на GitHub (или любой из публичных).

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

После того как вы сделали все вышеперечисленное, следует рассмотреть возможность работы в opensource-проекте. Это даст понять, что вы командный игрок, и вас не пугает чужой код.

Задавайте вопросы

В процессе поиска работы многие кандидаты забывают, что собеседование – это диалог. Компания пытается выяснить, являетесь ли вы «тем самым» человеком, а вы – подходят ли они вам.

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

«Как будет выглядеть обычный рабочий день?»

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

Ответ: фраза «я не уверен…» означает, что интервьюирующий не из вашей команды и/или не имеет четкого представления, почему вас нанимают.

«Как вы тестируете свой софт?»

В идеале для проверки качества кода используется смесь юнит-тестов, ручного и автоматического тестирования.

Ответ: «Мы кодим без ошибок» будет сомнительным ответом.

«Какую VCS вы используете?»

Контроль версий чрезвычайно полезен для совместной работы, и нет причин его не использовать

git

Ответ: «<вставить неизвестные или самописные VCS>». Это указывает на то, что компания, скорее всего, не идет в ногу со временем, и уже давно не обновляла свою инфраструктуру.

«Повышение квалификации»

Работа в Software Engineering подразумевает постоянное обучение, поскольку технологии появляются и устаревают с головокружительной скоростью. Поэтому многие компании имеют бюджет для обучения своих сотрудников.

Ответ: «Вы имеете в виду самообучение в свободное время?». Компания либо экономит средства, либо не рассматривает разработчиков как долгосрочные инвестиции.

«Каков процесс разработки?»

Этот вопрос жизненно важен для разработки в Software Engineering. Особенности оптимального процесса являются предметом интенсивных дискуссий, но существование согласованного способа работы минимизирует хаос.

Ответ: «Экспромт и импровизация». Скорее всего, весь отдел постоянно находится в режиме боевой готовности, исправляя регулярные краши, не имея четкой цели.

«Как вы решаете проблему технического долга?»

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

Ответ: «Мы сосредоточены исключительно на новых функциях». В коде компании бардак уже сейчас, или скоро наступит.

«Какова культура вашей компании?»

Корпоративная культура может принести дискомфорт. Такие мелочи, как открытый офис или личные рабочие кабинки, существенно изменят ваше взаимодействие с коллегами. Убедитесь, что ответ интервьюера описывает то, с чем вы сможете мириться в течение 40+ часов в неделю.

Работа в Software Engineering

Если собеседование прошло успешно, и вам предложили место, то пришло время заняться кодом.

Работа в Software Engineering

 

Хороший код должен обладать следующими свойствами:

  • Читаемый, потому что код читается и поддерживается чаще, чем пишется. Программа должна быть понятна другим разработчикам даже спустя несколько лет с момента написания.
  • Безопасный – это отдельная тема для разговора, но суть ее такова: вы должны убедиться, что неправильное использование написанных классов и методов не приведет к сбою программного обеспечения.
  • Оптимизированный – последний в этом списке. Это не означает, что вы должны писать плохой код, который делает что-то в трех циклах, когда существует линейное решение. Вы должны уметь объяснить, почему определенная оптимизация, приносящая в жертву какие-либо свойства, действительно необходима.

Много кодить не придется

Внезапный сюрприз, но это так. Большую часть времени вы не будете писать новый код, а вместо этого вас ожидает:

  • отладка;
  • чтение существующего кода;
  • собрания или переписка;
  • улучшение скиллов и сэлфмейд.

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

Отладка и чтение кода

Software Engineering

  • В Software Engineering вам понадобится гораздо больше, чем отладка с помощью print. Все ЯП и стеки технологий имеют множество инструментов для дебага, что сделает отладку легкой и сэкономит время.
  • Разберитесь с кодом. В большинство стеков включены инструменты code graph, которые помогут понять структуру. Код можно изучить при помощи таких средств, как ReSharper, grep или Sourcegraph.
  • Узнайте все о софте. Многие разработчики не знают, как должно работать ПО, прежде чем не попытаются его «починить».

Соберитесь!

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

  • TODO list/Task-list: у вашей компании уже должно быть какое-то ПО для этих целей, но это не мешает завести себе отдельного помощника. Используйте Trello или Todoist.
  • Заметки: всегда делайте записи на собраниях, улучшайте существующую документацию и создавайте личную базу знаний. Используйте Evernote, OneNote или записную книжку, как в старые добрые времена.
  • Визуализация: создание графиков и диаграмм процессов поможет разобраться в сложных вопросах. Используйте Lucidchart, Visio или обычную доску

Использование библиотек

Чтобы стать эффективным в сфере Software Engineering, нужно знать библиотеки.

Будет большим преимуществом, если вы предложите новые библиотеки, способные сэкономить время разработки. Подходить к выбору библиотеки нужно тщательно. Хорошая библиотека – это:

  • Open Source. Вы можете «пощупать» код и, возможно, исправить ошибки.
  • Лицензия MIT и BSD.
  • «Зрелая» – давно существует и имеет богатый набор функций.
  • Поддерживаемая – новые релизы выходят часто.
  • Используемая в другой компании или проекте.

Самообучение

В дополнение к «повседневным» навыкам, вам нужно постоянно совершенствоваться и изучать что-то новое для карьерного роста.

Ниже приведем несколько источников для обучения.

  • Степень магистра онлайн недавняя тенденция среди ведущих университетов мира является гибким способом продолжить формальное образование.
  • Блоги – важная часть сообщества. Такие ресурсы, как medium, quora, hackernoon, reddit и т. д., содержат массу полезных статей.
  • Конференции.  Вы обязательно должны воспользоваться этой возможностью если бюджет вашей компании ее предусматривает. Вот неполный список хороших конференций: GOTO (основы), Strange Loop (основы), PyCon (Python), CPPCon (C++), DEF CON (безопасность), Fluent (веб). Большинство из них имеют канал на YouTube, так что не переживайте, если вы не можете присутствовать.

Оригинал

Другие материалы по теме:

Ищете с чего начать?

Подпишитесь на нашу рассылку, чтобы получать больше интересных материалов:

И не беспокойтесь, мы тоже не любим спам. Отписаться можно в любое время.




5 Комментарии

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

Оставьте комментарий