Один из основных элементов деятельности любого человека, связанного с IT-индустрией, это получение новой информации, ее анализ и применение на практике. Программист постоянно что-либо изучает, он подвержен страстному желанию узнать что-то новое. Сопоставив нынешний уровень доступности информации можно понять (и даже прочувствать) самую трагичную проблему homo programmer — слишком много интересного и слишком мало времени, чтобы в этом разобраться.
«Информационная эра (англ. Information Age, также известная как эра компьютеров или информационная эпоха (электронная эпоха)) — концептуальная идея о том, что современный век будет характеризоваться широкими возможностями для отдельных лиц свободно передавать / принимать информацию, а также мгновенным доступом к знаниям, что было бы трудно или невозможно в предыдущие эпохи развития человечества.
© ru.wikipedia.org/wiki/Информационная_эра
Тот самый мгновенный доступ к знаниям чрезвычайно увеличивает количество информации, которую переваривает программист в день. Однако не всегда поток слов и абстракций может легко и непринужденно уместиться в сознании — порой это невозможно из чисто физиологических соображений. „Ибо мысль ваша доходит лишь до тех граней, до которых ее допускает орган вашего мышления“ и в этом Лем был чертовски прав. Так что же делать?
Человек по-настоящему понимает другого человека, воспринимает его мысли не искаженно, видит не только слова, но и вложенный в них смысл, оценивает точку зрения другого как свою собственную. И включает ее в мерки, с которыми подходит к тому или иному вопросу. Конец недоразумениям, конец предвзятости, подозрительности, препирательствам — ясное, полное осознание всех спорных сторон всякой проблемы. Применимо в любой области человеческой деятельности. В социологии, в психологии, в технике, — какую грань цивилизации ни возьми. Конец раздорам, конец нелепым ошибкам, честная и разумная оценка наличных фактов и идей.
Так описывает Клиффорд Саймак учение Джуэйна, которое неким образом позволяет одному человеку абсолютно точно, легко и непредвзято понять мысль другого человека. Выглядит красиво и нереально. Но поразмыслить над тем, как сделать свою мысль понятнее для другого человека, вполне положительное занятие. Заранее предупрежу, что ничего сверъестесственного я не продемонстрирую. Я всего лишь опишу то, что на мой взгляд может принести пользу. И да, вполне возможно, это велосипед)
Итак, будем решать проблемы по мере поступления. И для начала разделаемся с вопросом о количестве информации. Точнее о затратах на передачу от одного человека другому в знаковой форме информации, которая обладает внутренней логикой (подчеркиваю этот момент — для знания другого рода, например, классификации бойцовых ежиков, все ниже описанное врядли подойдет). Достаточно очевидно, что какая-либо объемная мысль, выраженная с помощью грамотного, литературного естесственного языка, несет в себе достаточно много лишнего помимо мысли. КПД такого способа передачи не самый высокий, т.к. для получения информации приходится перелопатить большое количество текста. Поэтому при встрече с такого рода информационным ресурсом мы часто неосознанно применяем способы быстрого чтения по диагонали, чтобы как можно быстрее уловить суть.
Поскольку наша цель — упрощение восприятия информации, возникает законное желание уменьшить затраты на ее передачу. Этого вполне можно достичь, если попробовать использовать более экономичный способ обмена информацией, „сжать“ описание мысли. Замечу, что данное желание законно не всегда. Например, врядли кому-то в сумасбродную голову придет идея сжимать информацию, которая заключена в художественной книге. Да и вообще, нет особого смысла делать более краткой любой текст, распространяемый на бумаге. Поэтому данная идея актуально только для интернета. Более того, чтобы ни у кого не отбирать удовольствия от прочтения очередного литературного изыска известного блоггера, есть смысл в дублировании информации, выкладываемой в общее пользование, в двух форматах — обычном и „сжатом“. Тот, кто никуда не торопится и хочет, словно гурман, оценивающий изысканное вино, поперекатывать слова в голове, может воспользоваться первым вариантом. Тот, кто в сумасшедшей спешке ишет решение глобальной проблемы, может воспользоваться вторым.
Итак, более экономный способ передачи информации… Не знаю, для кого как, а для меня эти слова ассоциируются со схемами. Графическим представлением часто пользуются для того, чтобы сделать трудную для понимания идею более простой. И это вполне логично — представление информации в форме схемы удовлетворяет условиям наглядности и краткости. А вооружившись этими клинками можно легко и непринужненно отсечь от мысли все ненужное и сделать ее понимание тривиальной задачей.
Но не так все просто. Сами по себе схемы не дают просветления — с их помощью можно воплотить свою идею не самым понятным образом.
Для того, чтобы максимально просто описывать ход своей мысли в схеме, нужно руководствоваться критериями простоты и логичности. Простота в описании мысли означает, что нам необходимо использовать атомарные единицы мышлений, т.е. интуитивно понятные (ну или хотя бы достаточно достоверные) идеи. Логичность же заключается в том, что эти атомарные мысли должны быть связаны между собой логическими переходами. Таким образом, каждую мысль можно трансформировать в набор логических цепочек, состоящих из предпосылок, логического перехода и результата размышления на данном шаге. Читая такую схему, можно легко проследить движение мысли автора, а значит понять то, что он хотел передать.
Замечу, что такая форма описания мысли, помимо всего прочего, преследует еще одну важную цель — обоюдную логичность как при чтении информации, так и при ее написании. Дело в том, что попытка оформить свою идею таким образом является дополнительной проверкой, которая может на ранних этапах выявить нелогичные и слабые звенья в цепочке рассуждений.
То, что я только что описал, напоминает mind maps. Но на мой взгляд, есть серьезное отличие в сфере применения. Карты ума предназначены для структурирования некоторого знания, чтобы оно лучше укладывалось в голове человека. Схема, которую я описал выше, направлена на структурирование размышлений, с аналогичной целью.
Итак, основная идея готова — для страждущих делать особенным образом написанные схемы. Но на этом пока рано останавливаться. Необходимо обсудить приземленную практическую сторону дела, потому что, будучи неудачно реализованной, она может все испортить. Что же от нее требуется? Понятно, что раз мы ограничиваемся публикацией идей в сети, помочь в этом должен некий программный продукт. Он должен быть прост и ненавязчив, требуя от пользователя минимальное количество лишних действий. Огромным плюсом для него будет навигация по уже сформированным логическим цепочкам. На выходе должен быть файл графического формата)
Мне очень хотелось сделать опытный образец подобной штуки (исключительно для собственного пользования) и я не удержался от соблазна. Все, что получилось или получится в ближайшем будущем, будет здесь. Вкратце пробегусь, что есть сейчас и что стоит предусмотреть.
Дабы упростить не только восприятие информации, но и свою нелегкую жизнь, я решил написать опытный образец на python. Под горячую руку попал также Graphviz его и python интерфейс pydot. В процессе написания я подметил некоторые детали:
Навигация. Чтобы не отвлекать мыслителя, надо показывать только предыдущую мысль (предпосылка), логический переход, который к ней применен, и результат этого применения в виде еще одной мысли. Но при этом для длинных цепочек необходимо иметь возможность просмотреть все дерево размышлений, только делать это надо ненавязчиво, чтобы не отнимать внимание от более важных вещей.
Читабельность. Чтобы при чтении полученной схемы глазу было за что зацепиться, необходимо на время разбудить в себе художника. Он вам подскажет, что очень неплохой идеей является использование нескольких (лучше всего 2) неярких цветов для узлов-мыслей логической цепочки, которые, чередуясь, не дадут схеме превратиться в однотонное пятно. К тому же есть смысл использовать узлы одинакого размера, чтобы они не вносили дополнительного хаоса. Ну и на последок, стоит подобрать отступы (в Graphviz за них отвечают параметры ranksep и nodesep)
Направление схемы. Я очень долго разрывался между стандартным распложением узлов сверху-вниз и более привычним для чтения, но менее компактным слева-направо.
В качестве эпилога продемонстрирую, как могло бы все вышесказанное быть выражено в сжатом формате
Автор: erthalion