Практические уроки по программированию
78,41
рейтинг
25 февраля 2015 в 11:37

Разработка → Почему научиться программировать так чертовски тяжело? перевод

Привет, Хабр!

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

  • С чего начать обучение программированию?
  • У вас есть курс по Java для новичков, но я слышал, что нужно изучать Python, правда ли это?
  • На других сайтах все просто и понятно, а у вас какие-то компиляции и тесты!
  • Непонятно зачем нужен этот ваш курс по алгоритмам, в реальной жизни все алгоритмы уже реализованы в стандартных библиотеках

Но сложнее всего объяснить новичку, грубо говоря, во что он ввязывается. Благодаря очень простым, игровым образовательным проектам многие считают, что программирование это очень легко, а наши виртуальные машины, где нужно запускать тесты и компилировать код – это надуманная сложность. Давно хотелось найти такой материал, который бы подготовил новичка к длинному и сложному пути к карьере программиста. И недавно наши коллеги из Viking Code School такой материал написали! А мы его перевели для вас.




Квинси Ларсон был просто “офисным парнем в костюме”. Он решил научиться программировать. Начал спрашивать людей вокруг. Изучил немного Руби, потом быстренько посмотрел на другие языки вроде Scala, Clojure и Go. Он изучил Emacs, а потом Vim, а потом раскладку Dvorak. Он втыкал в Линукс, копался с Лиспом и кодил на Питоне, и жил при этом в командной строке больше полутора лет.

Его швыряло туда-сюда как листочек в торнадо. Каждый совет, который он слышал, тащил его то в одну, то в другую сторону, до тех пор пока он не прошел “каждый онлайн-курс по программированию во вселенной”. В конце концов, не смотря на то, что он получил работу разработчика ПО, Квинси:

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

Ох. Звучит знакомо?

Фаза 1: Медовый месяц


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

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

С другой стороны, движение «Learn to Code” проделало фантастическую работу по удалению барьеров, и показало что кодить на самом деле довольно просто. Инструменты вроде Codecademy, Treehouse и Code School так мягко и за ручку подводят тебя к коду, что можно быть уверенным – я не просто смогу научиться программировать, я смогу стать полноценным разработчиком!

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

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



Проблема в том, что вы находитесь в фазе “медового месяца”. Может казаться, что конец близок, но в реальности вы прошли лишь крохотный отрезок пути. Это только начало…

Рисуем маршрут


Перед тем как перейти к Фазе 2, давайте взглянем взглянем на весь путь.

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

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



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

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

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

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

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

4. Подъем благоговения это та часть, где вы наконец находите путь через пустыню и начинаете понимать как создавать приложения. Ваш код все еще дырявый и хрупкий как карточный домик. Вера в себя растет потому что ваши сайты вроде как работают, вы изучили несколько важных паттернов, ваши друзья считают ваши интерфейсы крутыми, но вам страшно заглянуть под капот, и вы не знаете как делать production-ready код. Как отсюда построить мост к состоянию “готов к реальной работе”?

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

Давайте вернемся к фазе 2…

Фаза 2: Скала смятения


Итак, вы находитесь в фазе 1 – „Медовый месяц“. Вы заполняете пробелы и завершаете задачи, связанные с кодом в то время как ваша уверенность и возможности растут. Это не так уж плохо… К чему суета? Вы поднялись на «Гору иррационального изобилия»…

Будьте осторожны! Вы собираетесь переступить пропасть, которая ломает многих сильных учеников, вытесняя их в лагерь под названием „кодинг — это слишком тяжело“. Точный момент этого скачка происходит тогда, когда вы садитесь за клавиатуру, открываете свой текстовый редактор и пытаетесь в первый раз создать проект с нуля без каких-либо встроенных в браузер редакторов, костылей кода или полезных советов.

Блин…

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



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



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

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

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

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

Два ключевых фактора


Так в чем же на самом деле разница между первой и второй фазой? Почему фаза 2 («Скала смятения») так ужасна по сравнению с фазой 1 («Медовый месяц»)? Понимание этого поможет вам понять, что вашей вины абсолютно нет в том что, ваше путешествие выглядит так, как мы только что описали.

