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

Типичный пример, когда появляются вопросы на тостере по типу: «Я хочу выучить программирование, чтобы делать сайты, нужно ли мне учить php/python/ruby/java/.net и прочее». Некоторые, вообще начинают заходить с C/C++. И главная проблема в том, что люди задают серию таких вопросов на протяжении 6-12 месяцев, рассуждают о каких-то концепциях по типу «Мне недостаточен ПХП, так как он не имеет гибкость» и прочим трешем. Т.е. становится явно, что человек занят каким-то бесполезным дрочевом, которое никакого отношения не имеет программированию.



Зачем вы учите тот или иной язык программирования


Когда мы спрашиваем человека лет 25-35, почему он учит тот или иной язык программирования, то он начинает с большим энтузиазмом рассказывать о его плюсах, возможностях, концепциях и прочее. Это все очень круто и здорово! Когда мы спрашиваем человека лет 35-50, почему он учит тот или иной язык программирования, то ответ получаем крайне прагматичный – «Мне за это платят».

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

А когда заходит речь про «Мне за это платят», нужно понять, кто вам готов за это платить и сколько. Практика показывает, что гораздо приятней получать зп в 150 тысяч, клепая модули для интернет магазина на ПХП, чем учить условный Python и сидеть без работы.
Небольшой Пример

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

PHP


  • Веб-сайт (Веб-сервис)
  • Интернет-магазин (Битрикс + интеграция 1С)}
  • ВЕБ-CRM

Общий пул вакансий 525

  • Zend — 43 (потолок 200 — 3 вакансий, 100 — 20 вакансий, 80 — 28 вакансии).
  • Yii-102 (потолок 215 — 4 вакансий, 100 — 54 вакансий, 80 — 78 вакансии).
  • symfony — 85 (потолок 200 — 5 вакансий, 100 — 44 вакансий, 80 — 66 вакансии).
  • laravel — 76 (потолок 170 — 4 вакансий, 100 — 42 вакансий, 80 — 54 вакансии).
  • Битрикс — 181 (потолок 130 — 14 вакансий, 100 — 27 вакансий, 80 — 62 вакансии).

Python


  • Веб-сайты (веб-сервисы)
  • ВЕб-CRM/ERP
  • Порт QT — что-то простое или программа под Linux.
  • Ютилиты для Linux (Ansible)
  • Биг-дата — самый простой вход
  • Тестирование

Общий пул вакансий: 596 вакансий

  • Теcтирование — 107 (потолок 175 — 8 вакансий, 100- 19 вакансий, 80- 30 вакансии).
  • Data — 93 (потолок 245 — 3 вакансий, 150- 13 вакансий, 100- 17 вакансии).
  • Devops — 86 (потолок 235 — 1 вакансий, 150- 7 вакансий, 100- 13 вакансии).
  • Django — 64 (потолок 240 — 6 вакансий, 150-12 вакансий, 80- 32 вакансии).
  • Flask — 25 (потолок 215 — 3 вакансий, 150-8 вакансий, 80- 12 вакансии)
  • Tornado — 17
  • aiohttp — 5
  • Twisted — 4

Java


  • Веб-сайты (веб-сервисы)
  • CRM/ERP — системы
  • Десктоп корпоративный JavaFX
  • Биг-дата
  • Распределительные системы (hadoop)
  • Андроид приложения (в основном не игры).
  • Интернет-магазин
  • Автоматическое тестирование

Общий пул вакансий: 790

  • Spring — 175 (потолок 400 — 3 вакансий, 150 — 28 вакансий, 100 — 51 вакансии).
  • Android — 235 (потолок 250 — 9 вакансий, 150 — 31 вакансий, 100 — 53 вакансии).
  • Теcтирование — 133 (потолок 165 — 5 вакансий, 100- 18 вакансий, 80- 28 вакансии).
  • Java EE — 88
  • Scala/Kotlin — 27 (19/8)

C#


  • Веб-сайты (веб-сервисы)
  • CRM/ERP — системы
  • Лучший десктоп под Windows
  • Биг-дата
  • Распределительные системы
  • Приложения андроид/ios (хамарин)
  • Интернет-магазин (на базе nopeCommerce — платный из РФ)
  • Игры на Unity

Общий пул вакансий: 412 вакансий

  • .Net — 313 (потолок 235 — 10 вакансий, 150 — 45 вакансий, 100 — 81 вакансии).
  • Asp.net — 153 (потолок 225 — 3 вакансий, 150 — 24 вакансий, 100 — 44 вакансии).
  • .Net core — 48 (потолок 395 — 2 вакансий, 150 — 5 вакансий, 100 — 10 вакансии).
  • Unity -64 (потолок 225 — 1 вакансий, 150 — 6 вакансий, 100 — 12 вакансии).
  • Microsoft Dynamics — 38 (потолок 195 — 3 вакансий, 150 — 4 вакансий, 100 — 7 вакансии).
  • Xamarin — 13 (потолок 125 — 2)



  • Ruby -112 вакансий
  • Node.js — 171 вакансий
  • С++ — 489 вакансий
  • 1C — 811 вакансий
  • Golang – 49

