Как найти свой язык программирования

Хайп вокруг «войти в IT» привел к тому, что в разработчики и тестировщики потянулись не только студенты профильных вузов, но и люди из других профессий. Не будем сейчас обсуждать правильность подобного выбора в той или иной ситуации, а просто расспросим опытного человека в области разработки о том, как правильно подойти к выбору языка программирования и начать свой карьерный путь, раз вы на это решились или крепко задумались по этому поводу.

Этот пост — выжимка из моей беседы с Даниилом Пилипенко, создателем компании SymbioWay, занимающейся подбором и оценкой IT-специалистов для сторонних компаний и предоставляющей услуги аутстаффинга.

Даниил — профессиональный разработчик с 18-летним стажем. Начал свой путь с младшего программиста на Java. Через шесть лет стал руководителем отдела разработки, изучил PHP и JavaScript. В данный момент, кроме работы по подбору персонала, проводит карьерные консультации, выступает в качестве спикера на конференциях и вебинарах, преподает флагманский курс по Java в Skillbox. 

Одно из последних выступлений Даниила, как раз посвященное выбору языка программирования, прошло при поддержке Leader-ID, что и послужило поводом для данного материала. Далее — слово Даниилу.

IT-рынок: какие изменения произошли, оценка текущей ситуации и ожидания в будущем

Если говорить про IT-рынок, то здесь интересно наблюдать за двумя показателями: количество резюме и количество вакансий. Обратившись за статистикой на HeadHunter, можно сказать, что начиная как минимум с первого квартала 2014 года спрос на разработчиков растет быстрее, чем предложение, и расстояние между двумя кривыми — то есть дефицит специалистов — постоянно увеличивается:

Весной 2020 года наблюдался «пандемийный спад», а затем резкий рост рынка с лета 2020 года по конец 2021-го. В декабре 2021-го спрос на разработчиков вырос почти в три раза, и количество вакансий в пике приблизилось к 86 тыс. по сравнению с примерно 32 тыс. в конце марта 2020 года.

Любые кризисы приводят к тому, что экономические пузыри лопаются. Ровно это и произошло со спросом на разработчиков этой весной. Отмечу, что это общемировой тренд и такая картинка наблюдается не только в России. В итоге количество вакансий вернулось к тому, каким бы оно было, если бы рост происходил обычным «допандемийным» темпом. Это хорошо видно на графике выше.

С мая этого года количество вакансий для программистов в России вышло на плато и составляет примерно 46 тыс. При этом происходит реструктуризация рынка: часть вакансий закрывается и некоторые компании уходят с рынка, но другая часть, наоборот, открывается. 

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

Тем не менее спрос на программистов по-прежнему превышает предложение, как и все последние 25 лет. Истинных профессионалов по всем самым востребованным специальностям сегодня все так же не хватает.

Что касается самих разработчиков, пожалуй, февраль 2022 года был самым напряженным и переломным моментом для них. Как мы знаем, после февраля (и затем в сентябре) из страны уехало большое количество IT-специалистов. Однако, по нашим данным, около 50% из них продолжают работать на российские компании. Ну и сейчас, в ноябре, некоторые специалисты по разным причинам снова начинают возвращаться из-за рубежа.

Реально ли сейчас начать карьеру и устроиться на позицию junior-разработчика?

Есть мнение, что в последнее время компании стали менее охотно нанимать junior-разработчиков. А в дальнейшем спрос на них и вовсе сойдет на нет, потому что программы сами будут писать программы. Но все это лишь слухи.

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

Во-вторых, такие инструменты, как Tilda, имеют довольно ограниченный функционал: с его помощью мы можем легко сделать пару страничек, но какой-нибудь серьeзный продукт вроде «Яндекс Маркета» на нем не напишешь. Да и в будущем вряд ли кому-то удастся создать универсальную систему, которая будет писать любую другую систему без участия человека.

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

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

Поэтому, если есть желание начать карьеру разработчика, — сейчас самое время.

С чего начать

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

Второй — заняться практикой. Ощутить и почувствовать, что такое кодинг. Обзавестись минимальным арсеналом junior-разработчика (см. ниже).

Третий — найти работу применение своим знаниям и навыкам. Чтобы поддерживать и расширять экспертность в любом деле, необходимо постоянно практиковаться. Для этого недостаточно придумывать себе задачи «на покодить» или учиться на курсах. Важно как можно быстрее перейти на профессиональный уровень и найти вариант, где вы каждый день занимаетесь разработкой.

Что не рекомендуется делать на старте карьеры

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

Минимальный арсенал junior-разработчика

  • знание синтаксиса языка;

  • понимание принципов объектно-ориентированного программирования;

  • владение каким-либо основным для данного языка фреймворком (если речь про веб-разработку) или понимание того, как с точки зрения архитектуры создаются мобильные приложения (если речь про мобильную разработку);

  • знание языка запросов SQL (для backend-разработки);

  • понимание принципов клиент-серверного взаимодействия, базовое знание протокола HTTP и стандарта REST;

  • опыт работы с Git и командной строкой; 

  • опыт командной работы (этот пункт очень желателен и существенно повышает шанс найти работу).

Как выбрать свое направление в программировании 

В сфере программирования есть несколько ветвей. Первая, веб-разработка, — самое обширное направление во всем мире (по разным оценкам, более 50% всего программного обеспечения в мире — это именно веб-приложения). Веб-разработка подразделяется на направления frontend- и backend-разработки.

Вторая крупная ветвь — мобильная разработка. Другие ветви — разработка десктопных приложений, игр, встроенного и системного программного обеспечения, разработка для Data Science и другое.

Чтобы выбрать направление, можно для начала задаться вопросом, хотите ли вы работать с визуальной частью тех или иных приложений? Если да, то, имея в арсенале некоторые способности и интерес к данной области, можно начать покорять вершины frontend- или мобильной разработки.

Если же желания работать с визуальной частью нет, а хочется, наоборот, знать и понимать, как устроена серверная часть веб-приложений, как она взаимодействует с frontend’ом и с мобильными приложениями, то стоит рассмотреть для себя backend-разработку.

Если вы хотите развиваться в мобильной разработке, стоит начинать с разработки на той операционной системе, на которой работает ваш смартфон, — Android или iOS. Это значительно ускорит процесс вашего обучения и сделает его более эффективным, поскольку с высокой вероятностью вы знаете соответствующую платформу лучше другой и сможете сразу тестировать то, что вы создали.

Как выбрать язык программирования

Выбор языка существенно зависит от того, какое направление в программировании вы выберете.

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

Если же мы рассмотрим топ языков для backend-разработки, то увидим, что треть всех вакансий в РФ и, соответственно, первое место в топе уже многие годы принадлежит языку Java.

Второе место в топе и примерно 15% всех программистских вакансий отдано Python. В этом году чуть сдал свои позиции и занимает третье место язык PHP. Четвертое почетное место в топе у языка Go. И, кажется, он скоро сможет пробиться выше. Вот эта первая четверка языков закрывают около 75% рынка. А далее, на пятом месте? идет C#. Его доля на сегодняшний день около 10%. Спрос на С# с каждым годом снижается.

Теперь попробуем сравнить языки backend-разработки между собой. К примеру, Go и PHP — языки программирования, применяющиеся в основном для создания веб-сайтов и веб-приложений. Напротив, Java и Python — более универсальные языки, на них пишут практически всё, и выбор одного из них в качестве своего первого языка выглядит очень логично.

Если задаться вопросом, насколько каждый из них подходит для enterprise-разработки, то Java будет являться несомненным лидером. Все банковские и платежные системы, Госуслуги, «Яндекс Маркет», «Яндекс Музыка» в значительной мере написаны на Java. 

Вторым критерием для сравнения Java и Python является порог вхождения. И тут уже побеждает Python.

Давайте посмотрим, как выглядит вывод в консоль традиционного «Hello, world!» на двух языках.

