Думать как компьютерный специалист

Обновлено: 30.06.2024

Стив Джобс как-то сказал: “Каждый в нашей стране должен научиться программировать, потому что это учит думать”.

Что это значит, думать как программист?

По сути, речь идет о более эффективном способе решения проблем.

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

Почему это так важно?

Решение проблем-это мета-навык.

У всех нас есть проблемы. Маленькие и большие. То, как мы их решаем, может многое о нас сказать.

Когда я начал программировать, у меня не было никакой системы, и все проблемы решались следующим образом:

  • Я пробовал какое-то решение.
  • Если это не срабатывало, пробовал другое.
  • Если и оно не работало, повторял пункт 2, пока не повезет.

Иногда реально везло. Но это худший способ решения проблем и огромная трата времени!

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

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

Итак, что же делать, когда вы столкнулись с проблемой?

1.Осознайте проблему

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

Как узнать, понимаете вы проблему или нет? Если вы можете объяснить её простым языком, то всё хорошо.

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

Поэтому следует делать заметки, рисовать диаграммы или рассказывать кому-то о проблеме.

«Если вы не можете объяснить что-то простым языком, вы этого не понимаете». - Ричард Фейнман

2. Составьте план

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

Ничто не поможет, если у вас нет алгоритма действий.

В программировании это означает, что вы не начинаете писать программу моментально. Дайте вашему мозгу время на анализ проблемы и обработку информации.

Этот вопрос поможет вам построить хороший план действий:

"Я нахожусь в точке А. Какие шаги мне нужно предпринять, чтобы оказаться в точке Б?"

У программистов есть отличный способ для решения подобной задачи - псевдокод!

3. Разбейте на составляющие

Не ешьте слона целиком!

Разбейте проблему на части. Эти подзадачи гораздо проще решить. Затем решайте каждую подзадачу поочередно. Начните с самой простой.

После того, как вы решите каждую подзадачу, соедините всё в единую картину.

Поздравляю! Большая, страшная проблема решена!

Этот метод является краеугольным камнем решения проблем. Запомните это (повторите этот шаг, если нужно).

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

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

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

Упростите задачу до такой степени, когда вы точно знаете, как её решить. Идите от простого к сложному.”V. Anton Spraul

4. На зависайте

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

Во-первых, сделайте глубокий вдох.

Не волнуйтесь. Это случается со всеми!

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

Вот три вещи, которые нужно попробовать, когда сталкиваетесь с трудностями:

Отладка: шаг за шагом пройдите через свое решение, пытаясь найти, где вы ошиблись. Программисты называют это отладкой (на самом деле, это все, что делает отладчик).

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

Погуглите: Да, возможно, это пункт надо было сделать первым, но это было бы слишком просто. Независимо от того, какая у вас проблема, кто-то уже сталкивался с ней до вас. Найдите решение. И даже если вы уже решили проблему, перепроверьте себя.

Мой вам совет, не ищите готовое решение. Ищите пути решения. Потому что, если вы не приложите хоть немного усилий, вы ничего не узнаете. Если вы ничего не узнаете, вы потратили свое время впустую.

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

Практика. Практика. Практика. Пройдет много времени, прежде чем вы узнаете, что “эта проблема может быть легко решена с помощью <Вставьте решение здесь>”.

Шахматы, головоломки, видеоигры, математические задачи, монополия и множество других игр и увлечений развивают мышление. Например, Питер Тиль играет в шахматы, а Илон Маск играет в видеоигры. Но это не значит, что теперь вы можете сутками напролёт играть в видеоигры.

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

Теперь вы знаете, что мышление, ориентированное на решение проблем, можно и нужно развивать.

Я желаю вам почаще сталкиваться с проблемами.

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

Нам в редакцию Tproger пришел вопрос от подписчика, которым мы хотим поделиться с вами:

«Как научиться мыслить как программист?»

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

преподаватель израильской высшей школы IT и безопасности HackerU

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

эксперт курса «Профессия веб-разработчик» университета digital-профессий Нетология

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

Исходя из опыта, могу выделить среди них следующие:

  • Умение сформулировать/понять задачу.
  • Умение упрощать.
  • Умение декомпозировать, выделять главное, и выстраивать логическую цепочку.
  • Умение выделять граничные значения и исключительные ситуации.

Спойлер: любой навык и любое умение нарабатывается только практикой.

Умение сформулировать/понять задачу

Как с этим работать: учитесь общаться, учитесь излагать свои мысли, учитесь понимать других людей. В современном мире даже программистам-интровертам этим приходится заниматься. Начните с того, что хотя бы раз в неделю посещайте мероприятия по тематикам, с которым вы никак не связаны, но не просто ходите, а активно задавайте вопросы и пытайтесь понять ключевые идеи и взаимосвязи (это перекликается со следующими двумя пунктами). Можете просто общаться с новыми людьми из других сфер жизни.

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