Из это небольшой сводки становится понятно, что легче всего получить работу на php/java/.net – так как таких специалистов требуется много, и их профиль большего всего связан с разработкой, а не Devops/Data/Testing- как у Python.

А если мы смотрит такой же обзор по Владивостоку, то там требуется 3 специалиста по Java, 64 специалиста по PHP, 2 по C# и 110 по 1C. И эти данные как-то намекают на то, что во Владивостоке нужно учить либо PHP, либо 1C. Иначе вы будете сидеть без работы.

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

Пример девственника


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

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

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

Комментарии (36)


  1. maxzh83
    17.08.2018 09:49
    +4

    Выбор первого языка программирования можно сравнить с первым сексом

    Интересное сравнение. А когда в школе или ВУЗе учат Бейсику или Паскалю, это как-будто привели к проститутке, что ли?


    1. Victor_Grigoryev
      17.08.2018 09:56

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


      1. APXEOLOG
        17.08.2018 11:25
        +2

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


    1. Hivemaster
      17.08.2018 09:57
      +5

      Причём к старой и страшной XD


      1. saag
        17.08.2018 11:36

        Любопытное определение, тогда С — быстрая, Java — многословная, Ruby — красивая, Go — молодая, Perl — ведьма, JavaScript — транжира, Python — в очках и т.д.


        1. wegres
          17.08.2018 12:29

          C++ силиконовая


    1. GeMir
      17.08.2018 09:57

      И чем же тогда является Scratch, с которым знакомят классе в пятом а то и раньше?


      1. rstepanov
        17.08.2018 10:59
        +1

        Очевидно доской с дыркой.


    1. peresada
      17.08.2018 09:57

      8 лет колонии учителю информатики


    1. Babayka_od
      17.08.2018 09:58
      +4

      Это скорее будто батя про секс рассказывает


    1. roscomtheend
      17.08.2018 10:00

      Изнасилование бейсиком. Когда-то встроенный бейсик определял первый язык (или Паскаль, как наиболее доступный, благо турбо-среды упрощали процесс). Были ещё Фокал, Рапира и совсем учебные языки. Вот только язык/феймворк не так важен, ну вот умеет человек говорить (писать код на определённом языке), а выражать мысли (превратить нечто в алгоритм) не умеет.


    1. kinall
      17.08.2018 10:04

      Скорее урок полового воспитания – всё то же самое, но на словах, по учебнику и под диктовку.


      1. ACherabaev
        17.08.2018 10:46

        Урок полового воспитания в версии батюшки, который вел православную культуру >_<


    1. Eldhenn
      17.08.2018 10:05
      +1

      Когда я был в первом классе, ко мне подошел старшеклассник и предложил писать с ним программу на Бейсике. Я стал отказываться, но он меня заставил. С тех пор я пишу программы только на Бейсике. Иногда, когда родители уходят, мы собираемся группой по 6-8 ребят и пишем программы на Бейсике вместе.
      Год назад я познакомился с девушкой, и она предложила мне писать программу на Паскале. У меня ничего не вышло: меня стошнило и потом долго болела голова.
      Зовут меня Валерий Павлович, в сентябре мне исполнится 47 лет. Моя жизнь сломана.


    1. f66
      17.08.2018 10:11
      +1

      Часто в ВУЗах учат С/С++, тут уже сравнение с сексом не годится. Вроде и полезно, язык не одноразовый, а вроде и широко прививается массе студентов.


    1. A__I
      17.08.2018 10:12

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


      1. maxzh83
        17.08.2018 10:18
        +1

        Да, не плох, учит порядку и дисциплине (особенно бесило вынесение объявлений переменных в var, но потом понял что это было не зря). Да и Бейсик тоже ничего для начала. Я только про необычную метафору.


        1. domix32
          17.08.2018 12:51

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


  1. LuridSNK
    17.08.2018 09:58
    +1

    Вы бы информацию, что-ли, в удобочитаемый вид привели. В таблички, например.
    А то вырвиглазно как-то…


  1. claygod
    17.08.2018 10:02

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


    1. TheDeadOne
      17.08.2018 10:03

      Статья про новичков. Их, обычно, не берут на удалёнку.


  1. realSTAG
    17.08.2018 10:04

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


    1. nikweter
      17.08.2018 10:14

      Ну не скажите. В бытность мою студиозусом, php в вузе практически и не учили. Где делфи, где С++, где Java — зависело от специальности и предмета. Тем не менее, бОльшая часть моих сокурсников программирует сейчас как раз на php.


  1. c_kotik
    17.08.2018 10:06

    И эти данные как-то намекают на то, что во Владивостоке нужно учить либо PHP, либо 1C. Иначе вы будете сидеть без работы.

    А может стоит просто хорошо разобраться в теме и потом работать по удалёнке или вообще, прости господи, переехать! Специалисты разные важны, специалисты разные важны…


    1. intet
      17.08.2018 10:16

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


      1. c_kotik
        17.08.2018 10:44

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


  1. saag
    17.08.2018 10:45

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

    А если в том месте, где я нахожусь нет разработки вообще или если есть, то мизерном количестве?


  1. Babayka_od
    17.08.2018 10:45

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


  1. maxxannik
    17.08.2018 10:47
    +1

    Поржал. Подача огонь! Смысл ок.
    Только не ясно кому статья то?
    Те кто с головой дружит — им это не надо знать. Они и так учат язык по ходу боя — надо 1С будет 1С, надо ПХП будет ПХП, надо Си++ — да пожалуйста. И никогда не задумываются о первом языке. Для них статья бесполезна.
    Те кто занимаются бесполезным дрочевом вместо разработки — они просто сейчас будут дрочить тебя за это все :) Смысл не уловят. Для них статья тоже бесполезна.
    Остается 1% аудитории которые это читают просто ради поржать )


    1. Babayka_od
      17.08.2018 10:55

      Ну не скажи. Я учил джаву месяцев 8 и понимал ее на уровне зеленого джуна (лично мне так казалось). Решил уже идти смотреть вакансии, а в моем городе нужны только крепкие джуны, мидлы, сеньоры. После безрезультатных попыток найти работу пришлось выучить фронт и идти фрилансить, а потом и работу предложили. А если бы кто-то с самого начала нашептал на ушко про вакансии, то сколько можно было бы сэкономить время…


    1. Easterncheese
      17.08.2018 12:42

      Не согласен. Ситуации бывают разные.
      Я сейчас потихоньку изучаю Джаву не потому, что у меня в этом есть надобность, а чтобы понять, хочу и могу ли я программировать (в детстве учил VB и Delphi, но это было давно и сейчас это равносильно тому, что не учил вообще). При этом, с детства осталось мнение, что я могу стать крутым программистом и изменить мир, что я и хочу проверить, будучи уже достаточно взрослым. Моя работа крайне опосредованно связана с софтом, поэтому нет вот этих «по ходу боя» и не предвидится.
      Мне информация о том, кто и что делает на каких языках — весьма полезна. Единственное, хотелось бы узнать, на чем пишутся всякие драйвера для игровых мышек/клавиатур — может кто-нибудь подсказать?

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


  1. muhaa
    17.08.2018 10:58
    +1

    1. Если бы вопрос как освоить программирование мне задали 20 лет назад, я бы сказал — ставь Delphi и вперед. Сегодня место Delphi однозначно занимает .Net и C#. Это самая демократичная, полная, упорядоченная, комфортная экосистема, созданная хорошими людьми и для людей. Единственная проблема — изучая эту экосистему и язык легко стать хорошим программистом, но сложно хорошим веб-программистом. Наигравшись вволю с C# .Net можно переходить к более скучным java на Android, JavaScript, задачам фронтэнда и куда кривая поиска работы вынесет.
    2. Выбирать первый язык основываясь на пуле вакансий и заплатах — это в корне неверно. Никто не возьмет вас на работу за знание того или иного языка. Это как надеться получить работу математика научившись складывать в столбик. Вас возьмут на работу за то, что вы можете создавать работающие программы, достаточно подготовлены чтобы иметь дело с любыми технологиями разработки и (в последнюю очередь) имеете наибольшие навыки работы именно с тем языком программирования, который сейчас нужен этой компании.


  1. VBKesha
    17.08.2018 11:03

    Эххх как сейчас всё сложно то стало. Вот я когда то, в библиотеке взял какую то детскую художественную книжку про компутеры. В конце было пару программ на бэйсике, После долгих мучений мы с другой таки смогли одну из них набрать на ZX Spectrum48(кто знает как там что то набирать тот поймёт) и она заработала, это было чудо, это была магия тут можно делать что круче чем LOAD "" вот и весь выбор первого языка. А сейчас… срамота…


  1. zodchiy
    17.08.2018 11:25
    +1

    Надо учиться разработке, дизайну реализации конкретных задач, а не языкам. Язык это инструмент, который подбирается под конкретные задачи и платформы.


  1. immaculate
    17.08.2018 12:33

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


    В этом году два раза пришлось столкнуться с PHP проектами по работе. Это просто тот же зубодробительный кошмар, от которого я убежал 15 лет назад.


    Поскольку в этом big ball of mud невозможно было исправить ни единой ошибки, так как они обладали надежностью карточного домика и понятностью языка австралийских аборигенов, после бесплодных попыток починить ошибки в этих ошибках природы, было принято решение переписать оба проекта.


    Теперь я убежден на 100%, что либо PHP привлекает разработчиков определенного рода (которые не могут не писать спагетти-код), либо просто калечит мозг.


    Простите, накипело. Как вспомню адский ад этого кода, с неинициализированными переменными, с кусками HTML шириной в 200-500 колонок и длиной в 100-1000 строк, выводимых при помощи echo...


    Ни разу не видел на PHP хорошего кода… Ни разу.


  1. Easterncheese
    17.08.2018 12:48

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