Somehow our lives are defined both by periods of consistent progress and by dramatic transitions. I want to write about a major personal transition, but more on that later.
You may be wondering, what is the transition that brought us here? I'm not referring to existence or anything, I just mean this Substack. Was your email address sold to a surprisingly long-winded spammer? Did you sign up for it in a transitional moment of weakness? No, loyal reader, it was the kind of transition known as a migration: I was paying a substantial amount of money to maintain a mailing list which I emailed infrequently, whereas Substack figured out how to store 11,154 rows in a database for much less than $50/month, so here we are. You may have signed up via teachyourselfcs.com or the Bradfield website. If you'd rather not receive these, that's totally fine by me! There's a link to unsubscribe at the bottom.
Career transitions
My job since 2015 has been to teach computer science, mostly to those who transitioned into software engineering from another field.
Software as an industry is fantastic and dysfunctional mostly for the same reason: we don’t have a professional body to maintain any kind of standard of professional practice. We're simply not a profession. If you want to be a civil engineer in the US, you need to complete an accredited degree program then pursue certification overseen by the American Society of Civil Engineers. To be a software engineer, you need to grind Leetcode until you can performatively solve "medium" difficulty dynamic programming problems. Or, you can just start calling yourself a software engineer, maybe make a portfolio website that says "I'm not a charlatan, I even did a Rust tutorial", and start sending out resumes.
Sometimes I wonder if our software systems might be of a higher standard if we had more gatekeeping. But then I think about doctors and lawyers and public school teachers and snap out of my daydream. Even if we could improve software quality a little by decertifying the occasional reprobate (I see you "serverless" folk avoiding eye contact right now) it would undermine what's really great about what we do: practically anybody can learn to write software, given enough motivation, and practically any of those people can bring a lot of value to the world, or at least their families and 401K balances, by doing so.
I was never in the business of helping people with this particular transition, but I was fortunate to see it happening. While I was CTO of Vida Health, my friend Myles was teaching at one of the first coding bootcamps, and it was he who convinced me that a lot of talented people were entering the industry this way. I hired one of them (Omar), helped him learn a little computer science on the job, then quit to spend the next 8 years helping other non-traditionally educated engineers do the same. I've sometimes described this as joining my students for a few steps on their journeys. I would love to take credit for their sometimes spectacular success, but if anything I show up right after they've done the hard work.
Your transitions
I'm constantly inspired by the leaps of faith that my students have taken. Omar was an ophthalmologist, in Spain, with kids. While sure, he's the only former Spanish ophthalmologist dad turned Senior Staff Software Engineer I'm aware of, many others left equally comfortable career tracks to find their respective callings in software. Among those who worked their way into web development, many ventured out once more to challenging specialty areas like performance engineering, platform and infrastructure work, security, even quantum computing.
Perhaps there's a degree of survivorship bias, but I struggle to think of cases where somebody took too much of a risk, quit their job too soon, or was too ambitious with their next set of career goals. When somebody asks me for advice on a potential transition like this, I'm always honest about what it might take: are they ready, for instance, to learn the math required for that machine learning researcher role they’re interested in? But I also point out: even when you fail to achieve your goal, you are likely to have ended up somewhere better than where you started. Very few people invest in themselves once they have established, well-paying careers. Almost nobody studies in their 30s. If you take some time off to work through some textbooks or tinker with a programming project or two, you're almost certain to end up ahead.
So why are career risks so underrated, particularly in computing? Frankly, I think many of us feel like things are too good to be true, that we don't want to risk our enviable, cushy L-whatever positions for something indulgent like the thrill of a major technical challenge.
But life is short. You should learn about what excites you and direct your productive energy to where it can have the most impact.
My transition
After 8 years of running the Bradfield School of Computer Science, I have decided to send it a SIGTSTP. While I may SIGCONT it at some point, my current plan is to stop teaching live classes once the current cohort graduates in a few months.
It feels strange to stop something that’s running so well: each year the curriculum is better, the brand is stronger, we teach more effectively and students get more value. So why stop now?
Simply put, I feel acutely aware that life is short, and would like to learn about what excites me and direct my productive energy where I can have the most impact. Most notably, CS Primer is my ongoing attempt to adapt all of the best parts of live Bradfield classes to a more affordable self-paced format. My goal with Bradfield was to be the best place for self-taught engineers to learn foundational, systems-focused computer science. While many students felt that Bradfield achieved precisely that, the structure of live small group instruction would always make it inaccessible to many of the people who would benefit the most. So I would like to dedicate myself to CS Primer, and then to other educational projects that could operate at a broader scale.
That said, it has been a tremendous privilege to share a few steps on the journey of each individual student we have had. A little over 1,000 of you took our classes; many of you investing hundreds of hours of your time. I have always felt honoured by your commitment, and I hope we did it justice. The hardest thing about this decision is knowing how much I’ll miss being in the classroom with you all, having fun while we learn a little computer science together.
To the instructors who taught alongside me over the years: Brian Spiering, Haseeb Qureshi, Tim Olshansky, Tom Alcorn, Tom Ballinger, Tyler Bettilyon, Xavier Shay… a heartfelt thank you for your commitment to the cause, and for everything you did for your students. An extra special thank you to Myles Byrne, without whom this all simply wouldn’t have started, and to Elliott Jin, my fellow traveler to the end. I am forever grateful.
Awkward transitions
Oh, umm, while you’re here:
If you’re a former Bradfield student and would like to leave a short reflection on the website in memoriam, please write it here. I thought this would be a nice way to leave the website, and also leave a good impression with any recruiters or hiring managers who see Bradfield on a resume.
I'll be in the US in June, July and August. My final Bradfield class will be in person, and likely open to everybody. I'll also host an alumni trip to the Computer History Museum in Mountain View. Stay tuned here for updates, if you'd like to join.
Charlie and I did a number of podcast interviews since my last email, including with some amazing folk like Thorsten Ball, Zach Latta, Brandon Hendrickson, Brit Cruise, Linda Liukas, Jimmy Soni and Jon Gertner, and the man, myth, legend and Bradfield alum Richie Artoul
Speaking of Richie, he announced their $20M fundraise and plans for world domination with WarpStream. Go, man, go!
I wrote a little thing highlighting some project ideas that I'd be excited to collaborate on if somebody came to me with a lot of their own energy.
For those who haven't checked in on CS Primer for a while, I now have almost all the content up for Computer Systems, Computer Networking, Operating Systems and Algorithms and Data Structures. This is around the halfway point for content, so I'll be launching the general availability release soon after somehow a year in paid beta!
Home schooling is going great. My 3yo is learning to read now in much the same way that my 5yo did at the same age, and I'm having a lot of fun doing science projects with both of them. I highly recommend home schooling if you can, even if it's just an hour in the morning or afternoon around school. If you're taking a more active role in your kids education, and would like to join a little Discord server of others, let me know.
The best nonfiction book I've read recently was Origins by Lewis Dartnell, the author of one of my all time favorites The Knowledge. On the fiction side, it was Last and First Men, a mind altering work spanning 2 billion years. Both very highly recommended.
I'm spending my study energy at the moment on Molecular Biology of the Cell, mostly out of long suppressed fascination, but also with half a notion that I might do some work in computational biology some day. If you are or know of somebody who might give me a little mentorship in this area, please let me know! 🙏
That's all for now. Thank you everyone 🫡. Back to your irregular schedule of computer science education and tech news that matters, after this.
Thank you, Oz for your work. I've been inspired by teachyourselfcs.com and have done some of the courses there. Looking forward to spending more time on CSPrimer!