Программист рождается дважды. Впервые – как человек, известными вам способами. Второй раз – как программист, когда он внезапно понимает, что часть реальности в его руках, и её вполне можно менять.
Вот это понимание, осознание способности создавать и изменять, и отличает программиста. Приходит оно внезапно, как озарение. Словно кто-то щёлкнул невидимым тумблером, и человек, пусть даже умеющий чисто механически писать шаблонный код, вдруг понимает, что, как и зачем делает. И видит, что может намного больше и лучше.
Единого алгоритма включения тумблера не существует. Любое образование – школьное, среднее специальное, высшее, платные и бесплатные курсы – не гарантирует, что лампочка загорится. По моим скромным подсчётам, второе рождение случается у 1-5% получающих подобное образование. Хотя, написать какой-то код способны большинство выпускников.
По моим многолетним наблюдениям, тумблер щёлкает под действием двух факторов – мотив и подача. Мотив – мощная личная причина стать программистом. Подача – способ изложения информации или постановки задачи, который помогает въехать в тему.
И мотив, и подача – индивидуальны. И их много. Это и хорошо, и плохо. Хорошо – потому что всегда найдётся другой вариант, если предыдущие не помогли. Плохо – потому что мало кому охота возиться с человеком, пытаясь подобрать мотив и подачу. Проще окрестить его идиотом и отправить работать менеджером в салон сотовой связи.
Я расскажу 12 сочетаний мотива и подачи, под действием которых случилось второе рождение, и на свет появились 12 программистов. Всё из жизни, разумеется.
1 - Я сам
Начну с себя. Я стал программистом в 9 классе. Вообще, я был отличником, не понимал только один предмет – информатику. Чисто механически, используя шаблоны и примеры, тратя массу времени, я справлялся с заданиями. И вроде бы фиг с ним, но был ужасный мотив – учителем информатики был мой родственник.
Мне перед ним было ужасно стыдно. Потому что я знал, что он знал, что я в информатике – тупой, как пробка. А я, как ни старался, ни черта не мог понять программирование.
Однажды он вызвал меня к доске и велел написать код – ввод строки и вывод её на экран, на бейсике. Я промучился минут 15. Это было дно. Он тоже расстроился, и сказал: «блин, вы хоть книжки почитайте».
Я сразу после урока побежал в школьную библиотеку и нашёл там книжку «Бейсик для всех». За выходные прочитал и тумблер щёлкнул. Книжка содержала лишь элементарные понятия – переменные, циклы, процедуры (подпрограммы), ввод/вывод. Но именно этого мне и не хватало.
Ну и всё, с тех пор никак напрограммироваться не могу.
2 - Ирина
Ирина работала «программистом» пару лет. Писала какой-то код на C++, ей платили какую-то зарплату, что-то вроде даже работало. Но Ирина нифигашеньки не понимала, что она вообще делает.
Потом перебралась в другой город и пошла искать новую работу. Устроилась программистом 1С – формальный опыт помог устроиться. Но на новом месте стало сильно хуже. На C++ она участвовала в разработке некоего большого продукта, и могла «спрятаться», а тут, в 1С, работала один на один с клиентом и его задачей. Сначала ревела от бессилия только дома, потом начала и на работе.
Ей повезло с начальником – он знал, что надо найти мотив или подачу. По показателям её давно надо было выгнать, т.к. Ирина приносила убытки, но начальник защищал её перед вышестоящими. Так продолжалось полгода. Компания и коллеги Ирине сильно нравились, и она очень хотела закрепиться и остаться – это был её основной мотив.
Подачу нашёл начальник, случайным перебором. Он отправил её на несколько дней к клиенту в офис – там как раз шёл запуск системы в эксплуатацию (до того Ирина работала только удалённо). Увидев клиентов, поняв их проблемы, посидев с ними несколько дней, вместе разбираясь с проблемами запуска, Ирина стала вдруг программистом.
Когда вернулась в офис, изменилась навсегда. Показатели стали одними из лучших в команде. Всё стало получаться.
3 - Дмитрий
Дмитрий стал программистом под действием одного из самых распространённых мотивов. Дмитрий взял ипотеку.
Вообще, он работал 1С:Слесарем. Это когда ты не программируешь, а устанавливаешь, обновляешь, «решаешь проблемы» методом тыка и поиском в интернете. Поначалу так жить можно, но потолок доходов очень низкий. Если нет серьёзного мотива повышать доход, то и программистом заставить себя стать довольно сложно.
Ипотека дала мотив. Подача не потребовалась.
4 - Толик
Толик учился с другом в институте, пытались стать инженерами. У друга тумблер уже щёлкнул, он много и успешно программировал – и для себя, и мастерил за деньги однокурсникам лабы, курсовые и т.д. В том числе – Толику, который не спешил вникать в программирование. Ему больше нравились более фундаментальные предметы – вышка, сопромат, ТОЭ, численные методы, стат. анализ и т.д.
Потом друзей отправили на производственную практику, на завод. Для начала им надо было опробовать на производстве некоторые методы стат. анализа, из области управления качеством. Сделали в экселе, но быстро поняли, что нужно как-то автоматизировать. Препод договорился с заводом, что программирование будет в рамках НИР, за которую придётся заплатить институту деньги.
Договора было два, отдельно на каждую методику управления качеством. Соответственно, программы надо было написать две. Друг Толика, естественно, предложил свою помощь – хотел сделать оба продукта. Но Толику, впервые в жизни, стало стрёмно от своей неспособности самостоятельно программировать – всё-таки, это была не лаба, а НИР. Из которой потом вполне мог получиться неплохой диплом.
Вот Толик и решил сделать всё сам. Заморочился настолько, что поставил себе цель – сделать принципиально не так, как его друг. Например, друг считал, что данные надо хранить в виде типизированных файлов – Толик вынужден был дружить свой продукт с БД. Друг не парился с рисованием диаграмм, и выводил их на форму – Толик сел изучать Fast Report. И т.д.
В итоге, всё лето Толик просидел за компьютером. К осени стал программистом.
5 - Русская жена Надя
Надя работала инженером, в самой лайтовой версии этой профессии – занималась извещениями на большом заводе. Программировать никогда толком не пробовала, если не считать списанных лабораторных в институте.
Вышла замуж, родила ребёнка, отправилась в декрет. Однако, муж решил с Надей развестись. Он был, по выражению самой Нади, «не пришей кобыле хвост». В ВУЗе не доучился, ничего толком не умел – то менеджером поработает, то эникейщиком, то грузчиком. И вот засада – после развода исчезли почти все источники дохода, включая алименты.
Бывший муж Нади решил устроиться программистом 1С, пошёл на стажировку. Там надо было сразу и учиться, и работать – решать задачи возрастающей сложности. Чувак, я напомню, «не пришей кобыле хвост». У него ни черта не получалось. В отчаянии он попросил помощи у бывшей жены.
Стали работать в тандеме. Бывший муж сидит на работе и делает вид, что решает задачу. В это время Надя, сидя дома, с ребёнком на руках, экстренно вникает в программирование и решает задачу за несчастную бестолочь.
Мотив был настолько серьёзный, что Надя за время стажировки бывшего мужа стала программистом, и устроилась в ту же компанию удалённо. Когда вышла из декрета – очно.
6 - Вова
Вова учился на инженера, но ни черта не мог понять программирование. Больше всего ему нравилось всё, связанное с железом – аналоговая электроника, проектирование приборов, расчёт площади радиаторов и т.д. Программирование железа не касалось – было абстрактное, оторванное от производственных задач изучение C++, Builder, СУБД, MatLAB и т.д. Вова всего этого не понимал.
А потом начался курс по ассемблеру. И не абстрактному, а с программированием стенда – такая плата с микропроцессором, на которой есть клавиатура, светодиоды, динамик, ЖД-экранчик и т.д. В компьютере пишешь код на ассемблере, отправляешь его в стенд, и наслаждаешься. Задачи – больше «железячные». Например, ввод данных с клавиатуры, но с обработкой задержки нажатия, отсеиванием дребезга и т.п. Или вывод секундомера на дисплей. Или выдача звука при нажатии на кнопку более 3 секунд.
Программирование стенда стало той подачей, которую Вова понял. Дальше всё пошло, как по маслу – и C++, и СУБД, и всё, что попадалось под руку.
7 - Игорь
Игорь работал «программистом» на заводе, в составе небольшой команды. Ранее опыта программирования не было, если не считать списанных лабораторных в институте. Коллеги были более опытными, и вполне справлялись со всеми задачами поддержки и развития информационной системы на заводе.
Игорь тоже пытался решать задачи по программированию, но заканчивалось это всегда одинаково. Игорь ковыряется – день, два, три, неделю, пока задача не начинает припекать. В этот момент коллеги забирают задачу у Игоря и делают сами.
Сначала Игорь переживал, потом привык. И сформировался устойчивый паттерн поведения. Игорь вроде что-то программирует, но его код никогда не попадал в продакшн, потому что ни разе не был дописан. Коллегам, естественно, проще было всё сделать с нуля.
И начальник, и коллеги говорили Игорю, что так он не станет программистом. Пока у него есть «группа поддержки», он всегда будет стараться наполовину, а то и на 5%. Умом Игорь понимал, что они правы, но ничего не мог с собой поделать – привык уже.
Но судьба решила Игорю помочь. В течение года все программисты, кроме Игоря, уволились, и он остался совсем один. Мотив появился жёсткий – завод в любую минуту мог встать колом. Уволиться Игорь не мог – понимал, что в другое место его не возьмут.
Поэтому собрал волю в кулак, сжал булки и стал программистом. Вынужденно, в жутком стрессе, но тумблер щёлкнул.
8 - Виктор
Виктор работал программистом 1С, но ни черта не понимал, что и зачем делает. Как и большинство его коллег, решал задачи методом гугл-программирования. Искренне пытался понять, что написано в коде типовых конфигураций 1С, но чем дальше, тем меньше понимал. Благо, и конфигурации становились всё сложнее – там, где раньше хватало 100 строк кода, теперь было 3000, да ещё разбросанных по куче мест.
Виктору помог коллега, который, помимо основной работы, разрабатывал собственные небольшие продукты. Сказал так: чтобы понять программирование, надо решать задачи, которые ты поставил сам себе. Это будет творчество, и оно даст необходимый тебе мотив вникать, изучать и пробовать.
Виктор послушался, и через месяц стал другим человеком – программистом. И всё заколосилось.
9 - Сёма
Сёма хотел быть лучше всех. В принципе, ему не особо было важно, в чём именно – лишь бы лучше всех. В школе и институте он выделялся оценками – учился лучше всех. Потом пришёл работать программистом. Знания были только академические, никакой особой практики.
На работе Сёма тоже захотел быть лучше всех. Но быстро понял, что по иерархической лестнице программистов подняться наверх будет трудно. Он не сам до этого додумался – так сказали матёрые программисты. Сёма, сказали они, лет 10 должно пройти, прежде чем с тобой хотя бы поговорить за программирование можно будет.
Но Сёма всё равно хотел быть лучшим. Решил, что пойдёт по вектору менеджмента. Нашёл себе наставника-начальника, попросил быстро научить его управлению, готов был выполнять любую работу. Начальника рвение Сёмы удивило, но он решил попробовать. Дал ему в управление пару стажёров, помогал, поддерживал, учил. Но у Сёмы плохо получалось.
Видя, что с Сёмой что-то не так, начальник поговорил с ним по душам. Тут и узнал, что Сёма просто хочет быть лучше всех, в чём-нибудь. Начальник сказал, что у Сёмы есть потенциал стать отличным программистом. Тот ответил, что не хочет тратить на это 10 лет. Начальник сильно удивился этой цифре, расспросил, откуда она взялась. Посмеялся.
Открыл и показал Сёме несколько примеров кода, написанного «матёрыми». Вместе посмеялись. Сёма от души поблагодарил начальника, погрузился в программирование, и через год стал лучшим в компании.
10 - Лена
Лена отучилась на инженера в институте, и попробовала найти работу программиста. Город был небольшой, вакансий немного, но на всех собеседованиях просили порешать тестовые задачи. Лена не смогла решить ни одной.
Были варианты пойти работать инженером на завод, но Лена не хотела – видела на примере мужа, насколько это бесперспективно. Хотелось быть программистом. Но, как поняла Лена, программист из неё никакой.
Немного погоревала, поделилась болью с подругами. Оказалось, у одной из подруг мама была директором школы. И там требовался учитель информатики. Лена, безо всякой надежды на успех, позвонила, её позвали на собеседование и, как ни странно, пригласили работать. Сказали только, что надо пройти курсы повышения квалификации, которые дают корочки, как-нибудь связанные с педагогикой – там какие-то свои заморочки.
Лена взяла в школьной библиотеке учебник по информатике, и с головой погрузилась в его изучение. Сильно боялась, что попадётся школьник, который умеет программировать лучше неё – что было вполне вероятно. Проштудировала книжку, прорешала все возможные примеры задач, и пошла работать.
Очень быстро поняла, что не может объяснить детям программирование. Формулировки из учебника не заходили – ни ей самой, ни детям. Лену это не устраивало – переживала, что выгонят за профнепригодность. Поэтому сидела вечерами, ночами и в выходные в интернете, искала способы подачи программирования детям. Нашла несколько вариантов – и конкретные методы, задачи, и принципиальные подходы в педагогике, перечитала несколько диссертаций с экспериментами над детьми. Что смогла – попробовала применить.
Пока пыталась объяснить программирование детям – поняла его сама. Через пару лет ушла из школы, уехала из города и устроилась программистом.
11 - Рома
Рома чем-то похож на «не пришей кобыле хвост». Жил в небольшом городе, пытался учиться в ВУЗе, но его выгнали, побегал между разными работами, но нигде не мог осесть надолго. Родственники помогли устроиться на единственный крупный завод в городе. Раз было неоконченное высшее по инженерной специальности – системным администратором.
В начале 2000-х, когда всё это происходило, компьютеров на заводах было не очень много. Там, где работал Рома, почти весь парк находился в бухгалтерии. Где бухгалтерия – там и 1С. Где 1С – там вечно что-то не так. Ну и стали просить Рому помочь. А ему, в принципе, не очень-то охота.
Но дело, напомню, было в маленьком городе. Там все друг друга знают. Одна тётенька-бухгалтер была соседкой Ромы, другая – мамой его друга, с третьей он дружил в школе, четвёртая покупала у него яйца в обмен на сало и т.д. Отказывать в помощи – себе дороже.
Так у Ромы появился мотив заняться программированием. Благо, никто больше в городе программировать не умел, интернета не было, а «резервному копированию» подвергался весь учёт – на бумаге дублировалось абсолютно всё. Изучать программирование можно было в совершенно безопасной среде.
Рома очень быстро увлёкся. Брался за всё подряд. Как говорили тётеньки-бухгалтеры, ему только полслова скажи, что где-то проблема – уже сидит, строчит что-то. Не исключено, что за годы работы Рома написал очень много избыточного, ненужного кода. Но зато набил руку.
Когда решил, что надо двигаться дальше, уехал в большой город и пошёл устраиваться программистом. Собеседователи кривили лицо, услышав про неоконченное высшее и работу на заводе. Но когда дело дошло до практической проверки навыков программирования, Рому отхватили с руками и ногами. В автоматизации работы бухгалтерии он за несколько дней стал лучшим в компании, по понятным причинам.
12 - ?
Ко всем подобным историям у меня, если честно, интерес чисто практический. Я занимаюсь, помимо прочего, выращиванием программистов. И точно знаю, что каждому надо попасть в определённые обстоятельства для переключения тумблера.
Я пытаюсь создавать эти обстоятельства искусственно. Пробуешь одно, если не получается – другое, и т.д. Верю, что вариант обязательно найдётся. Просто я знаю далеко не все сочетания мотива и подачи.
Поэтому пункт № 12 оставляю вам. Если знаете какой-нибудь способ дотянуться до тумблера программиста, не упомянутый в публикации – прошу, расскажите в комментариях.
Спасибо.