Как создавать личные проекты (и при этом хорошо все о них помнить несколько месяцев спустя)

0
1273
views

Перевод статьи «How to start a coding project making sure you remember everything months later».

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

Например, если вам нравится разработка мобильных приложений и у вас уже достаточно знаний для создания iOS-приложений на Objective C, вы с большей вероятностью следующим языком для изучения выбираете Swift. После этого вы ищете материалы по Swift онлайн или идете на курсы. У вас все хорошо получается, вы отлично понимаете этот новый язык. Пора создать на нем какой-нибудь проект. И вы строите отличные, красивые, дружественные к пользователю приложения…

Через восемь месяцев вы проходите собеседование для вакансии, которая, как вы знаете, позволит вам расти в iOS-разработке. И вдруг интервьюер задает довольно жестокий вопрос: «Можете ли вы рассказать о том, как вы начинали работу над этим XYZ-проектом? Какими ресурсами вы пользовались?». И тут вы сбиваетесь. Ну, вы знаете, что вы способный разработчик, вы помните, что обращались за помощью к наставнику и искали информацию онлайн, но вот процесс?.. Что можно сказать о процессе? Это все потому, что вы не уделяли достаточного внимания деталям.

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

Как приступить к работе над новым проектом

Обычно работа над проектом делится на три основных этапа:

  1. Поиск идеи проекта.
  2. Планирование проекта.
  3. Создание проекта.

Рассмотрим их по отдельности.

«Ой, у меня вообще нет никаких идей проектов!»

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

Уделяйте время open-source

Просматривайте такие сайты как GitHub, BitBucket и т. п. Open-source это просто кладезь идей.

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

Попробуйте расширить существующий проект

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

Например, вы ежедневно пользуетесь WhatsApp. Есть какая-нибудь функция, которую вы хотели бы видеть в этом приложении, но ее там пока нет? Я вот хотел бы, чтобы там была поддержка анимированных стикеров. Реализуйте такую функцию сами! (Вот черт, я выдал вам бесплатную идею!)

У вас уже есть базовое понимание того, как пишется код приложений для iOS/Android. Теперь исследуйте разные сайты, делая заметки для себя, но идите при этом своим путем. Реализовав какую-нибудь функцию, пускай даже для чужого приложения, вы буквально станете новым человеком!

Улучшите собственный проект

На вашем диске наверняка припасены 5-10 проектов, которые вы создавали под руководством инструктора на курсах или в ходе онлайн-обучения. Чаще всего бывает так: учась на курсах, вы создаете 5-6 достойно выглядящих проектов, но после получения сертификата вы эти проекты просто забрасываете.

А ведь можно взять один из этих проектов и модифицировать его, добавить новый функционал или хотя бы поменять интерфейс, чтобы сделать его более «своим». Если вам кажется, что это недостаточно интересно, попробуйте заменить технический стек проекта. Ха! Вот это будет круто! У вас есть веб-приложение, созданное на React? Сделайте то же самое, но на Svelte. Ищите подходящий стек среди пользующихся спросом в настоящее время (но при этом подходящих для вашего проекта).

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

Не стесняйтесь выходить за рамки и сотрудничать с друзьями

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

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

Спросите у людей, что им нужно

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

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

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

«У меня есть идея. Ура! Что там с планированием?»

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

Технический стек

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

Вы знаете HTML и CSS — их и выбирайте. Превратите дизайн в код. Сумев конвертировать дизайн в рабочий HTML-документ, вы почувствуете себя гораздо увереннее.

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

Эскиз проекта

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

Если вы единственный человек, работающий над проектом, вам придется примерять на себя чужие роли. Когда-то — выступать в качестве дизайнера пользовательского интерфейса, а когда-то — писать код для подключения базы данных к сервису бэкенда вроде Amazon Web Services (AWS).

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

Конечно, вы можете делать эскиз своего приложения не на бумаге, а при помощи специальных программ (сервисов), например, InVision Freehand или Sketch.

Определите, какими внешними библиотеками будете пользоваться, каким будет ваш код

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

Например, если вы создаете приложение с использованием Flutter, стоит записать, какие виджеты вам понадобятся для создания нужного интерфейса. Где вступит в игру RaisedButton? Как обращаться к бэкэнду? Достаточно ли будет стандартного http-пакета? Примите эти решения сейчас.

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

Также после составления списка будущего функционала можно решить, какие архитектурные паттерны вы будете использовать (MVT/MVC). Разделите свой проект на несколько модулей, отделите файлы, касающиеся только UI, от файлов, касающихся только логики. Так вам станет понятно, с чего следует начинать.

Опционально: установите сроки работ

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

Используйте календарь: отметьте день, когда вы начнете работу над проектом, а также постарайтесь определить следующий день, когда продолжите разработку (конечно, эта дата будет меняться неоднократно: все мы несовершенны!). Запишите, сколько времени в день вы хотите посвящать проекту. Поначалу у всех нас бывает сумасшедший энтузиазм, но постепенно он угасает. Это нормально, главное — не забросить все где-то посередине. Запланируйте, над какой частью функционала будете работать на каждой неделе. Что-то вроде «Неделя 1 — реализовать Firebase-логин».

«Отлично, я все спланировал. Можно начинать?»

Да, теперь вы отлично подготовлены, чтобы начать писать свои потрясающие строчки кода. Найдя идею и спланировав весь проект, вы, фактически, уже выполнили половину работы. Видите, насколько важны первые два пункта?

Теперь пора завершить проект.

Держите источники под рукой

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

Если вы состоите в сообществе своего любимого технического стека, присоединитесь к коллегам в группе Slack или Discord — там вы найдете дополнительные источники. Не паникуйте, если вдруг интернет упал или заряд ноутбука кончился: вы все еще можете обратиться к книгам и друзьям. Запишите псевдокод в своем блокноте, а когда связь наладится и ноутбук заработает, создайте уже настоящий код, опираясь на свои записи. Так вы сумеете не потерять время зря!

(ВАЖНО) Не расстраивайтесь, если что-то не получается; продвигайтесь понемногу

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

Когда у вас есть реалистичный график (т. е., без пунктов о программировании по 10-12 часов в день), это очень помогает. Не думайте, что самые лучшие программисты пишут код часами — так никто не может. Нашему мозгу нужен отдых, так что не забывайте отдыхать.

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

Так, пора вашему ноутбуку тоже поработать

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

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

(ВАЖНО) Пишите чистый код

Большинство из нас хорошо пишут код, но сейчас время подойти к делу иначе и задуматься о написании чистого кода. Что это такое? Говоря простым языком, это «код, который легко понять и легко изменять».

Если вам нужны подробности, лучшим источником будет книга Роберта Мартина «Чистый код».

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

Что меня вдохновило на написание этой статьи

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

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

Я решил, что пришла пора проанализировать ситуацию, и спросил себя: «Знаю ли я, что я сделал в этом проекте XYZ, чтобы реализовать функцию ABC? Как я подходил к решению этой задачи?» Ответом было: «Неа, ты знаешь только 40% из этого, а остальное ты забыл, потому что не уделял этому вопросу достаточно внимания». Вот и все.

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

Итоги

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here