Умение упрощать

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

Попробуйте понять, почему это взаимодействие устроено именно так. Например, почему процесс заказа или покупки устроен именно так, а не иначе. Можно ли организовать его по-другому? И почему в новых проектах,это взаимодействие иногда строится по-другому (они об этом любят писать в различных источниках).

Найдите changelog’и либо описание истории проекта, посмотрите как менялся проект со временем, с чего начинался, что в него добавлялось и почему.

Умение выделять граничные значения и исключительные ситуации

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

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

Вместо заключения

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

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

14 советов, с которыми ты начнёшь мыслить как программист

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

Цель приложения – это не хвастовство своими знаниями.

Разработчик, не понимающий целей, напишет плохое приложение. Плохое приложение – это сложная система, которая не помогает людям в полной мере.

Принимай решения о приложении с вопросом: как мы можем помочь? Этим же вопросом легко расставлять приоритеты.

Не опирайся на внешние технологии или уменьшай зависимость от них.

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

Вот несколько факторов, которые помогут определиться:

  • Технология находится в активной разработке?
  • Поддерживается разработчиками?
  • Сложно ли отказаться от неё?
  • Что говорит сообщество?

Найдёшь правильные ответы – снизишь риск выбора неподходящей технологии.

Услышав советы вроде «Давай сделаем собственный сборщик мусора вместо встроенного по умолчанию?!», знай, что это трата времени впустую. Вместо этого займись непосредственно программой.

Вот единственные причины, оправдывающие «изобретение велосипеда»:

  • Тебе нужно что-то, чего ещё не существует.
  • Все существующие «велосипеды» плохи, и не покрывают твои нужды.
  • Существующие «велосипеды» не поддерживаются разработчиками.

Не изобретай велосипед.

Последовательность упрощает проект. Придерживайся одного способа реализации во всех местах. Назвал переменную thisIsVariable? Тогда называй таким образом все переменные (otherVariable, anAnotherVariable, и не other_variable).

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

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

Не трать своё время на рутину. Настрой и забудь. Повторяющиеся задачи могут выполняться в фоне, пока ты спишь. Когда понимаешь, что делаешь что-то снова и снова, вспомни правило:

Автоматизируй то, что можешь.

Читай книгу «Автоматизация рутинных задач с помощью Python». С ней ты заставишь компьютер выполнять за тебя поиск определённого текста в файлах, обновление и форматирование данных в электронных таблицах и прочие рутинные задачи.

14 советов, с которыми ты начнёшь мыслить как программист

«Управление сложностью – это сущность компьютерного программирования» – Брайан Керниган.

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

Это ещё не конец.

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

Переписывание кода с нуля.

Неважно, как ты попал в этот кошмар. Главное – как его предотвратить?

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

Сопротивление – нормальная реакция разработчика на требования внести (необязательные) изменения. Защищай свой код и требуй убедить тебя в необходимости изменений прежде, чем вносить их.

И это не единственные причины роста сложности. Скажем проще:

Контролируй сложность, не создавай.

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

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

А главное, ищи совета.

Возможно, ты перепробовал всё и не нашёл работоспособное решение. Время искать советы сеньоров. Предоставь свой код на ревью и читай 8 простых советов, как задавать правильные вопросы.

«Совершенное – враг хорошего» – Вольтер.

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

  • Ты будешь писать ненужный код
  • Ты усложнишь систему необязательным кодом
  • У тебя не будет дедлайнов
  • Ты будешь встречать баги из-за сложности

Не очень заманчиво? Тогда разберёмся, что делать.

Начинай с малого, улучшай, расширяй.

Итеративная разработка – это твой гайд. Рассмотрим на примере с калькулятором:

  1. Запланируй систему, которая не умеет ничего, кроме сложения.
  2. Реализуй.
  3. Улучшай существующий дизайн системы для добавления других операций.
  4. Добавь вычитание и повтори шаги 2 и 3.
  5. Добавляй умножение и повтори шаги 2 и 3.
  6. Добавь деление и повтори шаги 2 и 3.

Хочешь мыслить как программист? Начни менять себя и своё окружение. Изменение мышления – это сложная задача, которая затрагивает процессы в мозге. Для этого мало читать: нужно действовать и выходить из зоны комфорта. Наше мышление не перестраивается в режиме покоя. Для этого ему нужны обстоятельства, условия и даже стресс.

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

