Есть такое мнение, что для программирования нужно уметь мыслить как-то по-особому. Отчасти это так, но хитрость в том, что мышление программиста формируется в процессе программирования. Более того, можно научиться думать как программист, ещё не будучи программистом. Сегодня наш рассказ об этом.
Поймите, что такое программирование
С помощью программирования мы можем взаимодействовать с цифровым миром и формировать его. Звучит круто, согласитесь :-) Но если проще, программирование — это передача инструкций компьютеру, то есть способ сказать компьютеру, что делать. Писать эти инструкции нужно таким образом, чтобы компьютер мог их понять и выполнить.
Этот мир чёрно-белый: если инструкция содержит ошибку, программа просто не запустится или сработает не так, как нужно. Если что-то идёт не по плану, не нужно винить компьютер или искать причину в себе. Причина ошибки кроется только в коде — в переданной компьютеру инструкции.
Как только вы поймёте, что программирование — это просто создание чётких логичных инструкций, вас перестанут удивлять шутки о том, как программист пошёл в магазин и по просьбе «Купи хлеб, а если будут яйца, возьми десяток» вернулся с десятью буханками, потому что в магазине были яйца.
Сделайте решение проблем своим хобби
Опытные программисты говорят, что программирование — это, в сущности, решение проблем, то есть вполне приземлённый процесс. Практика решения проблем лежит в основе того, чтобы стать программистом. Именно в процессе решения проблем оттачиваются абстрактное мышление, декомпозиция и творческие навыки.
Попробуйте рассматривать решение проблем как игру или творческое занятие — это поможет сделать процесс увлекательнее и приятнее.
Смотрите на задачи как на совокупность подзадач
Многие задачи программирования включают решение сложных задач. Но программисты не подходят к ним комплексно. Вместо этого они разбивают их на мелкие подзадачи и решают каждую часть независимо. Это упрощает разработку и тестирование.
Такой же подход можно применять к любым повседневным делам. Подумайте о каком-то процессе, через который вы проходите регулярно, например приготовление блюда, уборка дома или оплата счетов. Попробуйте мысленно разбить их на этапы. Это будет напоминать подход «разделяй и властвуй» — метод в программировании, который предполагает разбиение проблем на мелкие задачи.
После того как у вас получился список этапов, проанализируйте их и спросите себя, все ли из них необходимы. Можно ли удалить или объединить какие-то этапы, чтобы процесс стал более эффективным? Такой пошаговый анализ будет напоминать то, как программисты могут решать проблемы в концепции императивного программирования, старейшей из всех. В процессе такого анализа вы сможете подготовиться к решению задач разного масштаба — от простых сценариев до сложных проектов. Совсем как в программировании.
Смотрите на проблемы с разных сторон
Взгляд на проблему с разных сторон поможет вам сформировать комплексное понимание. Каждая новая точка зрения может давать уникальное представление о проблеме, а анализ как можно большего количества таких представлений приводит к более надёжным и универсальным решениям.
В следующий раз, когда вы столкнётесь с какой-то задачей, попробуйте не спешить её выполнять. Вместо этого попробуйте придумать разные подходы к этой задаче, затем проанализируйте их и сравните их плюсы и минусы. Продумывать решения перед их реализацией — важная часть программирования. Вот почему многие программисты создают проектные документы с архитектурой будущего программного решения до того, как фактически начинают писать код.
Погружайтесь в детали
Когда мы заняты решением проблем, мы часто сосредотачиваемся на поставленной задаче, но не вникаем в детали того, как работают какие-то вещи, которые лежат в основе. Это практичный подход, и с его помощью можно быстро выполнять задачи, но он может ограничивать нашу перспективу. Более глубокие знания часто могут помочь нам избежать лишней работы или воспользоваться более простыми методами решения вместо сложных.
Если приложить дополнительные усилия и узнать, что происходит «под капотом», можно придумать более элегантные, эффективные и инновационные решения. Именно этим занимаются программисты, например, при оптимизации кода, чтобы сократить количество кода или сделать так, чтобы программа работала быстрее.