Действительно, на первых этапах Python кажется проще для изучения (пример кода нам это доказывает), но, изучив Java, в дальнейшем можно легко переходить практически на любой другой язык: Kotlin, PHP, С# и тот же Python. Если же вначале изучить Python, то с него «прыгнуть» куда-то еще будет немного сложнее.

Третий критерий сравнения — спрос. Если мы посмотрим рынок РФ, то спрос на Java практически в два раза превышает спрос на Python. Если же посмотреть на мировой рынок, то все будет наоборот — Python сегодня в мировых лидерах. Например, такую активно развивающуюся сферу, как Data Science, язык Python оккупировал более чем на 90%.

Стоит сказать про языки Kotlin и Swift, которые практически полностью заняли собой мобильную разработку на Android и iOS.

Чтобы определиться, нравится ли человеку выбранный язык программирования, необходимо его «попробовать» — решить на нем небольшую практическую задачу. К примеру, если выбор пал на Kotlin, значит, нужно изучить его основы и попробовать написать свое первое, пусть и очень маленькое, мобильное приложение под Android.

Самым правильным вариантом для старта карьеры является «начать пробовать» и, собственно, начать писать код. И не очень важно, на каком именно языке. Главное — начать.

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

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

Есть еще одна важная рекомендация: если вы хотите стать программистом, не стоит идти «в обход» — например через верстку, тестирование или DevOps. Есть риск потерять много времени, занимаясь нелюбимым делом. Даже если вход в разработку видится вам сложным, не стоит искать другие пути. Все трудности будут вам по плечу, если у вас будет интерес. И тяжeлый вход в самое желанное направление будет гораздо эффективнее с точки зрения затрат времени и ресурсов, чем любой «обходной путь».

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

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

С чего начать изучение языка программирования 

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

Итогом обучения должна стать в идеале разработка какого-то пусть и небольшого, но полезного проекта. Например, в Skillbox на курсе по Java мы предлагаем по итогам обучения разработать поисковый движок. На подобных задачах можно полноценно ощутить, что такое создание систем с нуля на MVC-фреймворке, закрепить навыки работы с базой данных и языком запросов SQL, попробовать работу с файлами, научиться получать и обрабатывать HTTP-запросы и формировать HTTP-ответы в соответствии со стандартом REST. Без этих базовых знаний об успешном трудоустройстве можно даже не мечтать. Мало знать только синтаксис языка и уметь писать голый код, нужно понимать, как написать код так, чтобы получилась рабочая система или мало-мальски готовый продукт.

Можно ли научиться программировать на курсах?

Курсы и школы бывают разные. Есть школы, у которых все курсы хорошие, а есть школы, где можно выделить только пару достойных курсов. Любой курс разрабатывает специалист (или команда специалистов), поэтому его успех зависит от методики и профессионализма этого конкретного специалиста или команды. 

Можно попробовать отыскать для себя хороший курс по программированию по следующем критериям:

  • продолжительность курса от шести месяцев и больше; 

  • он включает в себя изучение основ языка и фундаментальных понятий в современном программировании;

  • в программе курса есть много тем, пересекающихся с требованиями в вакансиях по данной специальности;

  • на курсе будет очень много практики по написанию кода, а также индивидуальный и командный проекты.

Реализация командного проекта примерно на 50% повышает шанс на трудоустройство выпускников: работа под руководством тимлида, где студенты познают все горести и радости командной работы, учатся взаимодействовать, соблюдать дедлайны и участвовать в таких активностях, как код-ревью, груминг и дейли-митинги.

К сожалению, все чаще можно наблюдать проблему с трудоустройством у выпускников курсов по программированию, которые не доучились или обучались на слабом курсе. Был тут интересный случай: однажды, ко мне на карьерную консультацию пришел мужчина 57 лет, который окончил курс по frontend-разработке и не мог устроиться на работу. Он был уверен, что вся его проблема кроется в возрасте. Но на консультации выяснилось, что он не может написать ни одной строчки кода и просто-напросто не имел практики, изучив только термины и теорию. Поэтому совет для него звучал так: сначала нужно изучить основы (я дал ему конкретный перечень, что и где можно быстро и бесплатно изучить), разместить резюме, устроиться на работу и только потом уже вспоминать, сколько ему лет. Кстати, карьера этого человека сложилась отлично: сначала он устроился на работу верстальщиком и в течение года вырос до младшего frontend-разработчика.

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

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

Hard и soft skills на старте карьеры: что важнее

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

На рынке мнение о том, что важнее — hard или soft skills, разделяется ровно пополам. На нескольких своих последних выступлениях я проводил опрос, и эта статистика подтверждается: примерно половине руководителей важнее soft skills, а другой половине — hard skills.

Чем junior, middle и senior отличаются друг от друга?

На эту тему есть две шутки. Первая: junior еще не может работать самостоятельно, а senior — уже не может. Вторая: junior приходит к своему руководителю с вопросами, а middle — с ответами. Выводы из этих шуток следующие: основное, что отличает программистов разных грейдов друг от друга, это уровень их самостоятельности. Безусловно, уровень самостоятельности — это комплексный показатель, отражающий одновременно и hard skills, и soft skills.

Тестирование кода: важный навык хорошего разработчика

Важный навык хорошего разработчика состоит в умении тестировать код (свой или чужой) и находить там ошибки. Поэтому разработчик должен уметь писать unit- и e2e-тесты. По этому вопросу есть одно наблюдение: получается намного эффективнее, если тестовый и основной код пишут разные разработчики. Так программа гораздо быстрее вычищается от багов, улучшается тестовое покрытие и кодовая база в целом.

Методика выявления настоящего профессионала в программировании

Чем каждый день должен заниматься программист? Писать код. Поэтому, чтобы определить настоящего программиста, нужно посмотреть на то, как он работает.

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

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

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

Итоги

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

#статьи

  • 23 июн 2022

  • 22

С какого языка начать изучение программирования

Рассказываем о языках JavaScript, PHP, Python, Java, CSS и HTML, сравниваем их и помогаем выбрать лучший.

Иллюстрация: Wikimedia Commons / Roungroat / Rawpixel / Annie для Skillbox Media

Наталья Березовская

Автор в сфере IT, digital, экономики и финансов. Ведёт некоммерческий проект для начинающих писателей «ЛитЦех».

Содержание

  • Что такое типизация
  • HTML и CSS: «строительный материал» сайтов
  • JavaScript: главный по фронтенду
  • PHP: слон, которого трудно не заметить
  • Python: сын маминой подруги
  • Java: консервативный и надёжный
  • Какой язык лучший?
  • Что выбрать новичку?

У каждого языка программирования свои особенности, достоинства и недостатки, своя сфера применения и свой список связанных технологий (он называется «стек»). Сегодня мы сравним несколько популярных языков веб-разработки и дадим советы, которые помогут вам сделать осознанный выбор.

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

Типизация — это разделение переменных на разные типы: например, int (целое число), flow (число с десятичной частью), string (строка текста), bool (правда/неправда).

Типизация бывает явная или неявная, слабая или сильная и статическая или динамическая.

Явная типизация значит, что вы должны сами указать тип переменной, а если у языка неявная типизация, этим занимается компилятор. Явная типизация более надёжная (у переменной будет именно тот тип, который вам нужен), зато добавляет работы, а неявная позволяет сэкономить время, но переменная может получить не тот тип, который вы хотели.

В языках со статической типизацией типы переменных устанавливаются на этапе компиляции, причём обычно переменные объявляются с указанием типа (явно).

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

Сильная (строгая) типизация не позволяет смешивать в выражениях разные типы и не выполняет автоматически неявные преобразования.

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

Теперь, когда мы разобрались с типизацией, перейдём к самим языкам.

Начнём издалека — с HTML (Hypertext Markup Language) и CSS (Cascade StyleSheets). Почему с них и почему «издалека»? С них — потому что они лежат в основе веб-разработки и ни один сайт без них не обойдётся. А издалека — потому что это не совсем языки программирования.

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

