May 10, 2020

Думать на Javascript

Насколько язык, на котором мы думаем, определяет наши возможности восприятия окружающего мира? Можно ли использовать размышление на иных языках для “выхода из коробки”?

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

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

Например, вы пишете список: cделать работу, записать результат в отчет, отнести на стол к руководителю. И получаете пустой документ на столе руководителя

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

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

Следующая особенность мышления на языке javascript — фиксированный синтаксис. Однозначное описание любой задачи полностью отключает необходимость формулировать мысли. Это просто квинтэссенция исполнения. То, что заняло бы несколько страниц текста записывается в 10 строк кода. Невероятное ощущение, особенно после 100 страничных регламентов. Мозг пытается не допустить логической ошибки, а не жонглирует более синонимами. И снова мы получаем ускорение написания большой инструкции. А самое главное, сразу после создания инструкции мы можем её испытать. Не нужно несколько месяцев ждать “обратной связи”

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

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

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

А вы замечали, как занятие программированием, математикой или иностранными языками влияло на способность решать нестандартные задачи?