September 12, 2022

Суперспособности программистов, которые они держат в секрете

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

1. Способность делить сложную проблему на легкие микро-задачи.

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

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

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

2. Возможность создавать воображаемые миры

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

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

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

Есть такая замечательная книга «Паттерны проектирования» Э. Гамма, Р. Хэлм, Р. Джонсон и Д. Влиссидес. Там описаны практически все самые популярные приемы, которые используют программисты при создании сложных архитектур. Эта книга в свою очередь появилась, благодаря труду Кристофера Александера, он исследовал основные принципы в архитектуре настоящих зданий и выявил закономерности, благодаря которым можно построить все, от одноэтажных летних домиков, до гигантских небоскребов.

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

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

3. Медитативный взгляд на мир. Дзен-буддизм.

Иногда я тренируюсь говорить по английский в различных приложениях. Часто моими собеседниками становиться индусы, они тоже любят прокачивать язык. Знаете, что самое интересное. Многие собеседники оказывались программистами или студентами, которые изучают компьютерные науки. Но самое замечательное, почти все индусы-программисты из касты брахманов. Хоть в Индии, якобы уже отменили все эти средневековые пережитки, однако, кастовость глубоко въелась в их сознание, возможно даже на генетическом уровне.

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

Довольно интеллектуальное занятие, не правда ли. Если посмотреть на занятия программиста: изучение документации, составление алгоритмов, тестирование, запуск проектов.

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

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

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

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

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

Вывод

«Выбери себе работу по душе, и тебе не придется работать ни одного дня в своей жизни» -Конфуций.

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

Полезные статьи

Что важнее — идея или стиль?

Топ 5 сайтов о которых вы должны знать

Топ 5 сайта которые изменят вашу жизнь