OSSU blog #1 - why and how
I recently committed myself to completing the OSSU computer science cirriculum. This post is the first in (what I hope to be) a series of blog posts that document my journey. This post will address what led me to OSSU, why I decided to document my experience in public, and how I intend to tackle the cirriculum.
Why am I learning computer science?
A little backstory: I always knew that my career would involve playing guitar or messing with computers. The first time I tried college, my plan was to major in guitar performance and minor in computer science. Due to a bunch of immature decisions, this didn't work out and I ended up dropping out and falling into traditional sysadmin IT work. I liked the work I was doing well enough - and I did eventually get a degree in Information Technology from WGU - but this was not my first choice; I like programming far more than taking care of infrastructure.
Fast forward to today: I work for SEM Wealth Management, which has a number of proprietary financial trading systems that have been developed over the better part of 30 years. The trading team at SEM recently decided it was time to rework and modernize some of the technology behind these trading systems. I was asked to participate in this, and so I started brushing up on my Python.
I've been loving it. I'm doing a lot of programming and learning new things every day. However, as I attempt to understand and develop new features for these trading systems, I am finding myself at the edge of my knowledge and abilities pretty regularly. Given that this project involves a lot of math and a lot of programming, it seemed appropriate to finally finish my education in computer science - which, with the benefit of hindsight, is what I should have done the first time I went to college. If anyone in my family is reading this: yes, I admit you were right.
Why OSSU in particular?
I initially considered going back to college to get a formal degree in Computer Science, but the ROI for that at this point in my life is not very high. Formal education is not cheap and there are two main reasons I don't think the value of a CS degree justifies the cost in my current situation:
- I need flexibility. I'm married, have kids, work a full time job, and the closest university is 30 minutes away. I could certainly make it happen, but attending classes and doing school work on a rigid schedule would have a high cost. There are plenty of online degree programs for computer science, which would afford me the flexibility I need, but that brings us to point #2
- I don't need another credential. My singular concern is developing competency. I'm not looking for another job and even if I was, my resume, portfolio, and ability to demonstrate skills and knowledge would matter far more than having another bachelor's degree in a field so closely related to my first one.
With that being said, the credential you get at the end is just one benefit of college. A formal program also gives you a community, accountability, and direct access to instructors (i.e. mentorship). These things are significant. I knew that if I wasn't going to go through a formal CS program I needed to try and replicate the benefits of one as much as possible. I like to think of myself as a self-motivated autodidact, but the truth is that I need to be surrounded both by people who are in the trenches with me and people who have already done what I am doing. I’m not special and need guidance, accountability, and mentorship as much as anyone else.
I started researching what my options were. I initially entertained the idea of doing a bootcamp, but the goals of a bootcamp aren't really aligned with my goals; bootcamps seem to be more like jobs programs than formal education programs. I eventually narrowed my options down to OSSU and Teach Yourself Computer Science, and ultimately OSSU won out because it fit my criteria best. You can read the summary section in the OSSU README for more details, but in short:
- The OSSU cirriculum is intended to meet a formally defined set of guidelines for what makes a good computer science program
- Courses are either self-paced or run multiple times per year.
- Courses usually have homework and assignments. Many of the courses require you to pay to get the assignments graded by a real person, though.
- There is an active OSSU Discord server with channels for specific courses. There are also a few cohort communities that hold weekly check-in meetings. A number of people knowledgeable in CS and the OSSU cirriculum are also hanging out in the server - at least one of them has the server role of "Tutor".
Teach Yourself Computer Science looked good, but unfortunately it lacks a community. As I mentioned above, a community and at least some level of accountability are very important to me.
Why am I blogging about this?
- Accountability. I know that at some point I'm going to want to quit. Maybe it'll be because of some situation in my personal life. Maybe I'll get really frustrated with one of the courses. I won't be on a college campus every day around other motivated people. I'm not paying any money to take these classes. My job isn't on the line if I don't complete the cirriculum. There are plenty of things that could affect my motivation. Blogging about my journey is a way to introduce some accountability - if I tell my friends, family, and Discord community that I will be posting regularly about OSSU, they will expect me to do just that. If I stop, there is a pool of people who could ask "what happened?" and "why did you quit?".
- It helps establish a routine. Not much to say here - establishing routines is a good way to deal with the times that you don't feel motivated.
- I get to practice communicating. It usually takes me a while - far longer than I'd like - to organize my thoughts into something communicable. For example, it's been about 3 weeks since I first started this blog post. I also tend to be overly verbose and the essence of what I'm saying is often lost in the noise. Blogging regularly gives me an opportunity to practice this skill and get better at communicating.
How am I going to tackle the cirriculum?
I think there are three main things here:
- Organizing my time
- Organizing my studies
- Participation in the community
Organizing my time
The OSSU README says you can finish the cirriculum "within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies". I'm going to shoot for 15 hours per week at a minimum. I think this is incredibly realistic, and that's intentional; I don't want to set a lofty goal and then feel unmotivated when I inevitably fail to meet that goal. Here's how I plan to spend my time on OSSU during the week:
- I have permission from my boss to spend up to 1.5 hours per day studying at work since this has a direct effect on my performance and abilities at work. If I can do this 5 days/week, that's 7.5 hours/week.
- Over the course of a normal Monday-Friday outside of work, I can for sure dedicate three 2-hour blocks. That's 6 hours/week.
- Over the course of a normal weekend, I can for sure dedicate two 2-hour blocks. That's 4 hours/week.
This adds up to 17.5 hours/week. This gives me some wiggle room to meet the minimum 15 hours/week even if I can't do 1.5 hours every day at work. If I have a more time during the week or on the weekend, I can get even more done. It is almost certain that I will have more than 4 hours available on the weekends but I am intentionally not including that in my calculations because the goal is simply at least 15 hours per week.
I'll plan the specific time slots on a week-to-week basis. I've got two young kids - not every week is going to look the same.
Organizing my studies
One thing I've realized about myself is that I can only juggle so many things as once (an earth-shattering realization, I know). With this is mind, I'm going to try and stick to one course at a time. If I start to get burned out on a course or need variety for some reason, I'm willing to do two courses in parallel - but no more than that.
I am also intentionally not setting any goals in terms of finishing X courses in Y amount of time. I will finish each course in the amount of time that it takes for me to learn the material - remember, my goal is to learn CS well, not get a credential. That being said, OSSU provides an estimated time to complete each course. I can use these numbers as a benchmark to help assess my competency; if I finish a course faster than the estimated time, that could mean I didn't learn the material deeply. If I'm delayed, that could mean I need some extra guidance.
I'm planning to track all of this in Notion (which I've become rather fond of). I set up a basic table to track the courses I'm working on, and each of the rows in this table contains a page where I can take notes, document progress, or whatever else I need to do.
As a side note, you may notice the first three "courses" that I completed in that table are not actually part of the OSSU cirriculum. I came across these resources a little while ago and they totally changed how I approach learning new things, so I thought it might be a good idea to revisit them before starting OSSU. Here are the links if you're interested:
- https://www.coursera.org/learn/learning-how-to-learn
- https://www.youtube.com/watch?v=Z-zNHHpXoMM
- https://www.youtube.com/watch?v=ukLnPbIffxE
Participation in the community
There are three cohort communities in the OSSU Discord server, each corresponding to an 8-hour period of time, and you're meant to join the cohort that aligns best with the window of time you spend working on OSSU material. I joined the "UTC Night" cohort, which covers 8:00pm - 4:00am UTC (which is currently 4:00pm - 12:00am Eastern Time). Each cohort has a weekly check-in, and I intend to attend these as much as possible.
I think it makes sense to spend a few minutes every day checking in on the Discord channels for my cohort community and the course(s) that I am currently working on. I don't want to be a stranger in these communities, so I'd like to participate in discussions and ask my own questions as much as possible.
As for blogging: I think a cadence of one post every month makes sense. My intuition is that a month is just long enough to 1. give me enough new experiences to write about and 2. not interfere with my studying.
Kudos to you if you're still here - this post is sitting at just about 2,000 words. Hopefully OSSU blog post #2 will be a little shorter!