Week 7 1/2: Ascending the stack
I think I finally figured out what I want my Recurse batch to be about
Image credit: Flickr (yes, it’s silly, but it made me laugh, and that’s important sometimes!)
I was thinking about Recurse this morning, and something recurred in my mind that Rachel, one of the staff members, said: “do what you’re physically excited about”. (I’ve heard other people say it at Recurse, too.)
Ok, that seems like a good guideline. But what if I can’t think of anything I feel that way about? I started this batch with only two vague ideas: I wanted to learn more functional programming, and I wanted to learn more frontend programming. And I felt those were interesting ideas to pursue, but I didn’t feel physically excited about them. Same for my app idea, of parsing IMDB data. It was interesting, and something that was useful to me personally, but again, I didn’t feel actually physically excited by that either.
Over my time at Recurse, I’ve noticed that the things I do feel physically excited about so far are:
Sharing knowledge and experience about coding, encouraging other people in their coding journey, and having others do all that with me too
Learning about category theory in the context of programming
Learning about CSS (which ironically I haven’t done yet at Recurse!)
And that dovetailed well with a comment I made to another Recurser 4 or 5 weeks ago: “It seems like lots of Recursers want to go down the technology stack, but over my lifetime of coding, I’ve mostly wanted to go up the technology stack instead.” Strangely, even though I said it to someone out loud, I didn’t really process my own comment fully at the time. (This happens to me a lot when I’m writing too — sometimes I won’t fully understand something I’ve written for days, months, or even years after!)
In combination, both of these realizations came together for me in an interesting way: each of the things I’ve listed above are based in programming (at least how I’m pursuing them), but each is far enough away from programming that some people might debate whether or not they’re actually even programming! You can even kind of think of learning category theory as the hardcore version of my desire to learn more functional programming, and CSS as the hardcore version of learning more about frontend programming (how much closer to the user can you get?) And the other bullet is helping people with their programming problems, which is again as high-level as you can get, in a way.
And after a lot of thought, I think these feelings are because I’m personally tired of being further down the stack, programming-wise. I’ve done plenty of work in lower-level environments: programming in double-digit numbers of assembly languages, helping with small programs on graphing calculators or Pebble watches or breadboards or emulated MIPS machines, teaching data structures from the ground up, learning all kinds of low-level graphics/networking/whatever at the game dev program I used to work at, etc. etc. etc.
I’m no expert at any of those things, mind you, because mostly I didn’t do those things professionally. I don’t want to pretend that I’m less interested in those topics because I’m super smart or super knowledgeable about them or whatever. But they’ve been around me all my life, and I know lots of low-level programming things at an OK level now. And it’s important to say that I still find all those things interesting and useful; if I listen to myself and think about what I want, I can feel that I still want to be a backend developer, which certainly can be lower down the stack than many other kinds of programming, at least at times.
But do I feel physically excited by those lower-level things right now? No, at least not currently. And for my time at Recurse, at least, I want that to be happening.
So what does that mean for the rest of my time in my batch? I’ll use the start / stop / continue breakdown I’ve often seen used in retrospectives:
Start:
Do some CSS training (one front-end Recurser recommended this link about CSS Grid, and another recommended this paid course)
Get my IMDB app into a state where I can do CSS fun with it as soon as possible
Stop:
Crafting Interpreters — sorry, new CI crew! I like the book a lot, but I don’t love it, so I have to make the hard decision to put this down for now. Nothing against the book or any of you, which are all amazing! It’s just not what I want most right now.
Continue:
Pairing and chatting with people
Learning category theory
It’s interesting that it took me so long to figure all this out, even though I think about coding, and my relationship to it, a lot. But I guess listening to your inner voice is pretty hard, even with a lot of practice. I’m really glad the supportive environment of Recurse has made it possible for me to make that happen, almost two months later.
Also, as usual, I should have listened to my favorite guide about programming, because it emphasizes this thing in its very first paragraph:
To be a good programmer is difficult and noble. The hardest part of making real a collective vision of a software project is dealing with one's coworkers and customers. Writing computer programs is important and takes great intelligence and skill. But it is really child's play compared to everything else that a good programmer must do to make a software system that succeeds for both the customer and myriad colleagues for whom she is partially responsible.
I’m still learning from it after all these years.
(PS: Yes, I intentionally quoted it as “she” above. I’ve been reading the guide long enough to remember what it used to look like.)
Next time: Hopefully a dispatch from higher up the stack!