? Дополнить свои знания о Node.js
? Узнать о технологиях баз данных, используемых вместе с Node.js
? Разобраться с базовыми понятиями компьютерных наук:
? Алгоритмы
? Структуры данных
? Узнать о лучших практиках написания хорошего кода
? Узнать, как разрабатывать архитектуру приложений на Node.js
? Подготовиться к поиску работы
? Прочитать описания вакансий разработчиков на Node.js и узнать требования работодателей
? Составить список компаний, где вы хотели бы работать
? Начать посещение тематических встреч в вашем городе (клуб по интересам)
? Начать общаться с программистами, которые разрабатывают на Node.js
? Нанять специалиста по созданию резюме
? Проанализировать вопросы, которые задают на собеседованиях
? Попробовать пройти собеседование (сымитировать)
? Создать портфолио из нескольких приложений
Получение работы
? Связаться с компаниями и известить их о своих навыках и поиске работы
? Принять участие в стажировке или подать заявки на замещение должности джуниор-разработчика
? Подавать заявки как минимум на две вакансии в день
? Подвести итоги после собеседования, чтобы понять, над какими навыками нужно еще поработать.
Поначалу ваш план будет далек от идеала, но по мере проработки он будет становиться все более полным.
Лучше плохой план, чем никакой. План всегда можно изменить, но, если его нет, вам придется тяжело. Вы будете хвататься то за одно, то за другое, в результате вас постигнет разочарование и вы наверняка захотите все бросить.
В следующей главе я помогу вам составить хороший план, и мы обсудим технические навыки, необходимые для становления разработчиком ПО.
Глава 3. Необходимые технические навыки
Я убежден, что каждый программист должен развивать не только технические, но и так называемые гибкие навыки. Я даже написал об этом целую книгу: «Путь программиста. Человек эпохи IT». Тем не менее нельзя недооценивать важность технических навыков.
Сказанное выше означает, что если вы не умеете писать код, то даже самые развитые гибкие навыки не помогут вам добиться успеха на поприще программиста. Стать толковым менеджером или бизнес-тренером вы сможете, а разработчиком – вряд ли.
Однако если вы уже добрались до этой главы, я вправе сделать вывод, что вы заинтересованы стать именно программистом (или даже лучшим программистом), поэтому давайте перейдем к обсуждению непосредственно технических навыков, которые вам потребуется освоить.
Навыки, за которые платят
Эта тема будоражит многих начинающих разработчиков. В начале пути кажется, что нужно знать так много всего, что совершенно непонятно, за что браться в первую очередь. Именно для того, чтобы избавить вас от этого дискомфорта, я и написал эту книгу. Я расскажу вам о наиболее важных навыках, которые принесут вам наибольшую выгоду в карьере разработчика.
Хочу сразу предупредить, что приведенный далее список технических навыков, которые вам понадобятся как программисту, не является исчерпывающим. Однако я постарался привести наиболее важные из них. В части «Все, что нужно знать о разработке ПО» я подробно разберу каждый из представленных здесь навыков.
Довольно слов! Давайте перейдем к делу и кратко ознакомимся с перечнем технических навыков, которые я считаю наиболее важными.
Всего один язык программирования
Думаю, этот вопрос точно является наиболее животрепещущим, не так ли? Нельзя быть программистом, не зная ни одного языка программирования, – понимаете, о чем я? О выборе конкретного языка мы поговорим в главе «Как выбрать язык программирования», так что пока не заморачивайтесь этим вопросом. Единственное, что я хочу сейчас сказать, – выбор языка программирования не настолько важен, как вам сейчас кажется.
Вместо этого давайте поговорим о том, почему лучше учить один конкретный язык, чем хвататься по чуть-чуть за все сразу. Многие начинающие программисты зачастую склонны идти именно вторым путем, чтобы увеличить свои шансы быть востребованными на рынке труда. Разумеется, мои слова не означают, что нужно всю жизнь пользоваться лишь одним каким-то языком. Совсем нет, наоборот, но на начальных этапах большое количество языков программирования лишь запутает вас и помешает вам уделить достаточно внимания многим другим техническим навыкам, не менее важным.
Вместо этого я бы посоветовал сосредоточиться на изучении одного конкретного языка и его тонкостей, чтобы со временем вы могли уверенно читать и писать код на нем. Помните, я говорил о важности выбора области ПО, разработчиком которого вы хотите стать? Так вот, к выбору языка программирования применима та же самая логика.
Как структурировать код
После (а лучше в процессе) изучения языка программирования очень важно научиться правильно структурировать код. Выше я уже упоминал об одном отличном ресурсе, который поможет вам овладеть этим навыком: книга Стива Макконнелла «Совершенный код. Практическое руководство по разработке программного обеспечения».
Что я понимаю под структурированием кода? Хороший и понятный код, который не требует большого количества комментариев, – словом, удобочитаемый.
Увы, но многие разработчики ПО на протяжении всей своей карьеры не уделяют должного внимания развитию этого навыка. Структурирование кода – это основной признак, по которому я и многие мои коллеги оценивают навыки и компетентность конкретного разработчика. Именно хорошая структура кода свидетельствует о любви к своему делу, а не простое механическое исполнение своих обязанностей. Структурирование кода – самая творческая часть разработки ПО. Этот аспект важен потому, что вам и вашим коллегам предстоит работать с тем, что вы создали. На практике вы будете тратить гораздо больше времени на поддержание существующего кода, чем на создание нового.
Я не буду вдаваться в подробности, как правильно структурировать код, поскольку уже предоставил вам отличный источник информации по этой теме. Хочу лишь подчеркнуть, что нужно с самого начала совершенствовать навык создания хорошего, чистого кода, не откладывая его освоение на «когда-нибудь потом».
Я могу с определенной долей вероятности утверждать, что, даже если вы являетесь новичком, но при этом уже можете хорошо, чисто, кратко и понятно писать программы, то практически любой интервьюер, который увидит ваш код, посчитает вас профессионалом. И в какой-то степени это действительно будет правдой, потому что наличие данного навыка показывает, что вы относитесь к разработке как к профессии, а не как к «просто работе».
Объектно-ориентированное проектирование
Необходимость изучения данной методологии – штука спорная, особенно если вы учите не объектно-ориентированный язык. Однако множество компаний и разработчиков в своей работе опирается на объектно-ориентированный подход, поэтому следует иметь общее представление о том, что же такое ООП и с чем его «едят».
Объектно-ориентированное проектирование – способ разработки сложных программ, который подразумевает разбиение кода на отдельные классы или объекты (экземпляры классов), которые содержат в себе (инкапсулируют) некоторый функционал и имеют определенные роли и обязанности. Разработка ПО подразумевает управление сложностью.
С помощью данной методологии мы можем определить и спроектировать сложную систему, которая будет состоять из множества взаимодействующих между собой компонентов, в противовес попытке решения всех проблем одним махом.
В настоящее время стали довольно популярны языки программирования, основанные на другой концепции – функциональной, однако наиболее востребованными языками и шаблонами проектирования ПО по-прежнему являются те, что основаны на объектно-ориентированном подходе и анализе.
Чтобы разобраться в сути ООП, вы должны понять, что такое класс, чем отличаются различные типы наследования и в каких случаях их следует применять, а также что такое «полиморфизм» и «инкапсуляция».
Алгоритмы и структуры данных
Именно эти вещи вы будете изучать, если решите заниматься на курсах по программированию или поступите в университет, чтобы получить образование в области компьютерных наук.