Есть два основных момента во время прохождения каждой фазы: плотность ресурсов и объем знаний. Давайте посмотрим, что это такое, прежде чем изучать, как они выведут вас к фазе 3.

Фактор 1: плотность ресурсов

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

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



К сожалению, на более поздних этапах плотность ресурсов быстро падает. Любой, кто прошёл от стадии новичка до среднего уровня, может подтвердить, что существует БОЛЬШАЯ разница между количеством имеющихся ресурсов в самом начале и тогда, когда вы впервые ищете помощь самостоятельно, без посторонней поддержки.

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

Вот как выглядит плотность ресурсов в каждой фазе (большая концентрация линий указывает на большую плотность ресурсов):



Фактор 2: объем знаний

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



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

Как только вы отходите от основ, вы замечаете быстрое расширение базы знаний, так как начинаете сталкиваться с более сложными вопросами, такими как понимание разновидностей ошибок, или, когда именно использовать код, который вы знаете и как вообще его использовать. А это две разные вещи, потому что нет „правильного“ ответа на точный вопрос… Пока всё очень размыто.

По мере продвижения к третьему этапу объем знаний станет расти. Теперь вы должны понимать, какие инструменты использовать, какие языки изучать, как писать модулярный код, знать основы CS и объектно-ориентированного программирования, обладать грамотным стилем кода и уметь искать ответы на вопросы (хотя бы в нескольких источниках). Каждый заход в Google или на сайт Hacker News погружает вас в огромное множество кроличьих нор и ошеломляет вас такими вещами, которых вы не знаете, но чувствуете, что должны их знать.

Вы не знаете, чего именно вы не знаете.

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

Фаза 3: Пустыня отчаяния


С пониманием ключевых факторов, можно увидеть, что «Скала смятения» является критической точкой. Мучения, вызванные совокупностью быстро растущего объема знаний и упадка плотности ресурсов привели к фазе, которую я называю „Пустыня отчаяния“.

В сущности, это пустыня, где вы знаете, что где-то есть конец, но не знаете, как до него добраться:



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

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

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

Существует НАМНОГО больше вещей, которые предстоит узнать, чем вы, возможно, ожидали. Даже если вы в состоянии заставить работать некоторые приложения, то очень трудно не чувствовать себя слабым звеном в огромной цепочке становления настоящим профессионалом. Трудно измерить ваш прогресс. Как вы узнаете, что вам изучать, если изучаете только необходимые вещи?

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

Безусловно, до этого момента было трудно, но, возможно, вся эта история с веб-программированием и не такая сложная, в конце концов… Everything's coming up Milhouse!



Фаза 4: Подъем благоговения


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

Это и есть «Подъем благоговения»:



Снаружи всё может выглядеть хорошо, но в глубине души вы знаете, что вы ещё не достигли цели.

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

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

Вы чувствуете, что уже должны стать разработчиком, но дистанция между кодом, который вы пишете и «профессиональной» рабочей средой не сокращается…

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

«Подъем благоговения» всегда занимает больше времени, чем вы ожидаете, и кажется бесконечным, потому что вы так близко… Но вы всё же достигнете его. Если вы настойчиво идёте в правильном направлении (тема следующего поста), то сможете убедить кого-то платить вам и спокойно продолжать учиться дальше. Работа ваша.



На что всё это похоже


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



Одно дело — знать путь, а другое дело — идти по нему. Давайте поможем вам начать.

Как дойти до конца живым


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

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



I: Как Выжить в «Медовом месяце»

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

  1. Начните пробовать разные ресурсы, чтобы найти те, которые лучше вам помогают в обучении, ищите наиболее интересные для вас проекты. Это могут быть быстрые решения от KhanAcademy, упражнения в браузере от Codecademy, книга Learn to Program Криса Пайна или школа кода Try Ruby. В начале будьте открытыми для всего и игнорируйте наставления в стиле «вы должны учить только это». На данном этапе весь код одинаковый.
  2. Далее выберите один подходящий для вас ресурс и старайтесь придерживаться только его. Пройдите курс от начала до конца, чтобы получить все основные знания, которые вам помогут написать базовые скрипты и приложения. А в дальнейшем приготовьтесь начать создавать свои собственные проекты.


II: Выживание на «Скале смятения»

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

Вот три совета, которые помогут самостоятельно перейти к компилированию:

  1. Работайте с кем-то в паре, даже если он такой же новичок как и вы. Вы будете удивлены, насколько легче отладить кажущуюся неисправимой ошибку, если подключить ещё две пары глаз.
  2. Читайте больше чужого кода, чтобы познакомиться с хорошими паттернами. Постарайтесь понять, почему автор сделал именно так, а не иначе. Вы ведь не сможете стать писателем, не читая чужих книг, не правда ли? Мы подробно рассмотрим это в следующем посте, а сейчас, заострите своё внимание на мелких проектах и задачах, для которых другие люди уже написали решения.
  3. Начните с малого и программируйте постоянно. Вы должны думать о будущих крупных и интересных проектах, но для этого ваша отладка должна стать гладкой, а поиск ресурсов не должен составлять труда. Опыт вы ничем не замените.


III: Выживание в «Пустыне отчаяния»

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

Итак, вот ключи к выходу из «Пустыни отчаяния»:

  1. Поставьте перед собой определенную цель, которую вы хотите достичь, потому что в противном случае вы закончите тем, что устанете гоняться за своим хвостом, изучая различные виды интересных, но по большому счёту ненужных вещей. Но если у вас есть свободное время, то можете опустить этот совет…
  2. Найдите верный путь, который ведет прямо к поставленной цели и убедитесь, что он действительно направляет вас к ней. Вам нужно копать глубже и не искать ответ среди рекламных лозунгов, суперобложек и улыбающиеся лиц на веб-сайтах различных курсов на вопрос „поможет ли мне это достичь поставленной цели или нет?“
  3. Сконцентрируйте всё своё внимание и не отвлекайтесь, потому что, если вы относитесь к тем людям, которым интересно изучать код, вы также заинтересуетесь изучением других интересных вещей. В те моменты, когда программирование даётся тяжело, вы должны особенно сильно продвигаться вперед, а не браться осваивать другие модные занятия.


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

IV: Выживание на «Высоком подъеме»

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

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


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

Итак… Возможно ли это вообще?


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

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

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

Удачи!
Автор: @freetonik Erik Trautman
Hexlet
рейтинг 78,41
Практические уроки по программированию
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

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

  • +3
    image

    Вы знаете, тут по вертикальной оси написано «Confidence», то есть вера, уверенность. А я бы эту ось скорее назвал «Despair», то есть отчаяние. А то, что названо «desert of despair» назвал бы «Coast os relax», то есть «Расслабляющее побережье».

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

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

    И под конец появляется сложная специфика, рутина, усталость.
    • +16
      Как-то так:
      • +16
        Если бы у графика был бы такой хвост, все программисты рано или поздно заканчивали бы жизнь самоубийством :)
        • +4
          Если допустить второй вариант — уход в другие области — то выглядит не так уж и неправдаподобно.
        • +30
          После определённого порога, всё становится круто. :)

          • 0
            А при чём тут dwarf fortress? Там в финале всё равно the fun.
            • 0
              Я верю, что EVE learning curve раньше появилась, чем график для Dwarf Fortress.
              • 0
                А вот это вопрос крайне интересный, и требует исследований. В каком году картинка появилась? Я её увидел довольно поздно (в контексте df'а) — год 10ый, кажись.
                • 0
                  Оригинал (во всяком случае, у меня сложилось впечатление, что это оригинал) EVE learning curve опубликован на фликре в марте 2008-го: ссылка.
                  • 0
                    Я видел более полный кат (попробую найти), мне кажется, что вот эта вот конкретная картинка — уже сильно «адаптированная» копия.

                    Но — надо искать и смотреть.
                  • 0
                    Видел оригинал, по моему на лурке, еще в 2007
      • 0
        и во время успеха отчаяние будет возрастать
        • +1
          йода-фраза ))
      • +2
        Дао инженера. Оглядываясь назад могу подтвердить, что действительно были похожие моменты в биографии, начиная с окончания университета (когда начал сталкиваться с реальными задачами в реальном мире).
      • 0
        А мне кажется, что на графике не указан нулевой уровень. Если сделать так, то действительно видно пустыню отчаяния.
  • +6
    По моему вся проблема в том, что программирование стали популяризировать и оно из профессии (образование профильное+опыт) превратилось в прикладную вещь (ну вроде, научитесь делать столы и табуретки). На этом активно наживаются сотни сайтов с курсами и тысячи тренеров, которые дают ощущение, что выучив рельсы ты стаешь программистом и начинаешь зарабатывать сотни нефти в первый же день. Люди каждый день слышат красивые истории о огромных зарплатах программистов (и понятия не имеют о проблемах профессии), лезут в интернет и видят сайты которые «гарантируют» сделать из них программиста за 3 тысячи долларов и 2 месяца.

    С одной стороны мне как программисту вроде бы и жаловаться не нужно. Рынок наполняется тысячами «rails-программистов»(ничего не имею против рельс, просто все эти курсы обычно используют руби и рельсы) и на их фоне я могу запрашивать больше денег за качественный труд. Но с другой стороны как-то жалко этих людей, которые покупаются на красивые истории про «я стал программистом и зарабатываю 500 долларов в день. Вася П. из села Нижние Вершины».

    ИМХО, лучше повышать общую компьютерную грамотность населения, чем делать из всех программистов. Будет больше толку.
    • +1
      Верно. Добавил бы только что проблема в том что понятие программирование в глазах обывателя размыто. Что говорить если выпускники хороших технических ВУЗов (но не профильных ВТ специальностей) не могут сказать чем предмет программирование отличался от предмета информатика…
      А зачастую во многих ВУЗах и преподаватели не могут это понять…
      • +3
        rznELVIS Все потому, что в универах не учат разрабатывать, программировать и оптимизировать, даже на профильных специальностях (а вот написать helloworld пожалуйста). Нас вот на специальности УТС (включает в себя изучение современной теории и техники автоматического управления, новейшего программного обеспечения для управления мехатронными системами, робототехническими комплексами и гибкими автоматизированными производствами) учат программировать в VBA и работать с MS Access. В большинстве своем программисты — это самоучки, которые заинтересовались технологией.
        • 0
          ну про самоучек это скорей преувеличение, но что если будешь просто ходить на пары и ничего не делать сам, то цена тебе будет 500р в день это точно.
          • 0
            rznELVIS, по-моему, все-таки про самоучек правда… Если речь идет про знания в программировании как язык + технологии, то в универе мне и моим однокурсникам ничего толком не говорили. Что касается знаний, которые тебе по-любому нужны если ты собираешься заниматься чем-то реально серьезным(непример topic-modeling), то да, без университетского курса математики будет сложно.
      • +1
        у меня есть знакомые, которые закончили вуз по программисткой специальности. 2 из них работают эникейщиками, один пошел в ОМОН. Что тут скажешь…
    • +2
      я пока что определил для себя состоявшегося программиста, как человека, способного осилить SICP (не обязательно уже осилившего). И мне кажется довольно точно.
      • +1
        Я думаю вы чертовски правы). У меня ровно такой же видение.
  • +1
    Сейчас нахожусь на стадии «Подъем благоговения». Все действительно так, как написано в этой статье))
  • +1
    Думаю как и в любом деле, следует соизмерять цели и средства. Когда учишься, чтобы стать инженером(программистом), надо быть готовым к тому, что ты будешь заниматься созданием/поддержкой систем всю оставшуюся жизнь. Если не готов к этому, а от жизни ждёшь чего-то другого, то и идти следует в нужном направлении, а не в популярном
    • +3
      Mistx Вот правильно! А то спрашиваешь у пекрвокурсников почему учиться на программиста пошли, а они тебе говорят «мама заставила» или «все пошли и я пошел»
      • 0
        или «я просто хотел писать игры», думая, что процесс создания игры состоит из придумывания правил, рисования фигурок и нажатия кнопки «сделать круто».
        • +1
          «я просто хотел писать игры»

          У меня это и было главной мотивацией. И это хорошо ИМХО. Правда в 9-10 классе и к 11 вроде как начал ваять первые движки на OpenGL (С++). В универе увы это всё убилось. :(

          Правда недавно моя мечта осуществилась, причём с любимой игрой детства (Вангеры).
          • 0
            Не спорю, в твоем случае все круто и правильно, ибо ты представлял, как все это происходит более-менее и начал сам копать еще до ВУЗа, потому и добился таки успеха. А я говорил про тех, кто нифига не понимает в этом, сам ничего в этом направлении не изучает, а думает, что «вот я 5 лет похожу на пары, стану крутым гейм-девелопером, пойду работать в Blizzard/Valve/Bioware/GSC и иже с ними, список можно продолжать, буду пить кофе, играть в игры и закалачивать миллионы», вот таких прям много и они же в первые два курса массово сливаются.
            • 0
              закалачивать миллионы

              Это особенно смешно. :)

              Ну в целом я согласен. Только всё же процентов 20 это дело перебарывают и доходят до цели. Если те же 5 лет кроме пар ещё и самим что то делать вместо пивасика с одногруппниками то можно стать хорошим программистом. Кроме того в ВУЗе по профилю обычно преподают дискретку и весь базис для компьютерной графики. Лично мне было трудно (не очень понятно) в школе осваивать матрицы и всякие махинации с векторами и тем более кватернионами.
        • 0
          или «я просто хотел писать игры»

          А я именно так и стал прогером) Хотя в институт пошёл на Банковское ибо «мама заставила»
          • 0
            Тебя можно только поздравить, ибо ты нашел свое призвание.
      • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Черт! Я в пустыне!
  • 0
    График, кстати, один в один Эффект Данинга-Крюгера.
  • +3
    Сначала думал что дело говорят, а потом понял что это бред.
    Пока человек доходит до конца графика, технологии меняются и он опять в «пустыне». Кроме того почему только веб?

    У меня совсем иначе всё прошло.

    ИМХО начиная с работы начинается самая жесть, после которой многих работников в лучшем случае можно назвать кодерами. Кроме того «Scope of knowledge» 100% не такой, когда Job ready объём увеличивается просто в разы (прикладные знания ещё появляются).
  • +7
    Лично для меня программирование — это искусство. Представьте — вы своими руками создаете новый мир и вы решаете, по каким правилам он функционирует. Потенциально каждый из нас может реализовать любую задачу, но не каждый из людей может отразить ее в программном коде. Создаваемый программистом мир живет в своей — новой вселенной. Если вы что-то сделали неверно в своей программе, то вы можете это исправить. Скульпторам в этом плане сложнее — проблематично вернуть кусок мрамора, который уже отколот. У программиста область для реализации творчества (на мой взгляд) гораздо шире, чем у кого-либо из людей творческих профессий. Если абстракционист нарисовал свою картину, то для того, чтобы получить feedback он выставляет ее на всеобщее обозрение, а программист реализует абстракции, невидимые конечному пользователю и это формирует тонкое чувство стройности системы, когда ты ощущаешь, что проектные решения удачны.
    Поэтому я считаю, что программисты рождаются и становятся не в тех, кто руководствуется «рублем» или «престижностью», а в тех, кто чувствует тягу к творчеству в его особой форме — программированию.
    P.S. Возможно сумбурно изложено, но надеюсь кому-нибудь будет созвучна эта мысль.
    • 0
      Абсолютно согласен.
  • +3
    Я, вероятно, всё ещё на первой стадии. Никакого «смятения» или «отчаяния» пока не было.
    • +3
      Если что, графики в комментариях куда более реалистичны
      • 0
        Непонятно, откуда у них первый подъём. После того, как заработал первый helloworld, отчаяние должно резко убывать — лишь бы хватало выполнимых идей.
        • 0
          Наблюдаю за многими новичками — после Хелло-Ворлда десяток уроков отчаяния от того, что кавычку не поставил или файл не так назвал, 5 часов искал в чём проблема. Какая-то глупость, вроде всё как в книжке, а не работает, начинаешь проклинать всё и вся. Наступает отчаяние и так пока не осилишь основы дебага.
  • 0
    Рискну предположить, что это статья не про программирование, а про любую профессиональную деятельность.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка