tsidukciya

Программирование: Почему вам стоить попробовать?

Самая большая глупость – делать то же самое и надеяться на другой результат.

©️ Альберт Эйнштейн

Данный раздел имеет повышенный уровень сложности по сравнению с предыдущими. Если вы уже применяете навыки, описанные в предыдущих разделах, то рано или поздно ваша продуктивность будет ограничена некой асимптотой — уровнем, который нельзя преодолеть, не изменив систему. В бережливом мышлении (англ. lean thinking) непрерывное совершенствование называют кайдзен. Внедряя новые техники и привычки, вы идёте путём кайдзен. Но что делать, если вы в своей продуктивности уже подходите к некому пределу?

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

Персональный компьютер в моей жизни появился летом 1999 году. Он покупался родителями для работы - мама работала бухгалтером. На тот момент бо́льшая часть бухгалтерских приложений была написана под MS-DOS, но были уже и пакеты под Windows, например MS Office. Исходя из таких требования ПК был выбран не самый производительный: Celeron 300, DIMM 32 Мб ОЗУ, HDD 4GB, видеокарта Riva 128 AGP c 4 Мб, звуковая карта Yamaha ISA, дисководы для дискет и компакт-дисков, “пузатый” монитор на 15 дюймов, клавиатура, колонки и мышка с “шариком”. Итого около 13 тыс. руб. ($520).

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

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

ФМШ была единственной школой, которая имела несколько компьютерных классов. Во втором полугодии мы начали изучать основы QuickBasic (пожилой язык программирования) на уроках информатики. Поэтому в резюме я могу указывать опыт разработки с 1999 года! Шучу. В силу не очень производительного домашнего компьютера и увлечением программированием сводное время я тратил на изучение новых конструкций языка, а не на игры, всё равно многие из современных шли с “тормозами” или просто не запускались. На окончание седьмого класса бабушка подарила мне книгу по QuickBasic 7.0, что ускорило моё изучение. Напомню, что это был 2000 год, и даже медленного модемного подключения к сети Интернет не было ещё несколько лет.

В старших классах нам преподавали TurboPascal, Borland Delphi и AutoCad (ещё под DOS), что было, несомненно, круто, как я оцениваю это по прошествии пары десятков лет. В восьмом классе я написал программу, которая строила графики по введённом квадратному уравнению, что позволяло сделать домашнюю работу по алгебре значительно быстрее, срисовав правильный ответ с экрана монитора. С одной стороны, мне повезло, что на уроках информатики в школе нам давали материал уровня ВУЗов того времени, особенно по программированию. Именно тогда я решил, что буду программировать несмотря не то, кем буду работать. И пока это сбывается. Но, с другой стороны, я не умаляю роль первого компьютера, на котором, в силу ограничений его производительности, можно было только программировать, а не играть часы на пролёт, как многие мои одноклассники.

Сейчас компьютер, например, для изучения современной цифровой профессии стоит примерно столько же в рублях, как 25 лет назад, пусть и на вторичном рынке. Если у мальчика из маленького города получилось в эпоху дискет и диалапного интернета, то сейчас изучение программирования, основ работы с искусственным интеллектом или любой другой цифровой профессии почти гарантированно любому пожелавшему это сделать. А теперь попробую ответить на вопрос, который вынесен в название главы - почему в целом стоит рассмотреть программирование для своего развития? В свой книге “Поток. Психология оптимального переживания” американский психолог Михай Чиксентмихайи приводит восемь основных компонентов переживания радости. Попробуем разобраться, что это за компоненты и причем здесь программирование? Чтобы это сделать, приведу первоначальное описание автора:

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

А теперь попробуем разобрать каждый из компонентов счастья и попробуем понять, как это соотноситься с разработкой.

Посильная цель. При изучении новой технологии мы (разработчики) начинаем с той ступени, которая нам может быть наиболее понятна, но не является для нас и нашего опыта чем-то очевидным. В текущем информационном пространстве каждый может выбрать формат обучения, доступный для понимания: от вебинаров и книг серии “for dummies” до мастер-классов и теоретических лекций с элементами высшей математики. Возможность сосредоточиться. Стереотипы о разработчиках и вообще об ИТ-специалистах говорят сами за себя. Часто программисты “отключаются” от внешнего мира, чтобы разработать сложный алгоритм, изобрести новый подход, или просто реализовать новую “фичу”. Четкая формулировка цели. Как правило, цель всегда понятна: алгоритм должен работать, сайт должен соответствовать макету пиксель-в-пиксель, сервис должен держать нагрузку N запросов в секунду. Таким образом большинство задач имеют четкие критерии приемки. Немедленная обратная связь. За эту возможность я и многие, наверно, полюбили программирование. Меняешь пару строчек местами, запускаешь компиляцию - ошибка! Разбираешься, что-то переделываешь, опять запускаешь - работает! Такие циклы обратной связи могут иметь частоту до несколько десятков раз в час, что дает возможность малыми итерациями двигаться к цели. Увлеченность. Наше сознание фокусируется на 1 объекте в отличие от многопоточного подсознания, поэтому любое интересное занятие позволяет забыть о других заботах и тревогах, что как раз и называется состоянием потоком оптимального переживания. Ощущение контроля. Текст программы полностью подвластен разработчику, особенно если говорить про задачи для обучения. Поэтому, на мой взгляд, в этом и кроется одна из проблем методологии RUP и ей подобных, где “кодеру” остается лишь наполнить заранее спроектированные классы кодом, что как раз лишает это занятие творческой составляющей и чувства автономности. Представьте, что вам нужно сделать ремонт в своей новой квартире или выбрать новую машину. А вам из этих занятий оставляют только механическую поклейку заранее выбранных кем-то обоев или оплата в кассе заранее выбранного кем-то автомобиля. Вы не получите значимую порцию дофамина от предвкушения самого событие, которое вы могли бы держать полностью под контролем. Личностный рост. Любая тренировка и оттачивание мастерства, в том числе и программирование, позволяют почувствовать удовлетворение от проделанной работы. Освоен новый фреймворк, унаследованный код оптимизирован и покрыт тестами по новой технологии. Все это позволяет положить в копилку наших навыков еще один, который поможет двигаться дальше и ставить более амбициозные цели. Восприятие времени. Часто мы теряем чувство времени, так как занимаемся любимым делом. На этой особенности, например, построены концепции хакатонов, когда нужно писать код несколько суток не останавливаясь. Для участников такие события пролетают за одно мгновение.

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

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