В котором я делаю ретроспективу первых четырех недель/мой первый проект
Эй, незнакомцы и друзья! Я вернулся с Карибских островов и снова в игре ~веб-разработки~
Ну типа. Как я уже упоминал на прошлой неделе, я должен завершить свой первый веб-проект, kusamochi.me, и перейти к следующему проекту на следующие 6 месяцев: платформа для чтения, публикации и обмена мангой, которую я предварительно вызов moshi-moji.xyz. Это означает, что сейчас самое время остановиться, сделать (ВНИМАНИЕ: длинную) ретроспективу и хорошенько подумать о том, как подойти к моему следующему проекту.
Я полагаю, что мог бы также применить тот же формат, который я использовал для каждой недели, чтобы сделать эту ретроспективу. Знаешь, старое, проверенное и верное 1. Что я собирался сделать? 2. Что я в итоге сделал? 3. Краткое изложение того, что прошло хорошо / что было сложно / что я бы попробовал по-другому в следующий раз, и 4. Одна интересная вещь, которую я узнал.
Что это? Вы только что запрыгнули на этот пост и не понимаете, о чем я говорю?? Вы умираете, чтобы наверстать упущенное? Что ж, вот предыдущая запись (-mortems) в этой удивительной серии блогов:
- Давайте создадим веб-приложение! Серия блогов тех, кто начинает свой путь веб-разработки
- Давайте создадим веб-приложение! 2 неделя из 30
- Давайте создадим веб-приложение! 3 неделя из 30
- Давайте создадим веб-приложение! Издание Lo-Fi / Неделя 4 из 30
В любом случае, без лишних слов, давайте посмотрим, как прошел прошедший месяц.
Что я собирался делать?
Прежде всего, я хотел (пере)создать свой личный художественный блог/сайт kusamochi.me за один месяц.
Кроме того, в начале проекта я поставил перед собой несколько целей обучения:
- в целом: познакомиться с некоторыми основными компонентами веб-проектов и перейти к более крупным веб-проектам
- узнать о роли и ограничениях использования популярной CMS Wordpress
- применять принципы MVC
- освежить в памяти использование React или Jinja для внешнего интерфейса
- познакомитесь с примером нереляционной базы данных (MongoDB) — сможете рассказать о ее ограничениях и преимуществах
Некоторые более широкие цели заключались в том, чтобы самостоятельно реализовать навыки, которые я получил ранее во время учебы в Холбертонской школе, получить опыт работы с несколькими ключевыми технологиями, улучшить оценку того, сколько времени мне потребуется, и улучшить свои результаты.
Что я в итоге сделал?
Мне не удалось сделать веб-сайт, так как в целом я только начал реализовывать интерфейс React и не трогал серверную часть Wordpress, кроме как настроить ее.
Я получил представление об основных задачах, которые я должен решить для любого веб-проекта — возможно, самым большим успехом моей работы с kusamochi.me была подготовка к моему следующему проекту, moshi-moji.xyz. Было бы неплохо прояснить немного больше, например, как вызовы к выбранному мной бэкенду будут выглядеть из моего интерфейса React.
Поскольку я на самом деле не касался своего бэкэнда Wordpress, я не достиг своей цели изучения «роли и ограничений популярной CMS Wordpress» в качестве бэкэнда (в отличие от создания собственной CMS). Это было моим большим желанием, и оно будет продолжать возвращать меня на kusamochi.me, пока я не удовлетворю свое любопытство.
Практикуйте принципы MVC — по мере того, как я читал больше о React, я понял, что React как минимум подрывает разделение представления и контроллера, в зависимости от того, как вы видите контроллер. Но мне нравится думать, что во мне был дух MVC, когда я намеревался определить свои модели данных в виде пользовательских типов контента Wordpress. На мой взгляд, серверная часть Wordpress — это уровень модели, а внешний интерфейс React, преобразующий эти модели в компоненты пользовательского интерфейса, — это уровень VC. Наверное, мне нужно больше думать об этом.
Освежить в памяти React — я закодировал только 6 или около того компонентов, но я многому научился и понял, что в разработке React есть много моментов, которые я упустил из виду при первой попытке использовать его (с моим старым личным сайтом rochong.space — больше не размещается, извините!): жизненный цикл компонентов, различные варианты управления состоянием, ES6, JS и JSX, как работает React и т. д. Так что я хорошо продвинулся в этом. Хотя я не использовал Jinja. Я не уверен, что Jinja актуален в сочетании с React.
Познакомившись с нереляционной базой данных, такой как MongoDB, я полностью обошел ее, поскольку Wordpress обычно работает с реляционной базой данных, и я решил не усложнять ее. Возможно, у меня есть потенциал для использования MongoDB с kusamochi.me, если я выясню, что есть ресурсы, которые я хочу хранить и извлекать за пределами моей CMS Wordpress. Но да, может быть, в другой раз с другим проектом.
Самостоятельно применять навыки, которые я получил ранее во время учебы в Holberton School: ✔ в основном связанные с определением и реализацией архитектуры проекта самостоятельно
Получите опыт работы с несколькими ключевыми технологиями: ✔
Улучшить оценку того, сколько времени у меня займет: ✔ Я плохо оценивал, но я приобрел опыт, сравнивая эти оценки с моими фактическими результатами.
Станьте лучше в доставке: немного шатко с этим. Я должен либо лучше урезать то, что необходимо для «доставки» продукта в отведенные сроки, либо лучше быстро решать новые задачи.
Что прошло хорошо / Что было сложно / Что я бы попробовал по-другому в следующий раз
Что прошло хорошо:
Как я уже упоминал, каждый день я чувствовал, что постоянно узнаю что-то новое, и я чувствовал себя действительно вовлеченным в процесс, так что это очень важно для меня. Я думаю, что эти веб-проекты устанавливают высокую планку того, сколько я хочу учиться, как будто я делаю это каждый день, и насколько я наслаждаюсь своей работой.
Почетные упоминания: увеличение глубины моих знаний о React и подготовка к моему следующему проекту.
Что было сложно:
Управление всем, что я намеревался сделать. Моя цель состояла в том, чтобы двигаться очень быстро со всем и исследовать только то, что мне нужно знать, чтобы выполнить задачу в первые один или два дня в неделю до того, как приступить к этой задаче. Фактическая модель моей разработки (или развертывания) заключалась в том, чтобы выяснить, что мне нужно сделать что-то, что я еще не полностью знал, как сделать, прекратить кодирование, изучить, как это сделать в течение нескольких часов, попробовать эту задачу, и часто отлаживают в течение одного-двух часов или дней после этого. Затем повторите. Мне нравится называть это паттерном стоп-н-старт.
Как я уже упоминал ранее, мне было трудно предвидеть вопросы, которые я хотел задать своим наставникам, пока я действительно не попробовал это задание.
Наконец, мои наставники (в основном Руди Риго, Ник Чен и Иоганн Кербрат для этого проекта) потрясающие и вдумчивые, но я должен признать, что мне было трудно понять, какие вопросы им задать, поскольку я не хотел забрасывать каждый вопрос. это тоже пришло мне в голову.
Что касается моего процесса разработки, вот небольшое дополнение:
Интерлюдия: давайте соберем статистику!
(Да, я понимаю, что немного утрирую это ретро! Но,) Вот разбивка некоторых статистических данных о том, как я провел свое время в этом проекте:
- Обычно я работал 6 дней в неделю, но не было ничего необычного в том, что один или два из этих дней в основном были потрачены на другие дела (по поручениям или прогулкам), так что я работал на kusamochi.me всего несколько часов на эти дни. Так что обычно я рассчитываю на 4–5 дней реальной продуктивности в неделю.
- В те дни я действительно работал, я работал где-то от 2,5 часов до 9,5 часов (не считая перерывов). Среднее значение было близко к 5 (4,9 часа).
- Обычно я приходил в 11 утра и уходил в 7 вечера, так что примерно 5 часов сосредоточенной работы — это работа на целый день.
- Не было ничего необычного в том, чтобы тратить один день или 5 часов в неделю, отвечая на отзывы, объединяя вопросы этой недели и отправляя эти вопросы своим наставникам.
- Также не было ничего необычного в том, чтобы тратить 3–4 часа на сбор статистики и написание сообщения в блоге. К сожалению (´- ω-`) я люблю уточнять.
- В сумме это составляет примерно 2 из 5 продуктивных дней, потраченных на общение с наставниками и обсуждение проекта. Или только 3 дня в неделю действительно тратятся на исследования, кодирование и отладку.
- По приблизительным подсчетам, я бы сказал, что 70% моего времени на разработку или развертывание было потрачено на исследование чего-то нового или отладку чего-то, что я пытался заставить это работать, как задумано. (Цель состояла в том, чтобы исследовать только 1–2 из 6 рабочих дней, то есть до 33% моего времени).
- Из 5–7 задач, которые я назначал себе на эту неделю, я выполнял около 1–2. Так что я немного переоценил, сколько я сделаю за неделю.
- Требуется около 1 дня или 5 часов, чтобы спланировать, что нужно сделать в течение следующих 4 недель.
/конец интерлюдии
Что бы я попробовал по-другому в следующий раз:
Учитывая вышеприведенную статистику, вот что, я думаю, мне следует сделать по-другому в следующий раз.
- Вместо того, чтобы выделять 1–2 дня на исследование в начале каждой недели, назначьте 1–2 недели на исследования/исследования в начале проекта. Меньше полагайтесь на учебники и больше полагайтесь на более полные руководства (книги). Это должно уменьшить шаблон «стоп-и-старт», а также уменьшить количество вопросов, которые у меня возникают по ходу дела.
- Получайте отзывы о запросах на вытягивание, чтобы прояснить небольшие вопросы по кодированию, не задавая их (на самом деле отличная идея от моего наставника Йохана). Это поможет уменьшить мой psyducing.
- Установите менее агрессивные цели. Например, я больше не ожидаю, что буду заканчивать новую итерацию моего MVP каждые 2 недели. Ржу не могу.
- При постановке цели оцените, сколько часов потребуется, чтобы заставить себя подумать о том, реалистична ли эта цель.
- Планируйте попробовать что-то заранее, когда я действительно захочу это сделать, чтобы помочь мне предвидеть, какие вопросы мне нужно направить своим наставникам.
- Постарайтесь быть более лаконичным в своих размышлениях и сообщайте только самое необходимое (здесь есть некоторая ирония).
- Вставай и приезжай в Холбертон пораньше, чтобы увеличить количество часов, которые я работаю каждый день.
- Ожидайте, что мне потребуется время, чтобы разобраться во всем, что я пробую в первый раз, и будьте терпеливы к себе.
Это то, что я имею в виду на данный момент. И угадайте, что! ЕСТЬ СЛЕДУЮЩИЙ РАЗ, поэтому я могу попробовать реализовать эти идеи прямо сейчас :D с помощью moshi-moji.xyz. Бум.
Я узнал одну интересную вещь
Помимо этой ретроспективы и планирования моего следующего 4-недельного блока, я провел прошедшую неделю, читая половину руководства О’Рейли по Learning React (TY Guillaume за то, что дал мне это позаимствовать!!). В целом, мне очень нравится это руководство. Это укрепило многое из того, что мои наставники Ник и Йоханн начали рассказывать мне о передовых методах разработки React, и убедило меня в том, что React — это, по сути, подход функционального программирования к дизайну внешнего интерфейса.
И сейчас,
Разные ссылки для вашего удовольствия просмотра:
- Мой твиттер: https://twitter.com/ronachng
- Мой репозиторий Github для kusamochi: https://github.com/ronachong/kusamochi/commits/master
- Документ My Paper для мозгового штурма/планирования моих веб-проектов:
https://paper.dropbox.com/doc/ Different-ideas-mnesHVM2GY2Fwb05iN2fW#:uid=068404766484791842467358&h2=old-outlining: - Документ My Paper для регистрации моих решений для kusamochi:
https://paper.dropbox.com/doc/decision-log-H00ajXRHHb0lOa8QsGYbA - Документ My Paper для регистрации вопросов о разработке для kusamochi:
https://paper.dropbox.com/doc/question-log-CRfyaDZup88hQE20pQjRX - Мой документ Paper для регистрации ресурсов, которые я просматриваю во время исследования:
https://paper.dropbox.com/doc/resource-question-concept-log-rOGTRd8hygvwJ4NCGglpm - Пример безголового WP с открытым исходным кодом ustwo: https://github.com/ustwo/ustwo.com-frontend
- Пошаговая инструкция моего наставника Йоханна по созданию приложения React:
https://github.com/ethaMont/holberton_school_workshop/tree/slides