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

Среда для исследования

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

image


Изучить программирование непросто

Программирование включает набор сложнейших дисциплин, для освоения которых необходим обширный объем специфических знаний. Для «айтишника» в этом нет ничего нового но для неофитов это удивительно и неприятно.
Оказывается, что несмотря на энтузиазм и огромное желание зарабатывать в будущем хорошие деньги, для того, чтобы присвоить одну переменную другой, освоить пару операторов и выполнить с ними какие-то действия, многим требуется вовсе не пара часов, а несколько месяцев. Причем, они уходят только на понимание этих самых, на первый взгляд, довольно примитивных действий.
Почему это происходит? Думаю потому, что людям не имевшим прежде дела с логикой, математикой и программированием совсем непросто перестроить собственное мышление. Обычно ведь человек получает опыт, изучая окружающую его внешнюю среду и отталкиваясь от уже имеющихся знаний. Но в этом опыте нет места условиям, циклам, двоичному счислению и многому другому, что требуется для программирования. В быту и обычной жизни всё это никак не используется. Именно поэтому часть «начинающих программистов», сталкиваясь с совершенно непонятными вещами, бросают учёбу уже в первые дни или даже часы.

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

Конечно, есть талантливые люди, которым новые знания даются довольно быстро. Но, как показали мои наблюдения, это — редчайший случай. На моих глазах через клуб прошло множество потенциальных «специалистов». Никто из них до финиша так и не добрался. До подавляющего большинства новоявленных студентов, после месяца-двух интенсивной учебы доходило, что программирование — совершенно не их предмет. А наиболее способные поняли это гораздо быстрее.
Из примерно двух сотен людей прошедших через клуб, до сих пор переквалифицироватьcя в программисты удалось лишь двум талантливым и упорным технарям, которых прижала жизнь. Это всего 1 процент, а не 9, как гласило прочитанное когда-то мной исследование.

Так что же клуб?

Клуб продолжает работать, он оказался великолепным местом для знакомства и общения с людьми, которые хотели бы узнать что-то новое без слишком уж большого напряжения. Приходил, например, немолодой ученый, уже на пенсии, решивший взяться за освоение языков программирования. Были мамы с детьми, супружеские пары — молодые и не очень, лаборанты и преподаватели вузов, действующие офицеры спецслужб, инженеры заводов и даже спортсмены. Кого только не было! Но большинству, повторюсь, программирование давалось трудно или не давалось, вообще. Впрочем, никто и не утруждал себя чрезмерно. Домашнее задание, например, игнорировалось в принципе. Через некоторое время большинство людей занятия бросали.