HTML и CSS очень простые — в основах можно разобраться буквально за пару дней, даже самостоятельно. Так что если вы очень боитесь программирования и не верите, что у вас получится, попробуйте начать с них. Это под силу каждому, поможет вам плавно войти в программирование и оценить свои силы. А потом при желании можно перейти к другим языкам.

Изображение: Public Domain

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

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

Тем не менее, несмотря на широкое применение, JavaScript не волшебная таблетка. У него есть свои ограничения, из-за которых он подходит не для всех задач.

Какие плюсы и минусы есть у этого языка:

Изображение: Skillbox Media

Что касается минусов — есть инструменты, которые помогают их компенсировать. Например, TypeScript и Flow делают работу с типами более безопасной, но код становится писать сложнее.

Из-за этой особенности на JavaScript не разрабатываются сложные программы с высокими требованиями к надёжности. Если у вас на сайте не работает кнопка, это неприятно, но не страшно, а вот если у вас ошибка в банковском или промышленном программном обеспечении — это уже хуже.

По данным «Хабр Карьеры», средняя зарплата JavaScript-разработчика составляет около 154 тысяч рублей. Новички зарабатывают от 40 до 100 тысяч, а профессионалы могут похвастаться зарплатой в 200 тысяч и выше.

Найти работу с такой специальностью не проблема: это очень популярный язык, и требуется он почти везде. Даже если в вашем городе нет больших компаний, которым нужны программисты, не расстраивайтесь. Сейчас около 40% программистов работают удалённо — так что смело ищите работу в других городах.

JavaScript может выглядеть так:

$("button.login").click(function(){
	var login = $ ("#login") .val();
      var password = $ ("#password").val();
	$("#status").text("Загрузка...");
	$.post("/auth/login", {login: login,
password: password}, function(data) {
	if(data.result == false) {
		$("#status").text("Неправильный логин или пароль")
     } else {
	     $("#status").text("Добро пожаловать, " + data.userName);
       }
    });
});

Этот код отвечает за авторизацию на сайте. Он читается не настолько легко, как в некоторых других языках, но если вы знаете английский, то можно догадаться, что здесь происходит. Например, в первой строке мы видим, что у нас есть кнопка (button), которая отвечает за вход в систему (login), и по ней можно кликнуть (click).

Разработчику на JavaScript недостаточно освоить синтаксис языка и основные концепции. В своей работе «джаваскриптеры» используют целый арсенал инструментов.

1. Редакторы кода или IDE:

  • Notepad++;
  • Sublime Text;
  • WebStorm.

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

  • Chrome Web Inspector (DevTools);
  • Firebug.

3. Среда исполнения серверного ПО: Node.js.

4. Средства разработки десктопных приложений:

  • Electron;
  • AppJS;
  • NW.js (Node-Webkit);
  • Windows 8+.

5. Фреймворки для веб-разработки:

  • jQuery;
  • Angular;
  • React;
  • Backbone;
  • Ember;
  • Meteor.

6. JSON самый популярный формат передачи структурированных данных.

7. MongoDB документо-ориентированная база данных. Можно создавать JS-процедуры.

Хороший JavaScript-разработчик должен знать эти технологии и уметь их использовать или хотя бы ориентироваться в них. В наше время программировать в «Блокноте» — плохой вариант.

PHP — чемпион по популярности в веб-разработке. Его используют в создании серверных приложений, скриптов и утилит. Вы найдёте его в бэкенде сайтов многих известных компаний — например, Avito, Badoo, «ВКонтакте», «Википедии», «Фейсбука»*.

Некоторые называют PHP «ужасным» языком или вовсе говорят, что он умирает. Такая оценка появилась, когда PHP только набирал популярность. В то время у языка действительно было много недостатков и ничего серьёзного на нём не писали. Некоторые специалисты его таким и запомнили, но PHP уже больше десяти лет как настоящий взрослый язык. Более того, огромное количество конструкторов и редакторов сайтов написаны именно на нём.

Какие у PHP есть достоинства и недостатки:

Изображение: Skillbox Media

Как вы видите на скриншоте ниже, предложений работы для PHP-разработчиков очень много — больше, чем для других языков, — но средняя зарплата ниже, чем у JavaScript-разработчиков, — 88 тысяч рублей.

Скриншот: Skillbox Media

Если вы новичок, можете рассчитывать на зарплату от 40 до 80 тысяч рублей; если у вас уже есть опыт, то от 80 до 120 тысяч; профессионалы получают 120 тысяч рублей и больше.

Вот пример кода на PHP:

<?php

const NEWS_PER_PAGE = 20;

$section = $_GET['section'];
$page = $_GET['page'];

$PDO = new PDO("mysql:dbname = testdb;host=127.0.0.1", "mysql_user", "mysql_password");
$Statement = $PDO->prepare("SELECT * FROM News WHERE section = :section LIMIT :offset, :limit");
$Statement->execute([
":offset" => $page * NEWS_PER_PAGE,
":limit" => NEWS_PER_PAGE
]);

$News = $Statement->fetchAll();
renderTemplate('templates/news_page.tpl', $News);

?>

Это код со страницы с новостями, который открывает разные новостные разделы.

Человек без опыта программирования, скорее всего, не сможет прочитать его так же легко, как предыдущий на JavaScript. Может показаться, что PHP — это очень сложно, но на самом деле язык простой и, чтобы начать в нём разбираться, достаточно основ, а сами основы можно освоить за несколько часов.

Несмотря на то что освоить PHP довольно легко, к нему в придачу идёт около 20 мастхэв-технологий.

1. Редакторы кода или IDE:

  • Notepad++;
  • Sublime Text;
  • Atom;
  • PhpStorm.

2. Серверы баз данных:

  • MySQL;
  • PostgreSQL.

3. Хранилища:

  • Memcached;
  • Redis;
  • MongoDB.

4. Отладчик: Xdebug.

5. Профайлер: XHProf — помогает замерить, сколько времени выполняется какой участок программы, и понять, где программа замедляется.

6. Популярные фреймворки:

  • Symfony;
  • Yii;
  • Laravel;
  • Zend;
  • Silex;
  • Lumen;
  • Slim.

7. Менеджер пакетов: Composer.

Python тоже часто используется в веб-разработке, а ещё это один из самых популярных языков для анализа данных и в Data Science. Вы встретите Python в разработке веб-сайтов и утилит, в машинном обучении и в работе с нейросетями.

Это тоже подходящий язык для новичков, его часто рекомендуют для обучения программированию. Он часто светится в первой пятёрке индекса TIOBE. Например, сейчас (в июне 2022 года) Python занимает там первую строчку.

Вот плюсы и минусы Python:

Изображение: Skillbox Media

По данным сайтов для поиска работы (HeadHunter, SuperJob, «Работа.ру» и других), только в Москве для Python-разработчиков открыто более 4 тысяч вакансий. Средняя зарплата питониста — около 115 тысяч рублей. Для новичков — в среднем 70 тысяч, а для специалистов — от 150 до 170 тысяч. Если вы разбираетесь в нейросетях и знакомы с машинным обучением, то, скорее всего, ваша зарплата будет выше.

Вот пример кода в Python:

import pandas as pd
from sklearn.metrics import accuracy_score
from sklearn.ensemble import GradientBoostingClassifier
#Sorting hat classification
StudentsData = pd.read_sql("SELECT * FROM StudentsData", engine)
X = pd.drop('faculty')
Y = pd['faculty']
x_train, x_test, y_train, y_test = 
train_test_split(X, Y, test_size=0.33, random_state=42)
Classifier = GradienBoostingClassifier(n_estimators=500)
Classifier.fit(x_train, y_train)

y_prediction = Classifier.predict(x_test)
accuracy = accuracy_score(y_test, y_prediction)
print("Model accuracy = " + accuracy_score)

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

Синтаксис Python читается довольно легко. Хотя совсем без знания языка вряд ли получится понять, что там происходит.

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

1. Редактор/IDE: PyCharm (самый популярный).

2. Для анализа данных:

  • iPython/Jupyter;
  • Anaconda;
  • Matplotlib;
  • Pandas;
  • NumPy;
  • PySpark.

3. Для машинного обучения:

  • Scikit-learn;
  • Keras;
  • TensorFlow.

4. Для веб-разработки:

  • Django;
  • Tornado;
  • Flask.

5. Менеджер зависимостей:

  • Pip;
  • Conda.

6. Cython-синтаксис — для написания компилируемого кода.

Java — мультифункциональный объектно-ориентированный язык со строгой типизацией. Не путайте его с JavaScript, у них похожи только названия, но на практике они во многом противоположны друг другу.

На Java пишут сложное ПО: промышленные и банковские системы — как раз то, что не пишут на JavaScript. Помимо этого, огромное количество десктопных приложений, приложений на Android и серверных программ написано именно на Java.

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

Вот какие достоинства и недостатки есть у Java:

Изображение: Skillbox Media

Java — популярный и сложный язык, поэтому для Java-разработчиков всегда достаточно вакансий, а зарплаты у них высокие. Например, средняя зарплата по Москве — 115 тысяч рублей. Даже новичок может зарабатывать от 60 до 95 тысяч.

Скриншот: Skillbox Media

Как и в случае с остальными языками программирования, пожалуй, самой популярной IDE в Java является продукт JetBrains — IntelliJ IDEA. Хотя у свободных сред разработки Eclipse и NetBeans тоже большие сообщества пользователей. Безоговорочный лидер среди фреймворков для Java — Spring. Это универсальная библиотека для быстрой разработки веб- и консольных приложений.

Вот как примерно выглядит технический стек Java.

1. IDE:

  • IntelliJ IDEA;
  • Eclipse;
  • NetBeans;
  • AndroidStudio.

2. Популярные фреймворки:

  • Spring;
  • Swing;
  • Hibernate;
  • RxJava.

3. Android-фреймворки:

  • OrmLite;
  • RoboSpice;
  • Picasso;
  • Retrofit;
  • ButterKnife.

4. Android-инструменты:

  • Android SDK Manager;
  • Android Emulator;
  • ADB.

5. Базы данных:

  • Oracle;
  • MySQL;
  • MS SQL.

6. Менеджер зависимостей / система сборки:

  • Gradle — для приложений на Android;
  • Ant;
  • Maven — самый популярный.

7. JVM — Java Virtual Machine, среда выполнения кода.

Теперь давайте сравним все эти языки.

Изображение: Skillbox Media

HTML и CSS самые лёгкие, но платят за них тоже не так много. Если вы не уверены в своих силах, стоит начать с них.

JavaScript уже чуть сложнее, но с ним вы точно найдёте работу.

Java — гарантия работы и хорошей зарплаты, но язык сложный, поэтому нужно верно оценить свои силы.

PHP и Python: оба языка очень популярны, но в довольно узких областях. Если эти области вам по душе — замечательный вариант!

Опишем краткий алгоритм выбора.

  • Для начала выберите не язык, а интересное вам направление. Это может быть веб-, десктопная, мобильная или серверная разработка. А может быть, вы захотите заниматься анализом данных.
  • Теперь оцените свои силы и навыки и выберите язык, подходящий вашему уровню. Если вы никогда ничего не программировали и не учились программированию ни в школе, ни в университете, начните с языков полегче (JavaScript, PHP), а если чувствуете себя увереннее и уже пробовали что-то писать, можете выбрать Java.
  • Определившись с языком и изучив его синтаксис, не забудьте познакомиться со стеком технологий и популярными фреймворками — это вам точно пригодится. Не надо пытаться сразу всё досконально изучить, но важно ориентироваться в технологиях.

* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности.

Научитесь: Профессия Разработчик
Узнать больше


Язык программирования похож на иностранный, только с его помощью донести информацию можно не до англичанина или француза, а до компьютера. Цель начинающего программиста — научиться изъясняться так, чтобы компьютер его понимал. Для каждой задачи, платформы и операционной системы хороши определённые языки, а всего их существует около 9 000. Изучать их все не нужно, можно успешно работать всего с несколькими языками или даже с одним.

По традиции, начиная осваивать новый язык, программист пишет на нём скрипт, который выводит на экран надпись Hello, World! Вот как это выглядит на разных языках:

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

Python

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

А это C#

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

Kotlin

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

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

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

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

Остановимся на самых популярных направлениях программирования.

Веб-разработка имеет дело с созданием сайтов и приложений и ведётся по двум основным направлениям — фронтенд и бэкенд. Разберёмся на примере.

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

Так вот, фронтенд — это внешняя оболочка сайта или приложения, то, что видит пользователь, а бэкенд — все отвечающие за это внутренние процессы, они пользователю не видны.

Для работы во фронтенде нужны три языка: HTML, CSS и JavaScript (JS). При этом настоящий язык программирования только последний.

JavaScript — один из главных языков фронтенда, альтернатив для него мало. Популярен также TypeScript, но он создан на основе JavaScript. Если вы хотите, например, чтобы после написания сообщения в чате, оно отображалось, без этих языков программирования не обойтись.

HTML и CSS формируют структуру сайта. HTML говорит, что обозначается на странице — заголовки, абзацы, картинки и так далее, а CSS говорит, как это будет выглядеть: какие размеры должны быть у заголовков, какого они цвета, есть ли подчёркивания и так далее.

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

Слева HTML-тег <h1> — в нём заключается заголовок. Атрибут тега class определяет, какое у заголовка будет оформление, — как оно задаётся в CSS, можно увидеть справа

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

Чтобы реализовывать бэкенд в веб-разработке, пригодятся PHP, Python, Java, Go, С#, C++, Ruby и другие.

PHP был особенно популярен в 2000-е годы и всё ещё находится в топ-15 самых распространённых языков, но в современных крупных компаниях вместо него теперь чаще используют Python или Go.

Ruby часто применяется в разработках для небольших стартапов.

Фулстек-разработчики создают сайты и приложения целиком, отвечают и за фронтенд, и за бэкенд.

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

C# и C++ чаще всего используются для создания программ для Windows, игр на движке Unity, проектов для Sony PlayStation и Microsoft Xbox.

На Java разрабатывают кроссплатформенные приложения, которые работают одновременно на Windows, Mac OS и Linux.

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

Для мобильной разработки тоже используется Java. Можно вспомнить популярные в нулевых Java-игры для мобильных — те, в которые мы играли на своих первых телефонах ещё в школе.

Сейчас с помощью Java создаются приложения для Android. Его альтернатива — Kotlin.

Для iOS используется Swift. Его предшественник — Objective C, раньше Apple использовали для своих разработок именно его.

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

Здесь мы разберём разные направления в сфере разработки и рассмотрим отдельные языки. Но сначала — тезисы о карьере разработчика как таковой. 

Прежде чем выбирать язык

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

ИТ — это не только разработка

Есть стереотип, будто работа в сфере информационных технологий — это работа программиста. Это не так. Помимо разработки, есть много другого: 

  • управление командой, то есть проджект-менеджмент;
  • дизайн интерфейса, графический дизайн, коммуникации;
  • экономика и управление продуктом;
  • маркетинг, реклама, продвижение;
  • аналитика;
  • дата-сайенс и нейросети — это тоже не совсем про разработку программ;
  • работа рекрутера — то есть поиск и привлечение нужных людей в компанию. 

Также есть много инженерно-технической работы, не связанной с разработкой напрямую: это работа с сетями, кибербезопасностью, поддержка инфраструктуры, автоматическое тестирование софта и многое другое. 

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

Ваш первый язык программирования: гид для начинающих

Можно ли выучить что-то одно и быть спокойным за будущую карьеру?

Нет, нельзя. Тут две стороны вопроса. 

С одной стороны, технологии быстро меняются. Три-четыре года назад все фанатели по Python и Django, это были самые горячие языки и технологии. Сейчас они заняли своё место, программисты теперь смотрят на другие игрушки. 

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

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

