Skip to content

Instantly share code, notes, and snippets.

@rouxcaesar
Last active June 25, 2024 17:11
Show Gist options
  • Save rouxcaesar/9eced2261681efc268789f3fb2c8f958 to your computer and use it in GitHub Desktop.
Save rouxcaesar/9eced2261681efc268789f3fb2c8f958 to your computer and use it in GitHub Desktop.
Thoughts on Bradfield

My Thoughts on Bradfield

I've been asked by several people over time about my experience with the classes offered by Bradfield, and thought that I should save some future keystrokes by writing up a short gist for future reference. Hopefully this gist will be useful for others who are considering Bradfield and wondering it is worth it. My intended audience is primarily Launch School students who have completed the Core program and likely also Capstone, but the majority of this gist will be applicable to anyone who is a working/experienced software engineer.

Since late 2019, I've taken 4 short courses from the Bradfield School of Computer Science and in 2021 I enrolled in their Computer Science Intensive (CSI) program1. Overall, I've found the courses and CSI to be an excellent opportunity to grown my technical skills and broaden my knowledge of CS topics.

The courses I completed were:

  • Computer Architecture: The Hardware/Software Interface
  • Computer Networks
  • Practical Data Structures
  • Operating Systems

For CSI, at the time of writing this gist (May 2021) I've completed or in-progess the following courses:

  • Introduction to Systems
  • Advanced Programming

Overall, I've loved the courses and have learned a ton from them. I think they've made me a better software engineer and will enable me to work in higher impact roles in the near future. In the following sections, I will layout my own deliberations for doing Bradfield courses and CSI, my thoughts on Bradfield vs. getting a Bachelor's/Masters degree, and who may find Bradfield useful.

Why Bradfield?

After completing the Core + Capstone programs at Launch School and landing at job at DigitalOcean, I found myself wondering how I could continue to grow my technical skills as a software engineer. And fortunately, there was a lot to learn at my new job including Golang, gRPC, microservices, distributed systems, performance testing, and virtualization. But after some time, I had found my rhythm at work and wanted to push myself to learn CS topics in order to open doors to higher impact roles in the future, whether at DigitalOcean or elsewhere.

I spent a lot of time looking at Bachelors and Master's degrees in CS and found most of them to be unsuited for me. Many of the Bachelors programs would take about 3 years to complete and required me to complete prerequisites like Discrete Math or a Fundamental Computing course before even being considered for the program. Additionally, it would have cost me tens of thousands of dollars for the degree when I'm still paying off my student loans from my first college degree and that didn't seem like a financially sound decision.

