Каждая строка кода, которую вы пишете, - это возможность обучения

Введение:

Обучение программированию полезно как в финансовом, так и в интеллектуальном плане. Это то, что вам скажет большинство людей. Хотя это на 100% правда, многие из них не упоминают, что это сложно и потребует много времени, чтобы исправить глупые ошибки и изо всех сил пытаться понять сложные темы. Это не значит, что программирование не для вас. Это вызов, и в каждой части сообщества есть замечательные участники, которые готовы помочь вам (в том числе и я).

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

Каждый создаваемый вами проект не должен менять мир:

Это то, с чем я много боролся. Я пытался придумать, как создать следующий Twitter, Medium, YouTube или Google. Хотя отдельные люди могут написать невероятное программное обеспечение, в действительности большинство продуктов, с которыми мы взаимодействуем ежедневно, создаются командами и компаниями. Команды, в которые входят дизайнеры, бизнес-стратеги, инженеры, маркетологи и многие другие. Если у вас есть потрясающая идея, которую вы хотите реализовать, это нормально, и вам даже рекомендуется обратиться за помощью к надежным друзьям и коллегам. Это ничего не говорит о вашей компетенции. Очень немногие люди способны носить столько шляп одновременно (за исключением Илона Маска), и до некоторой степени мы все стоим на плечах гигантов.

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

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

Не полагайтесь только на учебные пособия:

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

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

Не каждый проект должен быть уникальным:

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

Нет абсолютно ничего плохого в том, чтобы пытаться переделать то, что уже существует. Представьте, сколько вы можете узнать, пытаясь написать код для собственного Instagram. Управление учетными записями пользователей, отслеживание подписчиков и лайков, хранение и обслуживание фотографий из базы данных. Если у вас еще нет этих навыков, стоит попробовать. Не лишайте себя возможности учиться только потому, что проблема уже решена. На самом деле, я многому научился, пытаясь создать клоны таких вещей, как YouTube и Twitter. Идите вперед, найдите приложение или веб-сайт, которые вам нравятся, и попытайтесь воссоздать их с помощью имеющихся у вас навыков. Если вам не хватает необходимого навыка, ну, вы только что обнаружили пробел в своих знаниях, пора восполнить его. Здесь нет проигрыша.

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

Быть программистом не значит быть дизайнером:

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

Я бы порекомендовал разрабатывать свои проекты с помощью UI-фреймворка. Самый популярный - Bootstrap 4. Есть отличное репо на Github, созданное талантливым Брэдом Трэверси. Он создал репозиторий, на который я часто ссылаюсь, когда дело касается создания пользовательского интерфейса для не дизайнеров. Вот ссылка на него на Github. В репо в основном есть 200+ ресурсов, которые можно использовать для проектирования. Большинство из них - бесплатные ресурсы. Он включает в себя такие вещи, как CSS-фреймворки и инструменты прототипирования UI / UX. Он также содержит библиотеки компонентов пользовательского интерфейса для определенных библиотек и фреймворков, таких как ReactJS.

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

Назначение проектам:

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

  1. Поместить в свое портфолио и в свое резюме. Если цель - представить проект потенциальным работодателям. У большинства людей есть отрасль, в которой они хотели бы работать. Для меня это финансы и финтех. Из-за этого идеи проектов, которые я придумываю для демонстрации в своем портфолио, должны каким-то образом иметь отношение к финансам. Это включает в себя такие вещи, как торговые роботы, трекеры портфолио и приложения для составления бюджета. При создании проектов для своего портфолио вы должны, как правило, строить их с помощью технологий, с которыми вы хорошо знакомы, и можете писать чистый код без ошибок.
  2. Чтобы научиться новым навыкам. При обучении программированию используется множество различных концепций, языков и структур. Создание простых и небольших проектов для закрепления этих новых навыков, вероятно, является наиболее частой целью назначения проекта. Например, вы узнаете об async / await в JavaScript, создаете простое приложение, которое асинхронно извлекает данные из API. Затем поиграйте с кодом, чтобы понять, что происходит под капотом.
  3. Для развлечения. Это мой любимый. У вас когда-нибудь возникала случайная идея для приложения или проекта, которая кажется глупой? Что-то вроде сайта Hackertyper. Это может показаться глупым, но вы должны сделать это приложение или веб-сайт. Помните, что написание кода должно приносить удовольствие и волновать вас. Найдите время, чтобы создавать случайные, дурацкие и не связанные между собой вещи.

Решение ваших проблем:

Я большой поклонник объединения финансов и разработки программного обеспечения. Это включает в себя создание таких вещей, как криптовалютные боты, инвестиционные трекеры и приложения для составления бюджета. Эти проекты сложные, но мне это нравится. Что еще более важно, они решают мои проблемы. Криптовалюты торгуют круглосуточно, без выходных. Я человек, которому нужно есть и спать (пока). Решение: напишите программное обеспечение, чтобы делать выбор, который я буду делать, когда не могу торговать перед экраном. Это всего лишь один пример. Это общий совет, который вы будете слышать много, но это хороший совет. Возможно, у вас нет самых больших проблем в мире, но почти гарантировано, что у вас есть некоторые аспекты вашей жизни, которые можно автоматизировать, чтобы упростить. Вам просто нужно сесть и подумать о проблеме. Даже если у вас есть программные решения для решения этих проблем, попробуйте воссоздать их!

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

Вывод:

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