Найти тему

Какой язык программирования изучить ребёнку, чтобы зарабатывать потом всю жизнь хорошо

Оглавление

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

Какими языками программирования пользуются супер-профи

Любыми. ЛЮБЫМИ. Потому что нужный язык программирования они изучат за недельку. Собственно, даже я, далёкий от таких людей, могу спокойно изучить любой язык на уровне, чтобы начать работать, за месяц. Это я беру с учётом несильной спешки и довольно плотной занятости. И начиная с определённого уровня профессионализма, смотрят не на то, какой язык программирования человек знает, ибо крутому программисту можно и репетитора выделить за счёт компании, а лучше просто хороший онлайн-курс. Это если он поленится сам найти вариант обучения.

Я недавно лично разговаривал с программистом, которому так курс и оплатили. Это был онлайн-курс JavaRush. При том, что получал он не больше 200 000 р в месяц. И тут правильный вопрос — что же тогда изучать, чтобы стать таким востребованным специалистом?

Что изучать, чтобы приближаться к уровню супер-профи?

Изучать нужно Computer Science — «компьютерную науку». То есть старую добрую информатику, которую и так преподают в школе, в максимально полном объёме. Как устроен компьютер? Как с помощью цифр кодируется информация? Как работают отдельные части компьютера? Как работать с таблицами, базами данных? В общем, всю ту скучную муть — с точки зрения большинства школьников — которую дают информатики и которую учить большинству не хочется.

Можно ли выделить самые основы Computer Science, которая важнее всего для будущего программиста?

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

  1. Какую-то конкретную технологию, связанную с языком, для JavaScript это интернет и браузеры, либо устройство компьютера (смартфоны и прочие гаджеты устроены так же)
  2. алгоритмы и структуры данных.

По идее, алгоритмы и структуры данных изучаются на базовом уровне в курсе языка программирования — если это годовой курс. Эти темы про то, как работать с большим набором однотипных данных. Например, как вывести в Яндекс.Дзен на странице каждого пользователя его посты? И чтоб со ссылками. Мои посты или статьи — это набор однотипных данных. Как и посты в Instagram. А как запрограммировать, чтобы выводились посты по хештегу? Или по запросу в поиске? А как запрограммировать, чтобы можно было автоматически отобрать из базы данных предприятия сотрудников, которые хорошо себя показали, и автоматически всем назначить премию в 50% зарплаты? Это всё про работу с наборами однотипных данных — структурами данных. И немного про алгоритмы.

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

  1. Умеешь ли ты писать программы, в которой циклы вложены друг в друга? А сколько раз максимально? (нужен ответ «Сколько понадобится, столько и сделаю»)
  2. А программы, в которых несколько «если» („if“) вложены друг в друга?
  3. А программы, в которых несколько циклов и ветвлений («если»/„if“) вложены друг в друга?
  4. Сможешь ли ты написать программу, в которой из консоли или файла считывается массив/список чисел, а потом выводится на экран?
  5. Сможешь ли ты написать программу, где без готовых функций и методов будет считаться сумма, произведение массива/списка?
  6. А где будет искаться самое большое или маленькое число в массиве?
  7. А то же самое с двумерным списком?
  8. Умеешь ли ты работать с ассоциативными списками или объектами?

Если ответы «Да» — хорошо, можно алгоритмы изучать.

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

Что изучать дальше, если основы основ алгоритмов и структур данных изучены

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

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

-3

Там даётся уже прямо хорошая база — но база — понимания алгоритмов. Язык программирования — Python 2 версии. От современного Python 3 версии почти не отличается, если брать материал книги.

Если человек знает

  1. Технологию, для которой нужно программировать
  2. Всё, что написано в этой книге
  3. Любой язык программирования

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

И это всё?

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

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

Подытожим

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

Понравилась статья? Подписывайтесь, ставьте лайк, пишите в комментарии, о чём ещё написать