I also considered applying to an online Masters program like OMSCS2 at Georgia Tech or at UT Austin3 (which would have been cool since it's my alma mater and they have a good CS program). But the UT Austin program was brand new at the time and I didn't like the idea of joining it without knowing any outcomes or reflections from students, and OMSCS had mixed feedback from students because many of the courses were only taught by TAs and study groups were actively discouraged so that instructors could "grade everyone accordingly".

At the end of the day, I realized that what I wanted was something similar to Launch School: a program that was flexible and online so that it could fit into my work schedule while also being affordable. And that's when I found Bradfield and started taking courses with them.

What I found was that Bradfield hit most of the marks for me. I had engaging instructors who were able to provide a lot of context and practical applications for CS topics so that I wasn't just learning a lot of theory (another issue with lots of CS college programs). And while there was plenty of coursework to complete, there was never the stress and consequences of missed/late homework or exams worth huge chunks of a course grade. If you couldn't finish something before a lecture, you can just circle back afterward. Additionally, all the lectures were recorded which made it even more flexible if sudden work or life events came up that forced me to miss a class.

That said, the courses are challenging and pushed me to learn A LOT. The goal of Bradfield is to have students struggle, not so much that they can't progress but enough that they are forced out of their comfort zones.

College degree (Bachelors/Masters in CS) vs. Bradfield

I've already touched on my deliberations between a college degree in CS vs. Bradfield, so now I want to focus on why I think Bradfield (especially CSI) is in some ways superior. Also, the founder and head instructor of Bradfield Oz Nova wrote up his thoughts on this topic on his personal website4 which I found convincing.

First, the cost is unbeatable in my opinion. If you just take the six "core CS courses" of computer architecture, data structures, computer networks, operating systems, databases, and distributed systems that you can find in any CS degree, you'll only end up paying $1800 * 6 = $10,800. This is so much better than what most Bachelor's degrees will cost you5 and while some Master's degrees can cost less6 you still need to factor into account the cost of prerequisite courses prior to admission, application fees, and additional exams you may need to take like the GRE or GMAT. And on the note of costs, many software jobs will offer an education reimbursement benefit that you can use on either a degree or Bradfield so be sure to use it if you have it!

Which brings me to my second point, Bradfield is likely going to save you a ton of time. On top of avoiding all the admissions work, exam prep and completion, and prerequisite courses, you'll also only take the CS courses you want rather than additional courses in a college degree that you may not need or want to take. Bradfield doesn't require you to have any prerequisites and will recommend resources for you to get up to speed on certain topics. There are some short courses that have a recommended sequence, but it's not set in stone. You can realistically finish all the Bradfield short courses in 1 - 1.5 years if you time it right or complete the entirety of the CSI program in just 14 months.

My third point on this topic is around accreditation and the fact that Bradfield doesn't offer any accreditation for either it's short courses or the CSI program. I understand the desire for something that signifies completing the courses/program that can be shown to employers and it's sometimes hard to sign up for something without a material payoff. But the software industry as a whole doesn't really care that much about accreditation so long as you have the experience, knowledge, and skills needed for a role. Sure, there are some specific circumstances in which a degree can give you an advantage like landing a job when you have zero experience in software or if you're aiming for a mainly research role on an academic topic like AI, quantum computing, or cutting edge technologies (and even those have possibilities for people without a degree).

But outside of those areas, my experience in talking with hiring managers, senior engineers, and companies in the software industry is that accreditation isn't a silver bullet and that sometimes it's even a weak signal in that the candidate may not have enough practical experience. We've interviewed several candidates at DO in my time there that had Masters degrees who performed much lower than Launch School students who have finished Core + Capstone.

Additionally, if you the reader are a graduate of Launch School then I have to ask you this: if accreditation is a serious point for you then why did you end up committing to the Launch School Core (and possibly Capstone) program when they also don't offer any accreditation? It's likely because the Launch School process works, has demonstrated compelling outcomes, and the software industry doesn't require accreditation as a hard requirement. The same can be said for Bradfield in my opinion, and while they may not broadcast their outcomes like Launch School due to their business model there are plenty of Bradfield students who have landed great roles at Google, Facebook/Oculus, Lyft, and several exciting startups after several short courses or while in the middle of the CSI program.

In comparison to degree programs which can often focus too much on theory, Bradfield introduces and drives it's content from a practical, project driven perspective which ensures that you grow stronger as a programmer and system designer with each course. Just about every class assignment has some program to write or improve with examples including:

  • writing a simple shell from scratch
  • writing a DNS client
  • writing a network packet parser
  • making your own implementation of a mutex or memory allocator
  • exploring performance improvements in programs involving packing cache lines, writing compact data structures, reducing cache misses
  • solving exercises involving debugging concurrency bugs
  • writing x86_64 assembly programs to understand how a CPU executes the machine level instructions of programs
  • exploring the implementations of data structures used for storage and retrieval in production technologies like RocksDB or Postgres
  • and many more!

Should you enroll in Bradfield?

This question is one that requires a good amount of self-reflection on what your career and personal goals are with software engineering. While I love my experiences with Bradfield, it's not going to be right for everyone and it's important that you know why you want to enroll before you jump all in.

My perspective is that you should consider Bradfield if you want to:

  • learn more of the nitty gritty on how computer systems work under the hood
  • gain knowledge and experience that will help you land higher impact roles on teams that work lower in the software stack (infrastructure, databases, operating systems, compilers, networking, etc.)
  • gain an awareness of how computers really work out of curiosity
  • explore other areas of software/CS that you can't at your current job to see what else is out there

On the other hand, if you are interested in working higher up the stack, entering the mangement track, or specializing in a very select group of technologies, then Bradfield may not be the right fit for you.

I chose to enroll in Bradfield because I wanted to learn more about CS topics and gain an awareness of what other kinds of work I could do in the software industry. While there is an argument to be made regarding focusing on the skills and tech you use at work to make yourself more marketable with experience, it's also essential to broaden your knowledge and skillset to open even more opportunities in the industry.

And after doing a few courses, I discovered that I absolutely wanted to direct my career toward working on higher impact, more technically challenging roles. Examples of these would be working on large scale distributed systems at Google/Facebook, improving the networking performance of the entire fleet of hypervisors at DigitalOcean, building databases at CockroachDB or TimescaleDB, working on the CPython fork (named Cinder) at Instagram to enable engineers to write more performanat code, or building a new computer at Oxide Computer Company.

All of these roles require a deep understanding of certain CS topics that Bradfield would provide me. And for a case study of a Bradfield student who did make such a transition, check out this article7. Additionally, here is a gist from a student in the first cohort of the CSI program who gave an early review of the program8 (note that his cohort had a slightly different course sequence than mine or what's on the CSI website).

My advice to the reader is this: if you are even slightly interested in Bradfield then start by taking one of the short courses. See if it's a good fit for you before committing to an entire slew of courses or enrolling in the CSI program. In many ways it's similar to Launch School's benefit of "making it easy to leave if the fit isn't right". It's so much less costly to take one short course and judge your experience rather than committing to a college degree program.

When should I enroll in a Bradfield course?

My recommendation is to get a few years of experience working as a software engineer before taking a Bradfield course. That said, perhaps you're in a position where you don't feel challenged enough at work, you have the available time, and you've been itching to learn more about CS, in which case taking a short course might be fine.

Looking back, I think I jumped the gun a bit and started taking courses too early (about 6 months after starting my job). I was still in the learning phase of my new job and needed to devote my time and mental energy fully to succeeding at my job. This made it harder to balance my job with the first few Bradfield courses I took, and I wasn't able to learn as much as I wanted.

Since then, I took a long break of ~5-6 months from Bradfield and focused on my job, and I got to the point where I knew all of the internal tools, technologies, architecture, and processes needed for my role. I started becoming a subject matter expert for my team's projects and was able to solve problems and answer questions from other teams more quickly.

At that point, I had stretched my brain and mental energy to greater limits and felt capable of diving back into Bradfield, at which point I applied for and was accepted into the second cohort of CSI.

From this experience, I would highly advise anyone to first get some working experience before taking courses at Bradfield. If you're a recent Launch School graduate, get settled into their current role and build a reputation as a solid engineer that your team and company can count on. This most likely will take about 1-2 years which may seem like a long time but trust me, it'll fly by before you know it.

Will Bradfield courses help me become a senior engineer?

This is an interesting question and one I've gone back and forth on many times. One of my biggest reasons for starting to take Bradfield classes in the first place was to elevate my technical skills and move my career toward becoming a senior engineer. My understanding at the time was that my technical skills were what would signal to my manager and the company whether I was "ready for promotion".

But since that time, I've discovered that technical skills will truly only get you so far. While they are important, what I've seen is that the engineers who get promoted to senior roles were the ones who also demonstrated excellent soft skills, project management, and the ability to "manage up" or essentially "manage their manager" (which is another interesting topic that I would be happy to discuss outside this gist). This at least is the case at DigitalOcean, and could very well differ from other companies.

I've met several senior engineers at DO who showed that they knew less about practical CS topics than myself after some Bradfield courses, and yet because of their other skills and reputation as solid engineers who could deliver they had been promoted again and again. So while there is a technical bar that needs to be met for senior roles, it's likely lower than you may think! Remember to grow your other, non-technical skills and keep in mind that oftentimes the ones who get promoted are the ones who simply asked for it and keep pushing (not in an aggressive way, but they didn't let their managers forget).

How manageable are the courses/CSI along with a full time job?

The courses do require a good amount of time and I usually aimed for at least 10 hours per week outside of the lectures which were twice a week for 1.5 hrs. I typically work 40-50 hrs a week for my job, so it can be a little tough at times if you have other committments outside of work. Then again, it's a great opportunity to work on your time management!

As for CSI, I aim for about 15 - 20 hrs per week because there is more content and practical problems to complete for each class. I don’t always get to finish all the prework for each class and typically have to circle back on things on the weekends or during the week breaks between modules. My advice is that if you can commit to ~1.5 - 2 hrs of studying most nights of the week after/before your work hours, and a half/full day on the weekend you should be good.

What about going through teachyourselfcs.com on my own instead?

This is a totally viable option and if it suits your learning style then give it a try! I made some inroads on this plan myself in 2019/2020 when I was first trying out Bradfield and made the following conclusions:

  • It's very hard for me to maintain a consistent schedule of study and practice with this independent study. As much as I wanted to make progress, life and work always found a way to upend this plan and because it's completely independent it's very easy to "put studying off until tomorrow" and then weeks or months have gone by. But by paying for courses and having homework due in a few days, I'm now on the hook to make progress and that makes me more committed to finishing the work. It's also a much easier sell to your significant others, friends, and family when it's a class you've paid for.
  • The additional context, feedback, and ability to ask questions with an instructor is extremely valuable and adds a lot to the entire learning experience. They help out on guiding you on the right path, avoiding rabbitholes that are more distractions than helpful, and force you to actually know what you've learned. It's so much better to ask a question face-to-face with an expert than Googling for hours.
  • Studying along can be very isolating, but when you're in a group it's a lot more exciting and you get to collaborate together that makes the journey more enjoyable and easier to stick with.

What if I tried to "weave together" the short courses into something similar to CSI, would that be possible?

Update: As of 2022, Bradfield has taken a pause of offering their short courses. They do offer a new, fuller length course titled Software Systems: Behind the Abstractions that is meant to serve as a shorter survey of topics found in CSI and to give students a chance to dip their toes into the topics before committing to CSI.

I think it’s certainly possible to weave the short courses into something like CSI, but there will be some notable differences:

  • CSI offers two courses that are not currently available on their own: Advanced Programming and System Design. This may not matter that much to you, but so far I’ve found Advanced Programming to be a great follow-up to applying more of the Intro to Systems course content.
  • Because CSI has a set sequence of courses, knowledge and experience can be built layer by layer. With the a la carte courses, it can vary as each course will have students with different backgrounds and knowledge of the material and there isn’t a built in assumption that all the students have completed a previous, relevant Bradfield course.
  • CSI offers a final project that you could use to leverage into new roles/jobs depending on what you choose to build.
  • I personally value being part of a cohort that learns together and pushes each other to grow and deepen our understanding over the span of a year.
  • With CSI, you know that after a year you’ll have completed all the courses. With the short courses, it could take longer or the ordering might be less optimal depending on when courses are offered. This also puts the burden on you to stay fresh on relevant content during any long stretch between courses (for example, Architecture into Operating Systems into Databases).

That said, if your schedule or budget makes the short courses over a longer span of time more manageable then I'd recommend trying it. The Bradfield instructors would be happy to help you with sequencing the courses and finding ways to stay fresh between them.

Final Thoughts

I hope this gist helped answer many of the questions you may have about Bradfield. While it may not work for everyone, I'm grateful that such a resource exists to help software engineers continue to grow their skills and network with other like-minded folks. Having more options for advancing our education outside of traditional routes is a great thing and I think Bradfield has an excellent take on it.

My DMs on the Launch School Slack or LinkedIn are open to anyone who has further questions that might be too personal to post as a comment below, all I ask is that you give this gist a thorough read first :-)

Footnotes

  1. https://bradfieldcs.com/csi/
  2. https://omscs.gatech.edu/
  3. https://www.cs.utexas.edu/graduate-program/masters-program/msonline
  4. https://ozwrites.com/masters/
  5. https://www.geteducated.com/online-college-ratings-and-rankings/best-online-bachelors-in-computer-science/
  6. https://www.geteducated.com/online-college-ratings-and-rankings/best-buy-lists/online-masters-computer-science-it-degree/
  7. https://medium.com/swlh/from-coding-bootcamp-graduate-to-building-distributed-databases-29acbb723d8
  8. https://gist.github.com/RP-3/67c77a81274ba6ad4db9e27af8d014cc
@clalexni
Copy link

clalexni commented Mar 28, 2022

Hello! I am also interested in applying for the CSI program. Have you completed the program? Any update thoughts about it? Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment