Критическое мышление — это способность объективно анализировать информацию, идеи и ситуации, не принимая их на веру. Оно предполагает умение задавать вопросы, выявлять предпосылки, оценивать доказательства и рассматривать проблему с разных точек зрения. Это системный подход к мышлению, при котором человек выявляет логические связи и противоречия. Самое то, что нужно в программировании.
Критическое мышление помогает принимать обоснованные решения, избегать ошибок и манипуляций. Оно требует дисциплины ума: готовности подвергать сомнению даже собственные убеждения, признавать ограниченность своего знания и корректировать выводы на основе новых данных.
В общем, сегодня поразгоняем о том, почему этот навык особенно важен в ИТ.
Критическое мышление: ваш личный детектор ерунды
Критическое мышление в программировании — это способность не верить себе на слово. Это внутренний голос, который заставляет вас сомневаться в каждой строчке кода, каждом допущении и каждом «очевидном» решении. Это не паранойя — это профессиональная дисциплина.
Представьте, что ваш код — это не просто инструкция для компьютера, а подробное письмо вашему будущему я или другому разработчику. Критическое мышление — это искусство предвидеть все вопросы, которые возникнут у того, кто будет читать это письмо через полгода. «А что здесь вообще происходит? Почему именно так? Что делать, если придут не те данные? Как это сломать?»
Вам постоянно приходится балансировать между «это должно работать» и «кажется, что-то тут не так». Опытный разработчик знает: если кажется, что всё идеально, — скорее всего, вы чего-то не учли. Конечно, есть много ситуаций, когда в простых проектах код действительно идеальный и устойчивый, но такое встречается в среднем не так часто, как хотелось бы.
Критическое мышление — это то, что отличает новичка, пишущего код, от профессионала, проектирующего решения. Новичок радуется, что код работает. Профессионал постоянно проверяет, не сломается ли он при малейшем отклонении от идеального сценария. Это мучительно, утомительно, но именно это спасает проекты от катастрофических провалов в самый неподходящий момент.
Этот навык важнее знания любого фреймворка. Фреймворки устаревают, а способность трезво оценивать свои решения остаётся с вами на всю карьеру.
Ваш код — это диалог с кем-то из будущего (возможно, с самим собой)
Вы пришли в IT за крутыми технологиями, большими зарплатами и возможностью творить. А обнаружили, что ваша главная работа — не писать код, а думать. Иногда до головной боли.
Поздравляем, вы по адресу, всё верно. Именно так всё и работает.
Настоящий программист отличается от новичка не знанием модных фреймворков, а способностью смотреть на свой код как злой, придирчивый ревьюер. Критическое мышление — это ваш внутренний скептик, который постоянно задаёт неудобные вопросы:
- А что, если пользователь введёт буквы вместо цифр?
- А не сломается ли это, если данных будет в сто раз больше?
- Мы точно поняли задачу или просто бросились делать то, что привыкли?
Представьте ситуацию: вы написали красивую функцию, которая отлично работает. Вы её протестировали — вроде бы всё ок. Вы запускаете её на реальных данных, а она падает. Почему? Потому что вы не учли, что в базе данных может быть null, а не всегда красивые цифры. Ваше будущее я потратит три часа на поиск этой ошибки и мысленно попросит вас больше так не делать.
Ещё вариант — когда просто копируешь код из StackOwerflow, он работает и вроде можно успокоиться. Но если есть критическое мышление, то уже начинаешь задавать себе вопросы: а все ли переменные и функции отсюда мне нужны, нет ли лишнего в коде? Всё ли тут ок с методами, приватностью и работой с памятью? Иногда может оказаться, что нет.
Критическое мышление — это не про паранойю. Это про то, чтобы предсказывать будущее. Ваш код — это диалог с тем, кто будет его читать, исправлять и расширять завтра, через месяц или через год. И этот человек — вы сами.
Если вам кажется, что и так сойдёт, — значит, точно не сойдёт. Проверьте ещё раз.
Если код работает — не факт, что с ним всё в порядке
Каждый программист знает это сладкое чувство, когда код наконец-то скомпилировался и даже прошёл пару простых тестов. Рука так и тянется к кнопке деплоя. Особенно в пятницу вечером.
Именно в этот момент и должно срабатывать критическое мышление.
Вместо выдоха облегчения представьте, что произойдёт, если ваше решение увидят тысячи пользователей. Что, если они начнут вводить не числа, а эмодзи? Что, если сервер вернёт ошибку вместо данных? Что, если ваше гениальное решение конфликтует с другой частью системы? Понимаем, сложные вопросы, особенно вечером в пятницу, когда надо уже домой, а анонс обновления уже прошёл. Но без этого расти как специалисту будет сложно.
Допустим, вы пишете код, который обрабатывает заказы. И по какой-то внутренней причине в корзине не может быть больше 10 товаров. Ну не предусмотрено системой, интернет-магазин и менеджеры за этим следят.
Вы всё сделали, проверили на тестовых данных от 0 до 10 включительно — всё работает, можно закрывать таску. Но вдруг система при заказе ошибётся и товаров будет 11? Или из-за ошибки на стороне фронта вдруг добавится лишний товар в корзину? Критическое мышление здесь — это когда рассматриваешь не только возможные сценарии, но и невозможные, а потом проверяешь, отрабатывает ли их код или нет.
Критическое мышление заставляет вас играть в адвоката дьявола против самого себя. Вы должны придумать все возможные сценарии, при которых ваш код может сломаться. Это похоже на проверку безопасности замка: вы пытаетесь взломать его всеми способами, чтобы найти уязвимости до того, как это сделает кто-то другой.
Вместо вопроса «Работает ли это?» вы учитесь задавать другие вопросы: «При каких условиях это перестанет работать?», «Как система поведёт себя при ошибке?», «Что произойдёт, если этот компонент получит не те данные?» Это и есть разница между начинающим разработчиком и профессионалом. Начинающий радуется, что код работает. Опытный — ищет, где он может сломаться.
Именно этот подход спасает от ночных вызовов на работу и ASAP-сообщений в чате в выходные. Помните: деплой в пятницу — это как экстремальный вид спорта. Можно выжить, но лучше не рисковать.
Как прокачать критическое мышление (самый важный раздел статьи)
Развивать критическое мышление — это как качать мышцы. Нужны регулярные упражнения и правильная техника. Поначалу будет сложно и будет ощущение типа «зачем я специально усложняю себе жизнь», но если втянетесь — удивитесь, как можно было жить без этого раньше.
Начните с метода «Пять почему». Когда сталкиваетесь с проблемой, не ограничивайтесь поверхностным ответом. Спросите «почему» пять раз подряд. Например, приложение вдруг упало и не работает как нужно:
- Почему? «Потому что сервер вернул ошибку».
- Почему? «Потому что не хватило памяти».
- Почему? «Потому что запрос был слишком тяжёлым».
- Почему? «Потому что мы не предусмотрели фильтрацию данных».
- Почему? «Потому что не подумали о таком сценарии». Теперь вы видите коренную причину, а не симптом.
Приучитесь к презумпции виновности вашего кода. Когда что-то ломается, первым делом предполагайте, что проблема в вашей части системы, а не в чужой. Это не самобичевание, а эффективная стратегия поиска ошибок. Чужой код вы не можете исправить сразу, а свой — можете.
Умение сказать «я не знаю» — это суперсила, а не слабость. Гораздо продуктивнее признать незнание и разобраться, чем делать вид, что всё понятно, и допускать ошибки. Задавайте вопросы коллегам, ищите информацию, предлагайте варианты решений — но не притворяйтесь всезнайкой, опытные сеньоры и тимлиды это видят сразу.
Научитесь подвергать сомнению требования. Если вам ставят задачу, не спешите сразу её выполнять. Спросите: «Какую проблему мы решаем?», «Почему это важно?», «Есть ли более простой способ?» Иногда оказывается, что задача основана на устаревших предпосылках или её можно решить проще и эффективнее.
Анализируйте чужие ошибки — и свои. Когда видите баг в коде коллеги, не ограничивайтесь исправлением. Подумайте: «Почему это произошло?», «Как можно было это предотвратить?», «Что в процессе разработки позволило этой ошибке вообще появиться?» То же самое делайте со своими ошибками — без самокритики, с целью улучшить процесс.
Задачка со звёздочкой: практикуйте «ретроспективу мышления». После завершения задачи уделите пять минут, чтобы проанализировать: «Где я мог ошибиться?», «Что я упустил?», «Что можно улучшить в следующий раз?» Эта привычка поможет находить слабые места до того, как они станут проблемами.
И главное — развивайте любопытство. Интересуйтесь не только тем, как это работает, но и тем, почему это работает именно так, какие есть альтернативы, в чём недостатки этого подхода и всё такое. Чем больше вы знаете о контексте, тем лучше ваши решения.
Критическое мышление — это не врождённый талант, а навык. Его можно и нужно развивать. Начните с малого: со следующей задачи задайте себе на один вопрос больше, чем обычно. Со временем это войдёт в привычку. И тогда вы будете не просто писать код, а создавать надёжные решения.
Бонус для читателей
Если вам интересно погрузиться в мир ИТ и при этом немного сэкономить, держите наш промокод на курсы Практикума. Он даст вам скидку при оплате, поможет с льготной ипотекой и даст безлимит на маркетплейсах. Ладно, окей, это просто скидка, без остального, но хорошая.
Вам слово
Приходите к нам в соцсети поделиться своим мнением о статье и почитать, что пишут другие. А ещё там выходит дополнительный контент, которого нет на сайте — шпаргалки, опросы и разная дурка. В общем, вот тележка, вот ВК — велком!