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