Появляются принципиально новые задачи, под них нужны новые языки — типа Swift и Kotlin для мобильных приложений. И такая дребедень — целый день. 

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

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

О двух подходах к разработке (и видах разработчиков)

Можно представить, что есть два вида программистов. 

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

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

Условно говоря, олимпиадник — это тот, кто написал алгоритм для построения маршрута для Яндекс-такси. Это нетривиальная задача — прочитайте нашу статью о задаче коммивояжёра и про отжиг.

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

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

Если вы не «олимпиадник» — это нормально. Вы можете быть очень успешным, востребованным и высокооплачиваемым «сборщиком». Такие «сборщики» нужны намного чаще, чем «олимпиадники», потому что 95% софта — это типовые штуки, которые до вас уже много раз придумали. 

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

Ваш первый язык программирования: гид для начинающих

На работу берут весёлых и организованных

Чем больше на рынке выбор айтишников, тем более важными становятся их софт-скилы — умение общаться, быть проактивным, не сидеть в своей скорлупе, не быть токсичным, конструктивно общаться с коллегами. Если 20 лет назад программисту могли простить его хамоватость, сейчас на его место легко найдут такого же, но умеющего общаться. Поэтому рекрутеры всё чаще говорят про важность навыков общения. 

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

Нейроночки порешают

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

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

Каждый следующий даётся легче

В программировании главное — понять принцип решения задач и стыковки готовых фрагментов кода, а не знание конкретных команд языка. Когда вы понимаете принципы разработки на примере одного языка, то же самое в другом языке становится в несколько раз проще. Вам не нужно тратить время на понимание принципов; останется только разобраться, как нужная вам вещь реализована в конкретном языке.

Так что всё не так страшно. Не думайте, что неверный выбор сейчас что-то предопределит и как-то повлияет на вашу судьбу. Тот факт, что вы открыли это руководство, уже говорит о том, что у вас есть все необходимые данные, чтобы работать в сфере ИТ.

Ваш первый язык программирования: гид для начинающих

Алгоритмы везде одинаковые

Вот простая метафора:

Если вы научились водить автомобиль на механике, вы можете сесть плюс-минус за любой автомобиль и поехать. Вам необязательно ездить именно за тем рулём, за которым вы учились в автошколе. Может быть, первое время вам будет непривычно в новой машине, но вы быстро освоитесь.

Но если вы хотите участвовать в гонках типа «Формулы 1», то вам нужно знать ваш болид досконально, до винтика.

То же в разработке: принципы одинаковые, а нюансы языка можно освоить быстро.

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

Шаг за шагом вы осваиваете свой первый язык программирования. Изучение идёт не слишком быстро, потому что много нового. А вот когда вы решили выучить другой язык, вам не нужно заново изучать как таковое программирование. Вам достаточно разобраться только с «грамматикой» нового языка — как пишутся функции, какие ставятся скобки, какие есть нюансы с операторами и т. д.

Ваш первый язык программирования: гид для начинающих

Мне просто спросить

Иногда бывает так, что человек просто хочет понять, каково это — быть программистом и хочет ли он дальше этим заниматься. В этом случае нет смысла учить многопоточность в Python или углубляться в перегрузку операторов на C++.

Вместо этого лучше выбрать такой язык программирования, который будет легко освоить и у которого есть большая «группа поддержки» в интернете: форумы, учебные материалы и курсы. Раньше все начинали с Turbo Pascal 7.0, но сейчас этот язык морально и технически устарел, поэтому лучше выбрать JavaScript или Python. JavaScript — вообще самый дружелюбный и быстрый язык для входа.

Ваш первый язык программирования: гид для начинающих

Веб, софт или робототехника

Если не вдаваться в детали, которые на старте не нужны, то всё ИТ и программирование можно разделить на 5 групп:

  1. Веб и интернет-технологии — самое простое для входа.
  2. Разработка программ для компьютеров и смартфонов — сложнее.
  3. Программирование роботов и умных устройств — увлекательно и несложно, но на старте малоприменимо к работе.
  4. ИИ и нейросети — сложно, если ковыряться; легко, если просто пользоваться.
  5. Инфраструктура — сети, серверы, администрирование, тоже сложно.

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

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

Ваш первый язык программирования: гид для начинающих

Веб — самая простая область для старта

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

Ваш первый язык программирования: гид для начинающих

Разработка программ для компьютеров и смартфонов

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

Выбор конкретного языка зависит от направления. Например, разработчикам игр может понадобиться C и C++, в программах финансового анализа пригодится Haskell, а для мобильной разработки под iOS будет нужен Swift.

Ваш первый язык программирования: гид для начинающих

Программирование роботов и умных устройств

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

Быстрого старта тут не получится — нужно знать устройство и архитектуру микросхем, низкоуровневое программирование и управлять памятью напрямую. Но есть обходной путь: начать с робототехники и программирования для Arduino и Raspberry Pi — это специальные платы для начинающих.

В мире есть целое сообщество хоббистов, которые пишут программы для Arduino и Raspberry Pi и собирают на их основе интересные проекты. В России самый простой вход в Arduino делает компания «Амперка» — у них есть наборы для старта работы с Arduino и всякими полезными радиодеталями.

Ваш первый язык программирования: гид для начинающих

Веб: бэк и фронт

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

Веб — это всё, что вы видите в интернете: сайты, приложения в браузере и бэкенд, который это обслуживает. Здесь используют:

  • Язык разметки HTML — чтобы структурировать страницы в браузере.
  • Язык оформления CSS — чтобы страница или интерфейс выглядели как надо.
  • Язык препроцессоров CSS — когда нужно очень много CSS-кода, правил и стилей.
  • Язык скриптов JavaScript — чтобы интерфейс или приложение вели себя на клиенте как надо.
  • Язык и форматирование JS-фреймворков типа React и Angular — чтобы рисовать и программировать поведение сложных веб-приложений.
  • Языки бэкенда: PHP, Python, Ruby (из популярных) — чтобы обслуживать приложения и хранить пользовательские данные.
  • Языки бэкендовых фреймворков, например Django и Rails.
  • Язык запросов в базу данных: чаще всего MySQL, но есть и другие.

Все эти инструменты нужны для разных задач. Нельзя сказать, что одни лучше других.

В веб-разработке есть два направления — фронтенд и бэкенд. Фронтенд — это всё, что видит пользователь. Бэкенд — всё, что обрабатывает информацию пользователя и скрыто от его глаз. 

Фронтенд-разработчик делает следующее:

  • собирает сайт по макету дизайнера;
  • верстает его с помощью HTML и CSS, если нужно — подключает JavaScript и другие языки, например PHP;
  • разбирается в том, какие процессы бывают во время сборки сайта;
  • умеет опубликовать готовый сайт в интернете;
  • проверяет его работу на разных устройствах, чтобы он выглядел одинаково на всех;
  • пользуется системой контроля версий, например GIT;
  • знает, для чего нужен Webpack и препроцессоры и как с ними работать.

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

Ваш первый язык программирования: гид для начинающих

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

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

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

Главный инструмент бэкенд-разрабочика — язык программирования. Здесь у бэкенда два главных языка:

  • PHP, на котором сделаны почти все современные веб-движки;
  • Python, на который переходит весь просвещённый мир.

Ваш первый язык программирования: гид для начинающих

Лучшие языки для старта 

Теперь про сами языки для старта. Мы отобрали 5 лучших языков, которые максимально помогут новичку на старте. Главная их особенность — их можно освоить относительно быстро, а потом погружаться в детали, если будет интересно развиваться дальше. 

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

Python

Ваш первый язык программирования: гид для начинающих

Первое, что отмечает большинство разработчиков, когда начинаются разговоры про Python, — безупречный и аккуратный код. Чтобы оформить любой логический блок, например содержимое функции, просто используют отступы и пробелы. Не нужно проверять, не потерялась ли по пути лишняя скобка — всё видно сразу. Одна команда занимает одну строку, поэтому разделители команд тоже не нужны.

