Somehow, three weeks of Recurse Center have already whizzed by. There have certainly been ups and downs, but overall I am amazed and delighted to be part of such a unique pedagogical experiment.
Before coming to RC, I imagined working on multiple medium-sized problems. The anxiety I felt about choosing an appropriately-scoped project that is also “cool enough” has persisted, and I have been unable to commit to any significant projects. Instead I have worked on micro-projects that are simple demos of new concepts I am learning, and though I feel some angst over not having something shiny to show off, I can say that my small projects are absolutely paying off. My code fluency is much better after just three weeks.
I also wanted to grow my mastery of one of the languages I know, but wasn’t ready to decide on which one. As it has turned out, Python is a popular language at RC right now, and there are lots of learners and experts around to pair with and ask questions of. I’m studying Python 3 for the first time, and it has been interesting learning new things about a language I thought I knew well.
Friday is job prep day at RC, and I have been attending the algorithm study group. We have so far looked at greedy algorithms, divide-and-conquer, and dynamic programming. These are still pretty challenging for me to get through, but I have been working on them during the day Friday and then finishing them over the weekend. I am trying to stay focused on algorithms and some missing areas of study in the first half of my batch, and save the interview practicing, resume polishing, and possible job applying for the last half of my time here.
I have a good streak going on exercism.io, which provides me with a programming problem every day. I’m enjoying it more than my previous daily problem sources, Hackerrank and Interview Cake, because it has some nice learning side-effects like testing and a command line interface. Completing my daily exercism has been a great way to warm up, ensure I write code daily, and has given me a place to try out all the new Python concepts and syntaxes I have learned.
I’ve also been lucky to be in batch with people who are excited about test-driven development. TDD was something I had gotten to try out for the first time just before RC, and I was immediately interested in it as a tool for getting through insurmountable-seeming problems. I’ve done a lot more with tests because of exercism.io (which provides pytest cases to pass with each problem), pairing with people working with the Hypothesis testing library, and running a Refucktoring event, which I prepped for by writing lots of tests.
I have been keeping to an ambitious schedule of reading a book a week during RC. I’ve chosen shorter books on topics that support the learning I’ve been doing with mini-projects, pairing, and practice exercises. So far, I’ve read:
- “Growing Object-Oriented Software, Guided by Tests”, Freeman/Pryce
- “Data Science from Scratch”, Grus
- “99 Bottles of OOP: A Practical Guide to Object-Oriented Design”, Metz/Owen
For me, reading at this pace is not practical for learning the material in-depth. I think of it as exposure rather than learning - by reading even at a shallow level, I am being exposed to new concepts and terms that will be useful later. Being familiar with the books I’ve chosen will make them better references as I encounter those topics down the line, and knowing more terms can only help my search queries when I get stuck on a program.
And lastly, the social stuff, which seems to take up as much time as I let it! It is wonderful to be surrounded by smart, interesting people from all over the world. I feel lucky to hang out socially and talk about anything at all, and I love how often the conversation veers towards technical topics. It’s great fun to “geek out” so freely.
Onward to the next three weeks!