Занимаясь программированием уже почти 5 лет, я натыкался на многих людей, которые просто спрашивали меня, почему именно я выбрал этот путь? Почему профессия программиста так раскручена, как могут сказать некоторые? Люди, которые раньше не пробовали настоящее программирование, могут не понять, что особенного в простом вводе на компьютер различных математических, логических и других выражений. Изучение синтаксиса (грамматики языка программирования) на самом деле не так сложно. Базовая логика тоже не так уж сложна. Итак, в чем дело?

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

Обзор

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

Хорошо зарекомендовавший себя навык решения проблем может оказаться действительно полезным даже в реальной жизни. Это позволяет вам спокойно подходить и с легкостью преодолевать свои трудности. Вместо того, чтобы выбирать не всегда работающий метод грубой силы, вы можете пойти другим путем. Просто разделите проблему на более мелкие и решайте их одну за другой. Я пытаюсь сказать здесь, что решение проблем — это способность выбирать правильный метод для правильной трудности. Делая это, вы можете позже решить это намного проще. Кроме того, важно, как вы решаете свои проблемы. Вы можете сделать это хорошо, или… немного хуже. Каждый шаг важен!

В программировании это становится еще более заметным. Здесь вы должны использовать различные структуры, инструменты, методы и концепции для достижения желаемого результата. Возьмем, к примеру, веб-сайт — ваш конечный результат. Проблема? — создание его. И тут начинается весь процесс…

Достижение результата

Мозговой штурм

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

  • По страницам — мы разделяем проблему нашего веб-сайта на более мелкие, связанные со страницей. В этом сценарии мы создадим наш веб-сайт страница за страницей, завершив одну и продолжив работу над следующей. Кроме того, если у нас есть страницы с похожими макетами, например. сообщения в блоге, мы также можем разделить наш сайт по так называемым шаблонам страниц.
  • По коду — мы также можем разделить нашу проблему со стороны кода. Здесь мы перечисляем наши задачи как различные части нашего кода, а не как страницы. Например, сначала мы создаем базовый макет каждой страницы с помощью HTML и CSS. Затем мы включаем правильную логику JS в каждую из этих страниц. Наконец, мы можем закончить с обработкой событий — кликов, прикосновений и т. д.

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

Решение

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

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

  • Дизайн — очень важен, когда речь идет о визуальных продуктах. Вы должны предоставить пользователю наилучшие возможности, лучше, чем другие. Дизайн также оказывает большое влияние на первое впечатление пользователя. Естественно, если что-то радует глаз, тем больше на это хочется смотреть. 👀
  • Производительность — еще один аспект взаимодействия с пользователем. Это тесно связано с программированием и во многом определяет ваш успех. Ваш продукт должен соответствовать требованиям пользователей с сопоставимой или лучшей производительностью, чем у конкурентов. Тем не менее, вы должны помнить одну вещь: чрезмерная оптимизация — это корень всех зол!
  • Архитектура — код вашего продукта также должен быть хорошо выполнен. Хорошая архитектура может быть действительно полезна, когда дело доходит до последующего управления и расширения вашего продукта. Но достижение таких результатов может быть трудным и сложным — особенно в современном мире, когда тысячи строк кода являются абсолютным минимумом.
  • Стиль кода. Стиль кода тесно связан с архитектурой программного обеспечения и играет важную роль, когда речь идет о удобочитаемости. Код, который вы пишете, должен быть простым для понимания не только вами и потенциальными коллегами, но и всеми другими программистами. Только тогда вы можете сказать, что написали действительно читаемый код. Кстати, это очень, очень важно, когда дело доходит до OSS. Наличие строго определенных правил стиля кода действительно может быть благословением.
  • API — особенно важно при разработке инструмента программирования, например. библиотека или фреймворк. Добавление хорошего порядка и структуры в ваш API может сделать его более простым и приятным для конечных пользователей. Здесь снова важна архитектура, так как API, скорее всего, будет напоминать ее за пределами вашего продукта.

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

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

Конечный продукт

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

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

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

Обучение решению проблем

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

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

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

Как правило, вы должны знать, как использовать все функции языка программирования, API и другие инструменты для решения ваших конкретная проблема. Многие новички в программировании могут быстро выучить синтаксис, но толком не знают, что делать дальше. Они могут программировать только при следовании учебнику или другой форме руководства. Они понимают, что означает и делает данный код, но не знают, как написать что-то самостоятельно. Лично я (и, возможно, многие другие программисты) уже был на этом этапе. И я знаю, как это неловко. Просто поверьте на слово — если вы продолжите программировать, это чувство скоро уйдет. Шутки в сторону! Я не знаю, когда именно это случилось со мной, но могу на 100% подтвердить это утверждение. Но опять же, чтобы достичь этого, вы должны продолжать приходить и не бояться пробовать что-то отличное от учебников — это действительно того стоит!

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

Открытый финал

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

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

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

Почтовые кредиты

Надеюсь, вам понравилось это логическое и теоретическое, но также и немного философское чтение. Если вы считаете, что оно того стоит, подумайте о том, чтобы поделиться им с другими программистами, веб-разработчиками и людьми, которые всегда спрашивают вас, в чем заключается ваша работа. Не стесняйтесь поделиться своим мнением в разделе комментариев ниже и оставить свое мнение, чтобы сообщить мне, что вы думаете. Кроме того, следите за мной в Твиттере и на моей странице в Facebook для получения дополнительной информации. А пока получайте удовольствие от решения проблем!