В какой бы области вы ни делали проект, скорее всего, для этого уже есть готовая Python-библиотека. Обработка изображений, математика, распознавание речи — для всего есть инструменты. Чтобы вы понимали, насколько это универсальный язык, посмотрите, для чего используют Python-библиотеки:

  • NumPy — машинное обучение и искусственный интеллект;
  • Django и Flask — веб-разработка и веб-приложения (например, Pinterest, YouTube и Instagram написаны на Django);
  • SQLAlchemy — базы данных и обработка больших объёмов информации;
  • Cocos2d — мобильные и браузерные игры;
  • Tornado — приложения, которые требуют высокой производительности и должны работать одновременно с сотней тысяч пользователей;
  • Bubot — программирование робототехники, как вариант — использование на Raspberry Pi.

Python можно запустить практически на любой платформе — от КПК до серверов — и на любой операционной системе. Правда, есть ограничения. Как только платформа полностью устаревает и перестаёт использоваться (например, Windows 95), прекращается её поддержка в новых версиях языка.

Более того, существует специальная версия Python для виртуальной машины Java — Jython. С её помощью можно выполнять код на любой системе, которая поддерживает Java (то есть на чём угодно умнее утюга, но и на некоторых утюгах тоже).

JavaScript

Ваш первый язык программирования: гид для начинающих

JavaScript — это язык для управления веб-страницами в браузере. Он исполняется только в браузере, может красить элементы на странице в разные цвета, рисовать интерфейсы, пуляться данными, но всё — в браузере. На JavaScript можно писать и приложения и даже десктопные программы. Но это требует огромного внешнего обвеса, мы не рекомендуем.

Кто бы что ни говорил про JavaScript, но он был и остаётся идеальным языком для начала программирования. Смотрите сами:

  • для работы нужен только браузер или его движок типа V8;
  • можно освоить за неделю;
  • это самый используемый язык, по статистике на StackOverflow;
  • JavaScript можно подключить к любому сайту в интернете;
  • и главное — огромное сообщество, где можно найти решение любой проблемы.

JavaScript — это язык программирования, с которым все сталкиваются каждый день:

  • в интернет-магазине, когда вы кликаете «Добавить в корзину» и счётчик товаров сразу обновляется;
  • когда вы при регистрации вводите неправильный имейл и форма сразу подсвечивает вам, что он неверный;
  • в социальных сетях в браузере, когда новое сообщение приходит без перезагрузки страницы;
  • там же, когда вы можете перейти из личных сообщений в новости, продолжая слушать любимую музыку;
  • в любой браузерной игре;
  • когда на сайтах есть какая-то анимация;
  • когда сайт собирает данные для статистики;
  • когда посреди чтения статьи на вас бросается бесящая нападайка.

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

А главное — это всё ещё самый популярный язык веб-разработки. Главное его преимущество — веб-программисты нужны везде, даже там, где делают мобильные приложения и игры. Потому что существенная часть игр и мобильных приложений сделана на технологиях веба.

Если вам нужно просто с чего-то начать, чтобы понять вообще, стоит ли идти дальше в программирование, — начните с JavaScript.

Java

Ваш первый язык программирования: гид для начинающих

Java — это серьёзный объектно ориентированный язык, на котором пишут серверный софт, программы для компьютеров и мобильные приложения. Он интересен тем, что один и тот же код можно скомпилировать под множество разных платформ. Java — один из основных языков для разработки под Android.

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

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

Но самый главный плюс Java — это виртуальная машина JVM (Java Virtual Machine). Эта машина переводит код программы, написанной на языке Java, в код, который может быть понятен процессору, а значит, его можно запустить на разных компьютерах и устройствах. JVM можно использовать почти на любой ОС или аппаратной платформе, где есть нужный процессор. Это означает, что один и тот же Java-код можно запустить на мобильном устройстве, на сервере или на любом другом устройстве, где присутствует JVM, например.

  • ультрамощные серверы;
  • компьютеры;
  • смартфоны;
  • кнопочные телефоны;
  • роботы и микроконтроллеры типа Arduino, Raspberry Pi и многие другие;
  • фитнес-браслеты;
  • GPS-трекеры;
  • умные часы;
  • умные телевизоры, холодильники, микроволновки, чайники и прочие домашние гаджеты;
  • смарт-карты для доступа в помещения.

Представьте, что вы создали программу на Java, которая отслеживает свободное место на жёстком диске и сообщает вам, когда оно меньше 20%. При этом вы можете запускать её практически на любом устройстве, где работает JVM. Код будет работать одинаково, независимо от процессора и операционной системы — главное, чтобы там работала виртуальная машина. В итоге один и тот же код будет использоваться для отслеживания свободного места на компьютерах, телефонах, планшетах и других устройствах.

Также Java является негласным стандартом в корпоративном программировании. Дело в том, что многим крупным компаниям важна надёжность, стабильность и поддержка кода в течение многих лет. Благодаря объектно-ориентированному программированию, работе с памятью и тому, что архитектура не зависит от системы и процессора, Java становится хорошим выбором для компаний.

Rust

Ваш первый язык программирования: гид для начинающих

Rust позиционируется как компилируемый системный мультипарадигмальный язык высокого уровня. Сейчас поясним, что это значит.

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

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

Мультипарадигмальный значит, что в языке сочетаются несколько парадигм программирования. В случае Rust это ООП, процедурное и функциональное программирование. Причём ООП в Rust пришло из C++, а функциональное — из Haskell. Программист может сам выбирать, в каком стиле он будет писать код, или совмещать разные подходы в разных элементах программы.

Несмотря на синтаксис, похожий на C, главную особенность программ на Rust разработчики взяли из Haskell, и звучит она так:

Если программа на Rust скомпилировалась и не упала во время запуска, то она будет работать до тех пор, пока вы сами её не остановите.

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

  • высокая скорость работы программ;
  • возможность написать код в ООП-стиле: с классами и объектами (но есть ограничения);
  • стабильность в работе и при компиляции;
  • компилятор сам предлагает варианты исправления ошибок в коде;
  • кросс-платформенный компилятор;
  • поддержка многопоточности;
  • поддержка «небезопасных» блоков для прямой работы с памятью;
  • можно вставлять код на C и C++.

C и C++

Ваш первый язык программирования: гид для начинающих

Мы долго сомневались, включать эти языки в список для начинающих или нет, и вот почему:

  • C одной стороны, это отличные языки программирования с фундаментальной базой и всеми нужными понятиями. Если освоить один из них, то разобраться потом с остальными будет в сто раз проще. 
  • C другой — придётся разобраться не только в алгоритмах, но и в организации памяти, внутреннем устройстве стека и прочих сложных вещах. Это всё по силам и новичку, но времени надо много.

C — классический язык разработки системного ПО и любого софта для микропроцессоров. На нём написаны Linux, большая часть Windows и MacOS. Если взять любой современный носимый гаджет или электронное устройство, в большинстве случаев они работают тоже под управлением программы на C. В мире огромное количество кода, который написан на C (и ещё столько же будет написано), поэтому проблем с работой у C-программистов не предвидится.

C++ — выбор тех, кому одновременно нужна вся мощь C и гибкость объектно ориентированного программирования. Counter-Strike, StarCraft и World of Warcraft написаны на C++, а это значит, что можно сочетать производительность C и современные технологии. Часть движка Unity тоже написана на C++, чтобы получить прямой доступ к памяти и ресурсам системы.

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

Если вам важна скорость, производительность и относительная простота языка — смотрите на C, там это всё есть. С другой стороны, из-за простоты в нём многие вещи придётся делать вручную — обрабатывать исключения, следить за сроком жизни переменных и структур или писать дополнительный код.

Ответы на вопросы

Можно ли начать программировать вообще с нуля?

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

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

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

Обязательно ли быть технарём или заканчивать технический вуз?

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

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

Нужно ли осваивать язык в совершенстве, чтобы начать работать?

Нет! Наоборот: гораздо полезнее начать стажёром в ИТ-компании, зная только самые основы, и потом развиваться исходя из поставленных задач.

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

Мне 30, 40, 50 лет — уже поздно?

Зависит от того, готовы ли вы вникать в новую тему. Если у вас есть полчаса в день на изучение языка программирования, прогресс будет медленным. Если вы готовы уделять этому много времени, то всё получится быстрее. Но каких-то возрастных ограничений нет: писать код и управлять продуктами можно в любом возрасте.

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

Я женщина — мне подойдёт?

В смысле? В ИТ полно женщин. Какая разница, чьи пальцы нажимают на клавиши и пишут код? 

Куда идти учиться?

О, мы как раз об этом сделали подборку. Но если вкратце: если хотите учиться при поддержке опытных наставников (живых!) — приходите в Яндекс.Практикум. Кроме наставников там есть тренажёры, домашка, теория, практика, ещё теория, ещё практика, потом ещё, потом курсовая, потом защита, потом ты такой сидишь и выбираешь, в какой компании работать.

Или можно учиться самостоятельно по урокам и инструкциям из интернета — но там без наставников, своими силами.

Что дальше

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

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

Чем больше языков вы знаете, тем шире ваш кругозор и тем ценнее вы как специалист.

Необязательно все дальнейшие задачи решать на своём первом языке программирования — всегда можно выучить что-то новое.

А главное — с чего бы вы ни начали, знайте: у вас всё получится. Мы верим в вас. 

На дорожку

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

Посмотрите для примера наш тест о работе в офисе ИТ-компании. Вас удивит, насколько всё бывает неоднозначно.

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

Мы изучили рекомендации англоязычных программистов-блоггеров и составили сразу 3 инструкции. Какую из них выбрать — зависит от того, как быстро вы хотите начать обучение.

Если нет времени читать статью и разбираться — просто воспользуйтесь алгоритмом:

Плакат «Как выбрать первый язык программирования» можно скачать и распечатать
Содержание

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

  1. Познакомьтесь с основными направлениями в программировании и подумайте, чем бы вы хотели заниматься. 
  2. Изучите рынок ИТ-вакансий в своем регионе. 
  3. Выделите направления, которые вам нравятся и где много открытых вакансий. 
  4. Выпишите основные языки программирования, закрепленные за выделенными направлениями. Уделите каждому языку одну-две недели и познакомьтесь с его основами. Отмечайте: что вам нравится, не нравится и чего не хватает. 
  5. Когда протестируйте все языки — выберите один и переходите к обучению. 

Нет универсального языка программирования, который лучше остальных подходит для обучения — считает канадская разработчица Tiffany с ютуб-канала Tiff In Tech. Языки во многом напоминают строительные инструменты, где у каждого предмета свои возможности и ограничения. Молотком, например, удобно забивать гвозди, но невозможно напилить дров. Так и в программировании: на Swift вы можете написать мобильное приложение под iOS, но не под Android.

По теме

Кто ты в айти: как правильно оценить уровень своих компетенций

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

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

Embedded Development

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

Embedded-разработчик должен хорошо разбираться в электронике, физике, сетевых технологиях и писать код на C или C++ — быстрых и наименее трудоемких языках программирования. Это направление для всех, кто любит создавать осязаемые вещи. 

Mobile Development

Мобильная разработка делится на два вида: нативная и кроссплатформенная. Нативная разработка предполагает создание приложений под операционные системы iOS или Android. Если вы решите писать приложения под iOS, то вашим основным языком программирования будет Swift; если под Android — Kotlin. 

Кроссплатформенная мобильная разработка — это когда вы с помощью одного кода охватываете сразу две системы: iOS и Android. Есть три популярных фреймворка, которые созданы специально для кроссплатформенной разработки: Flutter и язык программирования Dart, KMM и язык Kotlin или React Native и язык Java Script.

Game Development

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

В геймдеве есть два основных направления, которые привязаны к игровым движкам — вспомогательной экосистеме для разработки игр. Основные движки: Unity и Unreal Engine. Для разработки игр на Unity подходит язык C#; для Unreal Engine — C++.

Desktop Application Development

Это разработка настольных приложений под операционные системы Windows, Linux или Mac OS. В отличие от веб-приложений, десктопные программы не хранятся на удаленном сервере и не запускаются через браузер. Они могут работать, как автономные программы — без доступа к интернету.

Для создания десктопных программ разработчик должен освоить один или несколько высокоуровневых языков программирования вроде Python, Java, C++ или .NET. Кроме того, нужно понимать устройство операционных систем и владеть инструментами сборки, отладки, развертывания и тестирования приложений.

Web Development

Веб-разработка делится на два основных направления: фронтенд и бэкенд. Фронтенд — это отображение элементов в браузере: все, что можно прочитать, запустить и вывести на экран. Для фронтенда программист должен знать язык Java Script, а также языки разметки HTML и CSS. Для продвинутого уровня нужно изучить фреймворк React, чтобы разрабатывать пользовательские интерфейсы.

Бэкенд — это внутренняя архитектура, которая скрыта от пользователя когда он работает с браузером или мобильными приложениями. Чаще всего для бэкенда новички изучают следующие языки программирования: Java Script, Python, Java, Go. Дополнительно нужно уметь взаимодействовать с базой данных и языком запросов SQL. Для продвинутого уровня бэкенд-программисты изучают фреймворки: для языка JavaScript — Node.js, для Python — Django, для Java — Spring, а для Go — фреймворк Buffalo. 

По теме

Менторство в IT: как выбрать себе наставника

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

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

Предположим, вам понравилась Embedded, Desktop и Mobile-разработка. Однако для Desktop-программистов вакансий нет, а для Embedded высокие требования к специалистам: работодатели не рассматривают кандидатов без диплома о высшем техническом образовании и опыта работы с электроникой. 

Остается мобильная разработка: у iOS-разработчиков выше зарплаты, зато для Android больше предложений для новичков. Flutter-специалисты практически не нужны. 

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

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

Для мобильной разработки нужно протестировать два языка: для iOS — Swift; для Android — Kotlin. Может быть так: вам понравилось лаконичность и синтаксис обоих языков, но не понравилось, что Android-приложения приходится оптимизировать под множество устройств. Вам проще работать со Swift.

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

Ничего не помогло? Остается монетка. Подкиньте и посмотрите, какой язык выпал. Обратите внимание на ощущение: если чувствуете радость от выбора, значит это ваш язык. Если грусть — учите язык, который вам не выпал.

Инструкция 2. Для тех, кто хочет начать как можно быстрее 

  1. На свое усмотрение выберите JavaScript или Python.
  2. Если сложно выбрать — учите JavaScript.

Для этой инструкции мы воспользовались советами инженера-программиста из Google YK Sugi с ютуб-канала CS Dojo. YK Sugi рекомендует не экспериментировать и выбирать JavaScript или Python — простые языки программирования для начинающих

В 2022 году в исследовании Stack Overflow Developer Survey 2022 появился отдельный раздел, в котором подсчитан рейтинг популярных языков программирования для обучения. Этот рейтинг подтверждает, что большинство разработчиков действуют так, как советует YK Sugi: изучают JavaScript вместе с HTML и CSS или выбирают Python.

Stack Overflow: рейтинг популярности языков программирования для обучения

Если не хотите сравнивать JavaScript и Python — выбирайте JavaScript. Чтобы понять почему, посмотрите дорожные карты фронтенд и бэкенд-разработчика. JavaScript — это обязательный язык программирования для фронтендера и полезные знания для бэкендера. Кроме того, JavaScript применяется для многих задач бэкенда наравне с Python, Java, PHP и другими языками. Если вы начнете изучать фронтенд и внезапно переключитесь на бэкенд-разработку, знания JavaScript не пропадут зря.

По теме

6 цифровых навыков которые нужны для самообучения

