9 навыков, которые нужно освоить в самом начале карьеры программиста

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

Думаю, что владеть в совершенстве хотя бы одним из них  —  уже немало. Однако зачастую знание каких-либо компьютерных языков не столь важно. Если вы сильны в программировании, то без проблем сможете “перенести” свои компетенции с одного языка на другой. Поэтому не стоит тратить время на изучение отдельных языков. Лучше обратите внимание на те навыки, которые помогут вам сразу выделиться среди новичков и сделать достойную карьеру веб-разработчика.


Сотрудничество

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

Git

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

Git  —  одна из самых популярных систем управления версиями. Подробней о ней можно узнать из ее обширной документации, в частности из введения в Git от Microsoft Learn.

Веб-сервис GitHub сделал Git еще более удобным инструментом для новичков и совместной работы. GitHub  —  это платформа с “репозиториями” Git, в которых отображаются все изменения, внесенные в проект.

Несколько человек могут работать над проектом одновременно с помощью процесса “ветвления”. Каждый пользователь выбирает собственную версию проекта и включает свои изменения в основной проект после завершения работы.

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

Инспекция кода

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

Хотя у студентов не так много возможностей участвовать в обзорах кода, вы можете освоить основы этого процесса по учебным ресурсам Google, таким как Code Review Developer Guide. Курс “Введение в Git и GitHub” от Google на Coursera также включает раздел об использовании Git для обзора кода.

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


Управление проектами

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

Оценка времени

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

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

  • Типы проблем, которые требуют от вас максимальных временных затрат (в отличие от относительно простых задач).
  • Внешние факторы, способные повлиять на временные рамки проекта (например, время суток, другие обязанности в течение дня).
  • Количество времени, необходимое для выполнения различных частей процесса  —  от технологического исследования до написания кода, отладки программы и написания документации.

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

Расстановка приоритетов

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

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

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

Техническое собеседование

В начале карьеры вы наверняка столкнетесь с собеседованиями, на которых вам предложат решить задачу по программированию. Для начинающего IT-специалиста подобный “экзамен”  —  нелегкое испытание. Чтобы справиться с ним, недостаточно знаний, полученных в вузе, или опыта, приобретенного в работе над проектами. Однако навык прохождения подобных собеседований облегчает процесс найма на работу.

Алгоритмы

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

Есть множество учебных платформ, которые помогут вам в этом. Обратите внимание на следующие.

  • Tech Dev Guide (технический гайд для разработчиков по структурам данных и алгоритмам) от Google.
  • Introduction to Algorithms (основы алгоритмов) от GeeksforGeeks.
  • Algorithm Study Plan (пошаговое изучение алгоритмов) от LeetCode.

Объяснение технических концепций

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

Работа ассистентом преподавателя или репетитором  —  отличный способ развить этот навык. Разъяснение сути технических концепций разными способами и разным людям помогает самому “учителю” лучше усвоить многие понятия. Можете решать задачи на доске вместе со своими “учениками”, отлаживать код в реальном времени или работать в паре  —  все это пригодится на технических собеседованиях.


Прочие навыки

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

Командная строка/терминал

Командная строка (Windows) и терминал (Mac)  —  это интерфейсы, позволяющие выполнять команды путем ввода текста. Например, создавать новые каталоги (папки) и перемещаться по файловой системе. Вы также можете писать скрипты, которые выполняют несколько команд, и многое другое.

Чем полезен этот навык? Многие технологии, с которыми вы столкнетесь в будущем, имеют интерфейсы командной строки (CLI), позволяющие использовать их через командную строку. Командные интерпретаторы будут выглядеть пугающе, когда вы начнете с ними знакомиться. Но как только вы освоите их, разработка станет намного проще.

В качестве хорошей отправной точки попробуйте один из этих ресурсов.

Социальные сети

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

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

Поиск в интернете

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

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

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


Заключительные размышления

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

Читайте также:

Читайте нас в TelegramVK и Яндекс.Дзен


Перевод статьи Lindsay Zhou: 9 Skills to Learn Early in Your Tech Career

Предыдущая статьяБыстро о главном: визуализация с D3.js
Следующая статья7 малоизвестных пакетов для визуализации на Python, о которых вы должны знать