Почему так получается?

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

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


  1. madfly
    30.06.2015 18:36
    +4

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


  1. kibitzer
    30.06.2015 18:59
    +1

    Основная причина — мотивация.


    1. WebSpider
      30.06.2015 22:08

      …а точнее, её отсутствие


  1. d7p4x
    30.06.2015 22:23
    +4

    Основная причина в том, что клуб бесплатен.


  1. EndUser
    01.07.2015 00:38
    +3

    «Почему так трудно стать программистом?»
    Я верно понял автора, что врачом, пилотом, связистом стать проще?


    1. AlexTest
      01.07.2015 01:59
      -3

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


      1. EndUser
        01.07.2015 02:14
        +3

        Они выстраивают правильные и безопасные взаимосвязи.


        1. AlexTest
          01.07.2015 13:33

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


          1. kohus
            01.07.2015 14:34

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


    1. AlexZaharow
      01.07.2015 14:20

      Я верно понял автора, что врачом, пилотом, связистом стать проще?

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


  1. Sergunka
    01.07.2015 06:19

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

    На мой взгляд очень огромное количество людей пробует себя в качестве программистов. Я случайно выделил эту закономерность когда начал вести блог по программированию и выяснилось, что наиболее востребованные заметки связаны с классическими решениями известных задач. Я как-то от балды написал решение задачи Дейкстры «Спящий парикмахер» задач просто стала хитом англоязычного интернета она попала топ гугла и когда в один из дней почитать решение пришло аж 22 человека из… Монголии я просто чуть не прослезился за братьев монголов.

    С нашего курса более 100 человек после пятидесяти знаю прграммируют четыре человека, включая меня… не густо, но слава богу и так.


  1. TheDeadOne
    01.07.2015 06:31
    +3

    Программист != математик


    1. dunmaksim
      01.07.2015 09:06

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


    1. Lau
      01.07.2015 10:40

      А инженер в области программирования может состояться без математики? :-)


      1. AlexZaharow
        02.07.2015 08:09

        Вполне. Главное не спасовать,, когда математика потребуется :)


        1. Lau
          02.07.2015 14:53

          Хм, в теории вы правы, но лишь от части
          — процент не спасовавших — очень мал, эта статья тому подтверждение
          — люди не обладающие знаниями просто не могут решить задачу где нужна математика, проблема в том что ни кто им не скажет — сначала выучи вот эти термины и знаки, потом матанализ вот от сюда до сюда, потом… а они предоставлены сами себе, в итоге за много лет работы в области я видел лишь одного человека который смог проковырять этот слой и составить для себя «картину мира математики» и подобрать адекватное решение.
          В лучшем случае они обладают отрывочными и разрозненными сведениями которые не сведены в общую картину. Хотя очень часто даже те отрывочные сведения наполнены слоями дезинформации которая воспринимается как истина.
          Из моей недавней практики — один менеджер с 20 летним опытом разработки недавно убеждал коллег, что нужно использовать нейронные сети для обнаружения сбоев в боевом процессе и восстановлении на лету. Когда задал вопрос — «Что в вашем понимании нейронные сети ?» получил массу незабываемого опыта.


          1. AlexZaharow
            02.07.2015 16:24

            По своему опыту скажу, что даже обладая знаниями не всегда можно заставить программу делать то, что нужно. Если требуется решить задачу, выходящую за пределы «обычных» и хорошо изъезженных вопросов аля пройти собеседование (например, сортировка) очень трудно разработать сложный алгоритм, потому что результат работы сложно проверить, т.к. любому результату нельзя доверять. Если тестовые данные не совпали с результатом, то непонятно — это результат правильный, а мои тестовые данные неверны или результат неверный, а тестовые данные верны? И даже если тестовые данные совпадают с результатом, то не ошибся ли я везде — и в тестах и в алгоритме? Простите, что отвожу беседу немного в сторону, но что по этому поводу вообще можно сказать? (Как-то даже не знаю, может ли математика сказать что-то вообще? как-то всё запутано...) :)


            1. Lau
              02.07.2015 17:42

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


      1. TheDeadOne
        17.07.2015 10:18

        Что вы имеете в виду под «состояться»? Можно со знанием математики на уровне 5-го класса средней школы быть востребованным и высокооплачиваемым профессионалом в области автоматизации бизнеса, например. Это считается за состоятельность?


  1. r00tGER
    01.07.2015 08:41
    +5

    … и огромное желание зарабатывать в будущем хорошие деньги ...

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

    Зато, в универе на первых двух курсах отсеялись до 90% будуших «ай-ти-шников» (отсеялись, именно как «ай-ти-шники», диплом то получили). А потому, что шли на модную профессию. Или, были такие сокурсники «на экономиста/юриста/менеджмент было дорого поступать, поэтому мы пошли на программистов». Многих просто «привели родители».


  1. schetchik
    01.07.2015 10:10

    Заранее извиняюсь, если обижу, но!
    Возможно, ваша программа обучения просто построена не идеально, и вам нужно ее скорректировать, тогда и результаты будут другие?
    Хотя это не отменяет того, что людям, не привыкшим к работе с абстракциями тяжело перестроиться и начать понимать, для чего все вот эти придуманные вещи нужны.


  1. ServPonomarev
    01.07.2015 10:17

    Конечно, надо делать поправку на мотивацию и бесплатность курсов. Но если такая низкая результативность — возможно, сама методика обучения не фонтан? Любой современный язык — это дикое наслоение абстракций, через которое трудно продраться до написания хоть какого-то кода. Вспомним старое доброе процедурное программирование, бейсик, паскаль, бесплюсовый С. Освоить их, что-бы написать программку в пару сотен строк кода — не так уж сложно. А освоив — можно говорить о классах, шаблонах и инкапсуляциях. А не наоборот.


  1. AlexZaharow
    01.07.2015 11:24
    +1

    В быту и обычной жизни всё это никак не используется.

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

    Я бы добавил, что программирование оно не как физкультура. Смог поднять 10 кг яблок, поэтому подниму и 10 кг железа и 10 кг резины и пр. А вот научился программированию на JavaScript, а вот Java придётся осваивать заново. Быстрее, конечно, чем JavaScript, но всё равно не быстро. Третий язык уже быстрее, 10-м языком можно уже за день начинать писать полноценную программу. Но пока до абитуриентов дойдёт, что мыслительный процесс, которому они учатся полгода или год на самом деле можно уложить в день пройдёт время, иногда и не один год.


  1. dyadyaSerezha
    01.07.2015 14:49

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

    2. «В быту и обычной жизни всё это никак не используется.» — алгоритм «чистить картошку»:

    while (не кончилась картошка) 
    { 
        возьми следующую картошину; 
        почисти ее;
        помой ее;
        положи в кастрюлю; 
    }
    
    

    Алгоритм «варить картошку», с таймером:

    CreateTimer(каждые 5 минут);
    ....
    OnTimer()
    {
        проткни вилкой картошку;
        if (протыкается легко) { DeleteTimer; Выключить огонь; exit("кушать подано, садитесь жрать пожалуйста"); }
    }
    


    1. maxru
      01.07.2015 14:54
      +1

      У вас переполнение кастрюли и очистки заняли весь стол.


      1. dyadyaSerezha
        01.07.2015 15:41

        Ответ всем: алгоритмы учебно-показательные и не претендуют на: полноту, многопоточную безопасность, кроссплатформенность, оптимальное использование жены, видеокарты или нескольких ядер, а также сложность O(log(N)).


    1. Myosotis
      01.07.2015 15:12

      В условие надо добавить "&& в кастрюле есть место"
      image


      1. SKolotienko
        01.07.2015 16:15

        Кастрюля «упадёт» при переполнении. Но придётся ловить «исключение».


  1. maxru
    01.07.2015 14:53

    Профессию «Программист» преподают в техникумах, так что трудно или нет — понятие слегка растяжимое.


  1. bazilxp
    03.07.2015 12:56

    В целом мнение в данной статье, довольно таки реалистичное.

    В практике видел два случая, Доктор стал хорошим программистом, просто решил в 30 сменить род деятельности,
    видел пару примеров люди заканчивали технические специальности где то рядом с программированием. дальше работа не по профессии, и потом приход в Айти=) второй шанс