Другие преимущества JavaScript перечислили эксперты: бывший техлид в Google с канала TechLead и основательница DappCamp Притти Касиредди с freeCodeCamp.org:

  • Можно за короткое время запустить проект и поделиться результатами. Эти стимулирует больше практиковаться и нарабатывать портфолио. 
  • Быстрая обратная связь. Вы пишите код в IDE, обновляете браузер и сразу видите результат. Языки программирования вроде Java или Haskell так не могут — они требуют компиляции и усложняют обучение. 
  • Универсальность. Код на JavaScript работает в любом современном браузере, устройстве и операционной системе. Его можно использовать для разных целей: как язык сценариев, для создания веб-приложений или серверных API, для ботов и приложений под IOT-устройства, для настольных и мобильных программ, проектов виртуальной реальности. 
  • Доступность инструментов. Вы можете установить любую IDE и сразу писать код — больше не нужно никаких дополнительных программ. Если бы вы решили программировать под iOS или Android, то пришлось бы настраивать Xcode или Android Studio — это усложняет начало работы.
  • Много вакансий для начинающих и опытных разработчиков.

Дорожнfz картf фронтенд разработчика. Изображение: roadmap.sh

Дорожная карта бэкэнд разработчика. Изображение: roadmap.sh

Инструкция 3. Для тех, кто не выбрал специализацию и не хочет сравнивать языки программирования 

  1. Изучайте язык C.
  2. Если есть время, желание и энтузиазм — C, C++ и Java.

C — это первый язык программирования, с которым студенты знакомятся во многих колледжах. Знания языка C позволяют человеку не переживать за специализацию, пройти обучение и работать в любой ИТ-отрасли. Такое мнение сложилось у индийского разработчика, преподавателя и создателя ютуб-канала Telusko. 

По теме

Что должен знать junior тестировщик перед первым собеседованием

При этом автор считает, что если новичку сложно выбрать специализацию и у него есть время на обучения, то после языка C он может выучить C++ и Java. Получится следующее: язык C даст общее представление о программировании, C++ позволит разобраться с работой объектов, а знания Java откроет дорогу к любому работодателю. 

Язык C высоко оценил и другой разработчик — американец, владелец Discord-сервера и автор ютуб-канала Engineer Man. По его мнению у каждого языка есть разные уровни ценности: S — лучший язык; F — худший; A-D — промежуточные варианты. Язык C вместе с Java Script находится на высшем уровне и считаются лучшими для работы. 

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

Уровень S

Языки: C, Java Script. Это мощные многофункциональные языки, которые по возможности стоит изучать и использовать в первую очередь. 

  • C — важнейший язык, которые лежит в основе всех вычислений: на нем написано большинство операционных систем, а также интерпретаторов и компиляторов для других языков программирования. За 50 лет C почти не изменился и сейчас на н ем можно написать операционку по стандартам 1989 года. Блогер считает C единственным языков, который вышло правильно разработать с первого раза. 
  • Java Script — вездесущий совершенный язык, на котором легко и удобно писать код. С ним легко начать работу для тех, кого интересует фронтенд-разработка. 

Уровень A

Языки: Rust, Python. Это популярные, полезные и быстрорастущие языки, которые из-за своих архитектурных особенностей не могут подняться выше. 

  • Rust — это язык, которые решает уникальную проблему: работает быстро как C++, не подвергает программу опасности ручного выделения памяти и за счет своего сборщика мусора работает без ущерба для производительности. Однако у Rust непростой синтаксис, поэтому новички не могут с л егкостью им пользоваться. 
  • Python — язык общего назначения, который из-за сверхпопулярности используется для всего. Даже для тех ситуаций, в которых он неуместен. 

Уровень B

Языки: C#, C++, Ruby. Хорошие и полезные середнячки для технарей. 

  • C# — альтернатива Java, если нужно писать программы под Windows. 
  • C++ — не решает новых проблем, но включает в себя множество дополнительных функций, которых нет в C. Полезен для разработки операционных систем, высокопроизводительных вычислений, а также в разработке видеоигр. 
  • Ruby — язык общего назначения и веб-разработки. Стал популярным из-за фреймворка Ruby on Rails. У Ruby лаконичный синтаксис, который трудно читать. 

Уровень C

Языки: Swift, Type Script, Perl, Kotlin, Go. Это удобные и функциональные языки, которые по разным причинам не смогли полностью раскрыть свой потенциал. 

  • Swift отлично заменил Objective-C, хорошо продуман и быстро работает. Однако его проблема — его нельзя использовать нигде за пределы экосистемы Apple. 
  • Type Script становится постепенно ненужным. Причина в Java Script, который ежегодно обрастает множеством дополнительных функций в синтаксисе. 
  • Perl — старый и сильно видоизменившийся язык, который не предлагает разработчикам уникальных функций и нужен только для обслуживания старых продуктов. Здесь непонятно, почему Engineer Man не присвоил Perl уровень D. 
  • Kotlin — мощный современный язык, приемник Java. Однако пока конкуренции между языками нет и Kotlin в основном используется для разработки под Android. 
  • Go — еще один проект от Google. Язык с отличной моделью параллелизма, который создавался для разработки веб-сервисов. Минусы: сложный синтаксис. 

Уровень D

Языки: Dart, Lua, Java, PHP. Это устаревающие тяжеловесные языки, которые удерживают позиции из-за огромного количество кода, которые пока не переписать. Если можно — разработчики используются более современные языки. 

  • Dart — язык от Google, который не решает новых проблем. Если бы не активное продвижение и фреймворк Flutter, то про него все бы уже давно забыли. 
  • Java — существует около 12 альтернативных решений, которые позволяют создавать байт-код совместимый с виртуальной машиной. Новые решения не уступают Java по производительности, но более удобны для работы. Преимущество Java только в количество кода, который нужно обслуживать. 
  • Lua — старый язык с ограниченным количеством вариантов использования. 
  • PHP — простой и удобный язык для старта и использования. Создатели приложили много усилий, чтобы наладить совместимость старой и новой версий. Но ранние версии были сырыми и поэтому в версии PHP 2021 года сохраняются проблемы 1998 года. Кроме того, PHP предназначен только для веб-разработки. 

Уровень F

Языки: Objective-C. Это сложный и плохо собранный язык с неудобным синтаксисом, от которого компания Apple отказалась в 2014 году. Его заменил Swift.

Рейтинг ценности языков программирование по версии ИТ-блогера Engineer Man

А вдруг я неверно выберу язык. Как быть, чтобы не прогадать? 

Языки программирования появились восемьдесят лет назад и развивались вместе с эволюцией электронно-вычислительных машин. Ощутите разницу: первые языки обрабатывали команды из нулей и единиц, а сейчас — управляют нейросетями и ИИ. 

По теме

10 бесплатных способов войти в IT: от самых очевидных к нестандартным

В мире насчитывается около 500 языков программирования, а если технологии продолжат развитие, их количество будет увеличиваться. Причина в том, что многие языки устаревают и становятся невыгодными для коммерческой разработки. Для примера посмотрите, сколько проблем накопилось в Java и почему многие переходят на Kotlin. 

Схема развития основных языков программирования с 1957 по 2007 год. Инфографика: piermarcobarbe.github.io

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

Хорошая новость: многие языки программирования похожи по структуре. Поэтому когда выучите первый язык, второй и последующие даются проще — у вас есть основа, на которую останется наложить синтаксис и особенности нового языка. Чтобы в этом убедиться, почитайте пост на Reddit пользователя с ником davidccoin — он начинал работать в НАСА и за карьеру сменил сотню языков, от BASIC до Python.

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

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

article widget img

«‎‎Главная ошибка собеса — подгонять ответы»‎. Рекрутеры рассказали о найме в IT

Откуда берутся IT-рекрутеры, с какими трудностями они сталкиваются в попытках закрыть позиции и какие ошибки сами совершают на интервью — полезно знать перед тем, как искать работу.

Понравилась статья? Поделить с друзьями:
  • Как найти с в задача на сплавы
  • Как найти сторону квадратного треугольника
  • Как составить программу занятий с ребенком
  • Как найти высоту если известна потенциальная энергия
  • Как исправить номер вкладыша на титульном листе трудовой книжки образец