OSSU blog #4
Where have I been?
I last posted about OSSU on January 10th of this year. Almost four months ago. I wish I could say that in that time I was tearing through courses and Getting Stuff Done™ but the truth is:
It took me over four months to finish a single course. I publicly committed to ~15 hours/week of study and a blog post every month. Obviously neither of these happened, and I'm pretty embarrassed about it. Some contributing factors to this:
- At work, I had some significant projects pop up. Among them was dealing with the fallout from the LastPass breach (we moved to 1Password), a SharePoint migration, and another vendor incident. Between these things, other projects, and the normal day-to-day stuff, much of the the time I had set aside for OSSU ended up used to get other stuff done.
- I had some pretty serious stuff come up in my personal life. I'm not going to go into detail, but OSSU took a backseat for a while.
- Between the work stuff and personal stuff, there were two periods of about a month where I did not work on the How to Code: Complex Data course at all. Consequently, when I got back into the course I had to spend some time re-familiarizing myself with the course content. I think I went through chapter 12 of the course two or three times.
Moving forward I'm making the following adjustments to my routine:
- Shooting for 10 hours every week (instead of 15). This was something I had considered after my last blog post too. It is honestly just a more realistic goal right now.
- A blog post after every course (instead of every month). This is a more natural place to take a short break and I'm typically in a more reflective mood after completing something anyway.
How to Code: Complex Data
I really enjoyed this course. I said something similar at the end of the previous course, but I really do understand the functional programming hype now. I have plenty more to learn, but this course challenged me in ways that were sometimes frustrating, but also fun and rewarding.
There's a project where you build a Sudoku solver. It sounds like a daunting project at first, but if you break the problem down into small chunks and follow the recipes, it kind of just comes together. There were many times during this course where things felt magical and reminded me of why I like programming so much in the first place.
While I do understand functional programming a little better now, it is still pretty foreign to me. This was, honestly, a positive thing. In OSSU blog #3 I said: "I have a tendency to just sit down and start working on the problem at hand, without much effort to plan things out first". While the first How to Code course offered strong incentives to think hard about the problem you were solving before you solve it, this course made it impossible to do otherwise - at least for me.
Learning about abstract functions was also a big deal. I've written plenty of javascript and python, but my understanding of map() was limited to: "everyone says I should use map() if I need to call the same function on all elements in a list". After completing this course not only do I have a much better understanding of what map() does and why I should use it, but I have gained that same understanding for abstract functions in general. Functions like map(), filter(), and sum() no longer seem like black magic to me.
I also feel like I have a much better grasp on recursion in general. Even as I started this course it still felt like magic. I'm sure the next course (Programming Languages, Part A) will be humbling, but for now I'm enjoying it.
Similar to the abstract functions revelation, I also know what people mean when they talk about trees and graphs as data structures. It wasn't quite the brain-melting experience I had as when abstract functions clicked with me, but I suspect it'll be at least as important later on.
Discord
The OSSU community on Discord was really helpful while I took this course. I had some people check my work on a few assignments and I can't overstate how beneficial it is to get constructive feedback while you're learning something new.
My attendance at the weekly check-ins has still been pretty abysmal. Stuff in my personal life has calmed down a bit so my attendance should get better. I am also considering a switch to another cohort with a different weekly check-in time.
What's next?
I'm diving right into Programming Languages, Part A with much excitement. Hopefully another blog post in 5-6 weeks!