In which I do a retrospective on the first four weeks/my first project

Rona Chong
8 min readSep 4, 2017

Hey strangers and friends! I’m back from the Caribbean and back in the game of ~web development~

My sister’s face in the Caribbean as a symbol of the portent of this return

Well, kind of. As I mentioned last week, I’m supposed to be wrapping up my first web project, kusamochi.me, and moving onto the next project for the next 6 months: a manga reading, publishing and sharing platform which I’m tentatively calling moshi-moji.xyz. That means that now is a good time to stop, do a (WARNING: long) retrospective and think carefully about how to approach my next project.

I figure that I might as well apply the same format I’ve been using for each week to do this retrospective. Y’know, the old, tried n’ true 1. What did I set out to do? 2. What did I end up getting done? 3. Summary of what went well / what was difficult / what I would try differently next time, and 4. One cool thing I learned.

What’s that? You just hopped onto this post and don’t know what I’m talking about?? You’re dying to catch up? Well, here are the previous post(-mortems) in this amazing blog series:

Anyway, without further ado, let’s take a look at how the past month has been.

What did I set out to do?

First and foremost, I wanted to (re)build my personal art blog/site, kusamochi.me, in one month.

Beyond that, I listed a few learning objectives for myself at the beginning of the project:

  1. overall: introduce myself to some basic components to web projects & ramp up to doing bigger web projects
  2. learn about the role and limits of using the popular CMS, Wordpress
  3. practice MVC principles
  4. brush up on using React or Jinja for front-end
  5. become familiar with an example of a nonrelational database (MongoDB) — be able to talk about its limitations and advantages

Some broader goals were to independently implement skills I learned earlier in my Holberton School studies, to gain experience with a few key technologies, to improve at estimating how long things will take me, and to get better at delivering.

What did I end up getting done?

I fell pretty short of getting the website done, since overall I only began implementing the React frontend and didn’t touch the Wordpress backend other than to set it up.

I did get a sense of the main tasks I have to tackle for any web project — probably the biggest success of my stab at kusamochi.me was to prepare me for my next project, moshi-moji.xyz. It would’ve been nice to clear up a bit more, for instance what calls to my chosen backend would look like from my React frontend.

Since I didn’t really touch my Wordpress backend, I didn’t achieve my goal of learning ‘the role and limits of the popular CMS, Wordpress’ as a backend (as opposed to building your own CMS). This was a big urge of mine, and it’s going to keep drawing me back to kusamochi.me until I get my curiosity satisfied.

Practice MVC principles — as I read more about React, I realized that React kind of undermines at least the View-Controller separation, depending on how you see the controller. But I like to think that I had the spirit of MVC in me by intending to define my data models in the form of custom Wordpress content types. In my mind the Wordpress backend is the model layer, and the React frontend converting those models into UI components is the VC layer. I probably have to think more on this one.

Brush up on React — I only coded 6 or so components, but I learned a lot and realized there were many parts to React development that I glossed over the first time I tried using it (with my old personal site rochong.space — no longer hosted, sorry!): the component lifecycle, different options for managing state, ES6 vs JS vs JSX, how React works, etc. So I made good headway with this one. I didn’t use any Jinja though. I’m not sure if Jinja is relevant in combination with React.

Becoming familiar with a nonrelational db like MongoDB — I completely sidestepped this one since Wordpress typically works with relational db’s and I decided to Keep It Simple. There might be potential to use MongoDB with kusamochi.me if I figure out there are resources I want to store and retrieve outside of my Wordpress CMS. But yeah, maybe another time with another project.

Independently implement skills I learned earlier in my Holberton School studies: ✔ mostly related to determining and implementing the architecture of a project on my own

Gain experience with a few key technologies: ✔

Improve at estimating how long things will take me: ✔ I didn’t estimate well but I gained experience from comparing those estimates with my actual outcomes

Get better at delivering: kind of shaky with this one. I should either get better at paring down what is needed to ‘deliver’ the product within the allotted timeframe, or get better at solving new things quickly.

What went well / What was difficult / What I would try differently next time

What went well:

As I’ve mentioned, everyday I felt like I continuously learned new things and I felt really engaged with the process, so that’s a big one for me. I think these web projects set the bar high for how much learning I want to feel like I’m doing everyday and how much I’m enjoying my work.

