Какой язык программирования выбрать для погружения в специальность
Меня зовут Станислав Береснев, я разработчик проекта СТАР. В DD Planet я с октября 2022 года, вообще же работаю программистом с 2012 года. В моем стеке – C# .NET6+, Node.js, Next.js, React, Redux, HTML, CSS, ASP.NET MVC, MS SQL Server, Neo4j.
Первый язык
Новичку я бы посоветовал начинать с Паскаля. У него понятный синтаксис, он не перегружен конструкциями и парадигмами, в нем мало ключевых слов. Также он лишен побочных эффектов, присутствующих в других языках, когда программа выполняет действия, которые от нее не ждут. Это такой простой процедурный язык, в котором вы научитесь работать с алгоритмами, переменными, процедурами и функциями, поэтому его обычно советуют всем начинающим, с него начинают обучение программированию в институтах.
На Паскале надо научиться придумывать и писать программы, причем не что-то элементарное вроде сложения двух чисел, а, например, игру – Змейку или Тетрис. Когда появится некоторый пласт таких программ, написанных самостоятельно, будет проще понять, куда двигаться дальше.
Второй язык
Со вторым языком сложнее. Некоторые советуют сразу переходить на целевой, тот, с которым вы собираетесь дальше работать, востребованный рынком. Но, по-моему, следующими должны стать Ассемблер, C и C++, каждый хороший программист должен пройти через них, и их тоже преподают в институтах как обязательный базис. Это языки достаточно низкого уровня, позволяющие изучить, как вообще работает компьютер. Без понимания устройства этой работы, взаимодействия с машиной на низком уровне в будущем могут возникнуть неявные проблемы – например, с многопоточностью или нагрузкой.
Важно добавить, что также необходимо научиться работать в NIX-системах, потому что если не знаешь Linux, то программистская жизнь будет тяжела. Сейчас почти все сервера разворачиваются на Linux.
Для того чтобы легко пройти эти первые шаги, я рекомендую прочитать трехтомник «Программирование: введение в профессию» преподавателя факультета ВМК МГУ Андрея Викторовича Столярова. Автор намеренно не берет в свои книги современные стандарты, чтобы не забивать голову новичку – например, он останавливается на стандарте C++ примерно десятилетней давности. Или он умышленно не использует стандартную библиотеку шаблонов (STL), напротив, даже ругает ее, потому что она не нужна начинающему программисту. Он много критикует языки, про которые рассказывает, и доступно объясняет, почему.
Другие книги, на которые стоит обратить внимание:
Design Patterns: Elements of Reusable Object-Oriented Software, авторы – Erich Gamma, Richard Helm и другие;
«Рефакторинг. Улучшение существующего кода» М. Фаулера;
«Чистый код» и «Чистая архитектура» Р. Мартина (о них и других хороших книгах писал мой коллега Максим Лядов в своей статье «Профессиональная литература для разработчиков»).
В целом, эти книги можно смело читать, они не устареют и через 10 лет. Я, к сожалению, не прочитал их, когда начинал программировать, а с ними было бы проще систематизировать полученные в институте знания и избежать граблей, на которые наступают начинающие программисты.
Выбираем сферу деятельности
Когда есть необходимая база, можно выбирать язык, с которым будешь работать. Надо задать себе вопрос – чем ты в принципе хочешь заниматься? Какие приложения писать? Если это программы для десктопа, то, наверное, стоит смотреть в сторону .NET, в частности, WPF. Если хочется писать серверы, то опять .NET или Java.
При этом надо быть готовым, что чем больше узнаешь сферу, в которой оказался, тем больше понимаешь, как мало на самом деле знаешь, и понемногу расширяешь кругозор. Это, в свою очередь, может привести к желанию сменить сферу профессиональных интересов – например, у меня был коллега, пришедший во фронтенд из геймдева.
Бытует мнение, что JavaScript прост, и начинающим надо идти во фронтенд-разработку. На мой взгляд, это миф. Я бы не советовал начинающим идти во фронтенд. Это заканчивается тем, что люди, не имея понимания, как вообще работают веб-приложения, не могут делать что-то сложнее простой верстки. Переходить во фронтенд нужно из бэкенда, когда в голове есть хорошая база и понимание, как что устроено.
Начинающим разработчикам стоит быть прагматичными в выборе языка и не гнаться за тем, что «в тренде» в сфере. Посмотрите вакансии в своем городе и посмотрите, на какой язык больше требуются разработчики. Новичкам стоит поработать в офисе – так вы можете пообщаться с наставниками и разработчиками, пишущими на интересующем вас языке программирования. Когда у вас появятся вопросы (а они обязательно появятся) они смогут ответить на них и поделиться опытом.
Определившись с языком, продолжайте развиваться в нем до профессионального уровня. Главное – помнить, что байки о скорой смерти .Net или Java – всего лишь байки. И это подтверждается количеством активных вакансий.
Важно помнить, что программисту надо знать не только языки программирования, но и алгоритмы, парадигмы, шаблоны проектирования, архитектурные принципы, устройство баз данных, сетевые протоколы, библиотеки, фреймворки и прочие важные в работе вещи. Поэтому при обучении не стоит фокусироваться только на языках.