Меняй своё цифровое пространство: онлайн-сообщества, в которых ты состоишь, источники информации и привычки. Посвящай больше времени практике и изучению непонятных концепций.

14 советов, с которыми ты начнёшь мыслить как программист

Добавляй логирование и обработку ошибок на ранних этапах. Это облегчит поиск проблем и сэкономит время.

В тестах тоже допускают ошибки. Давай рассмотрим пример с простым условием if-else. Разработчики подают входные данные в блок if, затем тестируют и коммитят. Сделано! А что насчёт блока else? Когда код дошёл до продакшена, это вызвало много проблем. Запускай все новые строки и тестируй частями прежде, чем перейти ко всему коду.

Видишь баг – воспроизведи его. Не нужно строить догадки о причине бага и фиксить исходя из своих предположений. Увидишь причину бага – не ошибёшься.

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

Не тестированный код = неработающий код.

Неправильное представление о комментариях в коде приводит к тому, что разработчик начинает объяснять в них то, что делает код. Работа кода должна быть очевидна при чтении. Не очевидна? Значит, код или фрагмент нечитаемы и должны быть упрощены.

Не можешь упростить? Тогда объясняй эту сложность в комментариях.

14 советов, с которыми ты начнёшь мыслить как программист

Не пиши комменты о том, что делает код, объясняй для чего он это делает.

Ещё одна важная вещь – документирование. Важно иметь документацию, которая объясняет архитектуру твоего приложения, каждый модуль и компонент. Это необходимо для высокоуровневого видения программы.

Мыслить как программист – это также уметь объяснять.

Быстрый код и запуск выглядят важнее поддержки и обслуживания кода. И это ошибка, которая сказывается в будущем.

Реализация будет меняться всегда. Мало вносить изменения, их нужно поддерживать со временем.

Все изменения требуют обслуживания

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

Важнее снизить сложность поддержки, чем сложность реализации.

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

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

Высшей и дискретной математикой прививают определённый образ мышления в хороших учебных заведениях.

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

Как выбрать поле для изучения из всего объёма информации? Тебе нужно выбрать то, в чём ты будешь чувствовать себя комфортно. Не забывай про реалии и следи за спросом на рынке.

Хочешь пойти традиционным путём? Изучай объектно-ориентированное программирование и меняй своё мышление книгой Объектно-ориентированное мышление.

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

Вместе с «Мобильной библиотекой МТС» мы составляем «списки книг от профессионалов». Сегодня программист и аналитик данных, который читает более ста книг в год, рассказывает о тех из них, что помогут лучше думать и понимать мир.

Юрий Разумов

Разработчик, аналитик данных в Targetprocess («Таргетпроусес»). Читает более ста книг в год и «ничего необычного» в этом не видит. Если помните, мы писали о нем здесь.


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

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

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

«Рациональность: от ИИ до зомби», Элиезер Юдковски

Rationality: From AI to Zombies, by Eliezer Yudkowsky


Самая базовая, хоть и огромная, книга из подборки. Это отредактированные Sequences (цепочки постов) сообщества LessWrong («ЛессРон»).

Очень сложно рассказать, о чем книжка примерно на полторы тысячи страниц (улыбается). Она рассказывает, как думать о мире правильнее и рациональнее, начиная с базовых вещей вроде теоремы Фалеса и заканчивая тем, как думать вероятностями. В ней есть и рациональные части про квантовую механику, которые можно пропускать.

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

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

Дальше перейдем к самому важному – экономике. Люди почти ничего не знают о ней, и это очень плохо, потому что она многое объясняет. И здесь вы можете начать или с любого учебника по экономике, или взять какую-нибудь популярную книжку.

Читайте Rationality: From AI to Zombies в Мобильной библиотеке МТС. Первые 3 дня – бесплатно.

«Экономист под прикрытием», Тим Харфорд

The Undercover Economist, by Tim Harford


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

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

Читайте «Экономист под прикрытием» в Мобильной библиотеке МТС. Стоимость – 1,5 рубля, если прочесть за 6 дней.

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

Thinking in Bets: Making Smarter Decisions When You Don’t Have All the Facts, by Annie Duke

Эта книга пока не переведена, зато у нас есть спойлер.


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

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

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

«Как измерить все что угодно. Оценка стоимости нематериального в бизнесе», Дуглас Хаббард

How to Measure Anything: Finding the Value of Intangibles in Business, by Douglas W. Hubbard


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

Измерение – это просто уменьшение неопределенности. И измерять полезно, даже если итоговое значение не будет точным: использовать числа нужно, чтобы лучше принимать решения.

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

