Базовые навыки, необходимые для решения любой проблемы

В моей жизни как инженера-программиста меня часто спрашивали: «Крис, а как ты думаешь, зачем ты здесь?»

Это заставило меня задуматься. Я просто тот, кто сокращает код? Я так не думаю, это кажется плохим определением. Написание кода - это результат более длительного и более сложного процесса, чем просто взлом моего компьютера. Нет, я не просто сокращаю код.

Итак, что я делаю? Поразмыслив, я решил, что являюсь подклассом гораздо более общей группы людей, и эти люди связаны одной миссией.

Они умеют решать проблемы

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

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

Есть приемы, которые я освоил за долгие годы, и которые были совершенно незаменимы при рассмотрении сложной проблемы.

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

Лицом к лицу. Вы собираетесь все испортить

Первое, что вы сделаете - потерпите неудачу. Это не имеет ничего общего с вами или проблемой. Это просто природа вероятности. Чем меньше вы знаете о стоящей перед вами проблеме, тем больше вероятность, что вы запутаетесь.

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

Cynefin Framework

Нет, я не только что ругался на гэльском. Это валлийское слово означает «среда обитания». Каркас Cynefin был впервые предложен Дэйвом Сноуденом в 1999 году. Его лучше всего описать как «устройство смысла».

Давайте посмотрим на его наиболее распространенную диаграмму.

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

Он разбит на четыре раздела, каждый из которых имеет название. Начиная с нижнего правого угла и двигаясь против часовой стрелки, мы видим, что все становится все мрачнее. От «очевидного» до «хаотичного».

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

Cynefin - отличный инструмент, потому что он дает вам представление о природе и масштабе проблемы. Затем он дает вам несколько советов.

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

Счастливый путь

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

Хотя вы знаете, куда хотите идти, вы вынуждены идти по каждому пути, как вода, текущая через ручей. Вскоре вы становитесь слишком тонкими, и вам больше не хватает силы, чтобы двигаться вперед.

Сделайте первый шаг к решению проблемы, рассматривая только «счастливый путь». Представьте себе прекрасный мир, в котором никогда не бывает ошибок.

Никто никогда не вводит неправильный пароль, мы используем USB-накопитель с первого раза правильно, и мы всегда находимся дома для доставки. Отложите в сторону мрачные трещины реальности и занимайтесь только тем, что перед вами.

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

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

Используйте примеры для стимулирования разговора

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

Использование «примеров» - отличный способ добавить эту структуру, не ограничивая ваш естественный мыслительный процесс. Дэн Норт, изобретатель Behavior Driven Development (BDD), придумал отличный формат для этих примеров.

Этот язык будет знаком любому, кто имеет опыт разработки программного обеспечения, но цель BDD никогда не заключалась в тестировании программного обеспечения.

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

Мне нравится использовать BDD как еще один «инструмент смысла», как Cynefin. Часто, когда речь идет о сложных проблемах, люди расходятся во мнениях.

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

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

Получить художественный

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

Вытягивая мысли, мы сразу чувствуем логические проблемы. Мы убедительно и глубоко подтверждаем наши рассуждения.

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

Помните, чистый разум, грязная доска.