Honorary mentions: increasing my depth of knowledge about React and getting ramped up for my next project.

What was difficult:

Managing everything I set out to do. My goal was to move very quickly with everything, and only research all of what I needed to know to execute on a task in the first one or two days a week in advance of trying that task. The actual pattern to my development (or deployment) was to figure out I needed to do something that I didn’t yet fully know how to do, stop coding, research how to do that thing for a few hours, try that task out, and often times debug for one-two hours or days afterwards. Then repeat. I like to call this the stop-n-start pattern.

As I’ve mentioned before, I had a hard time anticipating the questions I wanted to ask my mentors till I actually tried that task as well.

Finally, my mentors (mainly Rudy Rigot, Nic Chan, and Johann Kerbrat for this project) are terrific and thoughtful, but I have to admit that it was difficult figuring out what questions to ask them since I didn’t want to lob every question that crossed my mind at them either.

Regarding my development process, here’s a lil tangent:

Interlude: Let’s Gather Some Stats!

(Yes, I realize I’m belaboring this retro a bit! but,) Here’s a breakdown of some stats on how I spent my time in this project:

  • I typically worked 6 days a week, but it wasn’t unusual if one or two of those days were largely spent taking care of other things (errands, or an outing) such that I only worked on kusamochi.me for a few hours on those days. So typically I’m looking at 4–5 days of real productivity/week.
  • For those days I did work, I worked anywhere from 2.5 hours to 9.5 hours (not counting breaks). The average was close to 5 (4.9 hrs).
  • I typically got in at 11 am and left at 7 pm, so ~5 hrs of focused work is a full day’s worth of work.
  • It wasn’t unusual to spend one day or 5 hours per week replying to feedback, consolidating that week’s questions, and sending those questions to my mentors.
  • It also wasn’t unusual to spend 3–4+ hours gathering stats and writing a blog post. Unfortunately (´- ω -`) I do like to elaborate.
  • That adds up to about 2 out of 5 days of productivity spent on outreach to mentors and being meta about the project. Or only 3 days/week really spent researching, coding, and debugging.
  • Just as a wild estimate, I’d say 70% of my time developing or deploying was spent researching something new or debugging something I tried to make it work as intended. (The goal was to only research 1–2 out of 6 days of work, so up to 33% of my time).
  • Out of say, 5–7 tasks I’d assign to myself for that week, I’d complete around 1–2. So I was overestimating how much I’d get done in a week by a bit.
  • Takes about 1 day or 5 hrs to plan what to get done in the next 4 week block.

/end interlude

What I would try differently next time:

Given the above stats, here’s what I think I should do differently next time.

  1. Instead of designating 1–2 days to research at the beginning of each week, designate a 1–2 week research/study period at the beginning of the project. Rely less on tutorials and rely more on more comprehensive guides (books). This should reduce the stop-n-start pattern and also reduce the questions I have as I go along.
  2. Get reviews on pull requests to clear up small coding questions without having to ask them (actually a great idea from my mentor Johann) This will help reduce my psyducking.
  3. Set less aggressive targets. For instance, I’m no longer expecting myself to finish a new iteration of my MVP every 2 weeks. Lol.
  4. When setting a target, estimate how many hours it will take to force myself to think about whether it is a realistic target.
  5. Plan to try things out in advance of when I actually want to get them done, to help me anticipate what questions I need to forward to my mentors.
  6. Try to be more concise with my reflections and communicate only the essentials (there’s some irony here).
  7. Wake up and get to Holberton earlier to increase the hours I work each day.
  8. Expect myself to take time to figure things out as I try them for the first time, and be patient with myself.

That’s what I have in mind for now. And guess what! THERE IS A NEXT TIME, so I can try implementing these ideas right away :D with moshi-moji.xyz. Boom.

One cool thing I learned

Besides this retrospective and planning my next 4 week block, I spent this past week reading 1/2 of O’Reilly’s guide to Learning React (TY Guillaume for letting me borrow this!!). Overall I like this guide quite a bit. It reinforced a lot of what my mentors Nic and Johann started communicating to me about the best practices when it comes to React development, and brought home the point that React is fundamentally a functional programming approach to front-end design.

And now,

Misc links for your browsing pleasure:

--

--