Если считать, что они независимы и хоть что-то об этом знают, то с вероятностью в 0,975 медиана будет между крайними значениями, которые они предложили. Вы ничего не сделали, но уже получили хорошую оценку.

Читайте «Как измерить все что угодно» в Мобильной библиотеке МТС. Стоимость – 2 рубля, если прочесть за 8 дней.

«Алгоритмы для жизни. Простые способы принимать верные решения», Брайан Кристиан, Том Гриффитс

Algorithms to Live By: The Computer Science of Human Decisions, by Brian Christian , Tom Griffiths


Эта книга – подтверждение того, что использовать числа в реальной жизни нужно и полезно, что делать что-то с неточными числами лучше, чем с никакими.

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

Спойлер. Как правильно выбрать кандидата на должность, если вы должны сказать «да» или «нет» сразу

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

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

Читайте «Алгоритмы для жизни» в Мобильной библиотеке МТС. Стоимость – 2 рубля, если прочесть за 8 дней.

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

«Обман в науке», Бен Голдакр

Bad Science, by Ben Goldacre


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

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

«Блэкуел (1972) провел серию экспериментов, участниками которых стали 57 студентов колледжа, чтобы установить влияние цвета и количества таблеток на оказываемый эффект. Испытуемые сидели на длинной и скучной лекции и получали одну или две пилюли, которые были либо голубыми, либо розовыми. Им сказали, что они получают либо возбуждающее, либо успокоительное средство. Студенты были психологами, и вы могли говорить им все что угодно, даже лгать – все лечение состояло из сахарных пилюль, которые отличались только цветом. Затем, когда измерялась степень концентрации внимания студентов – так же, как любой другой субъективный эффект, – исследователи обнаружили, что две пилюли были более действенными, чем одна, как и можно было предположить (две пилюли также давали больше побочных эффектов). Кроме того, они обнаружили, что цвет пилюли влиял на результат: розовые лучше помогали поддерживать концентрацию, чем голубые. Поскольку сам по себе цвет не имеет никаких фармакологических свойств, разница в результате может объясняться только сложившимися культурными представлениями о голубом и розовом цвете: розовый является возбуждающим, голубой охлаждающим.

Фармацевтические компании лучше, чем большинство из нас, осведомлены о преимуществах правильного оформления своей продукции: они тратят на грамотный пиар больше, чем на исследования и научные разработки. Как и следует ожидать от практичных людей, живущих в больших загородных домах, они воплощают свои теоретические идеи в практику: так, “Прозак”, например, бывает белым и голубым; и если вам кажется, что я преувеличиваю, то исследование, касающееся цвета пилюль, обнаружило, что стимулирующие препараты чаще имеют красный, оранжевый или желтый цвет, в то время как антидепрессанты и транквилизаторы в основном голубые, зеленые или фиолетовые».

Читайте Bad Science в Мобильной библиотеке МТС. Первые 3 дня –бесплатно.

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

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

The Elephant in the Brain, by Kevin Simler, Robin Hanson

Эта книга пока не переведена, но у нас снова есть спойлер!


Хорошая книга этого года про эволюционную психологию. Она в основном про одну тему – сигналы: делая что-то, люди руководствуются не только осознанием полезности, они делают это для того, чтобы послать другим людям сообщества какой-то сигнал.

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

Если человек водит Toyota Prius, возможно, ему нравится Prius, возможно, он думает, что это полезно для экологии, но кроме того он хочет сказать всем окружающим людям: «Смотрите, я человек, который думает об экологии». И люди вокруг оценивают его уже по-другому.

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

«Хорошее самочувствие: Новая терапия настроений», Дэвид Бернc

Feeling Good: The New Mood Therapy, by David D. Burns


Вместо этой книги мог быть совет «сходите к психотерапевту», потому что это стоит делать всем. Но, если у вас пока не хватает на это моральных сил, почитайте что-нибудь про когнитивную терапию: например, эту книгу.

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

Обзор книги «Хорошее самочувствие» читайте в Мобильной библиотеке МТС. Первые 3 дня – бесплатно.

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

«Ум во благо. От добрых намерений – к эффективному альтруизму», Уильям Макаскилл

Doing Good Better: How Effective Altruism Can Help You Make a Difference, by William MacAskill


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

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

Читайте «Ум во благо. От добрых намерений – к эффективному альтруизму» в Мобильной библиотеке МТС. Стоимость – 1,25 рубля, если прочесть за 5 дней.

Against Empathy: The Case for Rational Compassion, by Paul Bloom

Эта книга пока не переведена.


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

Stubborn Attachments: A Vision for a Society of Free, Prosperous, and Responsible Individuals, by Tyler Cowen

Эта книга пока не переведена.


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

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

Читайте также: