«Быстро обучаюсь» или «Active (fast) learner» — пишут некоторые программисты в своих резюме. Сложно представить себе такую строчку у врача или юриста. Нет, им, конечно, тоже приходится регулярно учить что-то новое, но этот процесс носит иной характер и регулярность, чем у разработчиков, которым приходится учиться едва ли не ежедневно. Слишком уж скоротечна сфера IT — даже чтобы просто оставаться на месте, приходится ежедневно грести в хорошем темпе. Почему это происходит?
На первый взгляд может показаться, что требования к способности быстро обучаться примерно одинаковы для представителей большинства интеллектуальных профессий. Хороший стоматолог раз в несколько месяцев ездит на международную конференцию, где обсуждаются технологические новинки, иногда проходит курсы повышения квалификации, перенимает опыт у старших коллег, выписывает журнал «Стоматолог» — в общем, развивается.
Юристы-финансисты, ученые и даже слесари-сантехники тоже осваивают новое, если не хотят отстать и выбыть из гонки. Но они в своих резюме не пишут «Высокая скорость обучения», нет. Потому что это не требуется. Им важно лишь знать свою работу и решать вопросы. А вот IT как раз уже не один десяток лет сталкивается с вопросами обучения.
То, что позволило индустрии IT такой крутой рост, в то же время является причиной того, почему многим разработчиком уже недостаточно лишь работать с 9 до 6. Относительная лёгкость создания инструментов в IT (языки, технологии, фреймворки и так далее) позволяет теперь каждому разработчику придумывать свой собственный инструмент. И в этом одно из отличий инженеров от программистов.
Представим себе ситуацию, когда инженеры начинают для удобства работы (или из тщеславия) изобретать диковинные молотки, невиданных форм отвертки и гаечные ключи. Инструменты выкладываются в публичный доступ, их может взять каждый и их упоминают в вакансиях: «Вы умеете управляться с молотовёртом? А с гайкогубцами?»
В физическом мире такое разнообразие невозможно ввиду трудоемкости производства нового инструмента. И даже если толковый мастер придумал новую версию станка или молотка, то его не скачаешь и не попробуешь тут же. И форкнуть будут затруднительно, и pull-request вряд ли пройдет. А если и пройдёт, то все равно будет стоить денег.
В мире софта всё иначе — доступ есть ко всему, почти всё бесплатно. Если мозг потянет, то инструменты можно изготавливать самому, чем и пользуются некоторые программисты, плодя бесчисленное множество новинок и костылей, надстроек и велосипедов. Вот и имеем ситуацию, когда, скажем, выучив JS, нельзя откинуться на спинку кресла, выдохнуть и отметить сие событие глотком чего-нибудь крепкого. Рано расслабляться.
Обязательно начнут появляться всякие Node.js, jQuery, AJAX и масса других приблуд второго порядка. И если не работодатель попросит освоить очередной молотовёрт, то со временем ты сам обнаружишь, что не только все твои коллеги перешли на молотовёрты, но и производители гвоздей теперь наладили выпуск специальных шурупов для этого типа молотовёртов, чем сделали инструмент более популярным.
И шурупы эти так хорошо подходят для некоторых задач, что начинают применяться повсеместно, и у тебя уже нет выбора — либо ты изучаешь новую технологию, либо вместо тебя это сделает кто-то другой. Либо ты разбираешься в нововведениях .NET или Java, знакомишься со Scala и идешь на семинар по Lua, начиная использовать треклятые лямбда-выражения, либо остаешься без работы.
Эффект бабочки
Развитие одной технологии тянет за собой апдейты других технологий. Фичи из одних языков переходят в другие. Доходит до того, что ты уже не можешь не апдейтить свою операционку, браузер или Skype — тебя заставят это сделать. Бесконечные патчи, апдейты и новые релизы — стоит прекратить работу над своим приложением хоть на пару месяцев, как у пользователей появляется чувство тревоги и желание переключиться на другое приложение. Потому что боятся, что если приложение не обновляется, значит за ним никто не ухаживает, и оно скоро умрет.
Армиям разработчиков приходится теперь не только латать уже существующий софт, выпуская всё новые апдейты, но и быть в курсе всех новинок своих коллег — чтоб в случае чего быть готовыми их внедрять у себя.
В реальном мире это напоминало бы ситуацию, когда швейному мастеру приходилось бы время от времени перешивать все свои работы: «Джо, помните вы месяц назад купили у меня костюм-тройку? Теперь мода на другой тип воротников, поэтому приходите — я перешью». Эти же слова он говорил бы всем своим клиентам. Но и это не всё — ему бы ещё приходилось осматриваться на других мастеров и производителей. Что шьют, как кроят, какие материалы используют, почему отказались от перламутровых пуговиц и почему вместо обычных ножниц перешли на фигурные. В это же время другие мастера то и дело ставили бы ему на костюм новые патчи — иначе его станет невозможным носить.
Конечно, есть те, кто не следит за трендами и обучается по минимуму — покуда есть нужда на проекте. Некоторым удается, поработав с 9 до 6, с чистой совестью и выполненным долгом уйти домой — такие люди даже работают в Microsoft. Но стоит человеку покинуть пригретый проект, как он тут же оказывается за бортом. И если ему не хочется, чтоб его унесло в открытое море, ему придется снова изучать новое. А иначе не видать работы.
Сложность разработки софта заключается в том, что он является продуктом постоянного сознательного мышления.
IT — это искусственная, но живая материя, которая живет постольку, поскольку её думают и изучают. В отличие от человеческого организма, в котором жизненно важные процессы происходят на подсознательном уровне, а клетки сами учатся внедрять «новинки» клеток-коллег. Или в отличие от автомобиля, который в первые пару лет вообще не требует ремонта, по сути, «живя» без вмешательств, не считая вливаний топлива и смены масла.
Как мы учимся учиться
Можно сколько угодно говорить, что навык кодить — это самое главное, но это будет лишь часть реальности. Способность обучаться — это не просто прихоть, это жизненная необходимость, без которой ткань информационных технологий начнет отмирать. Поэтому перед тем, как кидаться во все тяжкие, стоит спросить себя — готов ли ты каждый день узнавать новое и забывать старое.
Самое время для контрольного в голову. Если IT зависит от обучения на порядок больше, чем многие другие сферы, логично предположить, что наши специалисты умеют учиться лучше, чем представители других сфер. Но кто же нас учил учиться? Вузы? В таком случае нам остается лишь порадоваться, что у нас были лекции по строению мозга, семинары по секретам дофамина и серотонина, лабораторные по методологиям обучения, и практические по тренировке памяти. Таки да! Экие мы баловни судьбы.
Увы, но в реальности всё обстояло иначе. Любимую многими фразу «В универе нас учат учиться» на самом деле придумали для того, чтобы объяснить, почему после универа ничего не помнишь. Нужно как-то оправдать потраченные четыре-шесть лет, поэтому люди сами лезут на рожон, выдумывая подобного рода глупости. Хотя, на самом деле, универы никогда и не брали на себя функцию «научить учиться». Научить студента думать? — Может быть. Заставить учиться? — возможно. Дать знания по конкретным дисциплинам? — Почему бы и нет. Но не научить учиться. По факту кидают в воду как котят и смотрят — выплывешь — молодец, не выплывешь — не дано.
Нет, если в универе и правда учат учиться, то я бы не пожалел пиалы чаю тому, кто показал бы мне вкладыш к диплому, в котором была бы хоть одна строчка вроде «Основы обучения — 460 часов» или «Теоретическая механика работы мозга — 220 часов». В противном случае попахивает двойными стандартами и самообманом.
Вот и имеем среди выживших разработчиков в основном самоучек, которые как-то сами научились плавать в этом кипящем киселе технологий. По их же признаниям, лучшее, на что можно рассчитывать в отечественном вузе — хорошая база по математике и физике. Всё остальное, будь до кодинг или навыки обучения — самостоятельно.
Конечно, можно сказать всем остальным: «Смотрите! Раз они смогли научиться без умения учиться, значит сможете и вы!» И это была бы отличная иллюстрация систематической ошибки выжившего. Потому что делать выводы лишь на основе удачных случаев — рискованно.
Есть немало людей, которые, хоть и хотели достичь высот в IT, таки отказались сутками напролет выжигать себе кодом глаза. Слишком высокой оказалась для них плата за бессистемность. Но некоторые ещё барахтаются, пытаясь изобретать способы для запоминания, используядля этого уже существующие методики, например карточные системы вроде Anki. Но этого мало. Недаром даже тертые калачи сегодня задаются вопросомо том, как поддерживать уровень знаний.
Меня последним временем напрягает то, что мои знания регулярно прокисают, «рассыпаются», и требуются определенные регулярные усилия чтобы это как-то хэндлить. Подскажите, как поддерживать консистентность знаний, когда ты знаешь слишком много?
Доколе эти счастливчики, которым повезло научиться учиться самостоятельно, без системы, будут вводить в заблуждение новичков, говоря им, что, мол, главное — желание пробить головой стену или наличие ментора? Ведь наши менторы в большинстве своем — любители-самоучки, и не все из них понимают устройство своего мозга, не говоря уже об особенностях восприятия информации ученика.
Так что вопрос остается открытым: каким образом IT-специалисты, соль профессии которых — выживать за счёт постоянного обучения, умудряются это делать без системы обучения обучению? Если же у вас таки есть такая система — добро пожаловать в студию.