One Year Later

After an interesting series of events, I've circled back to my last blog post where I spoke about leaving my previous life behind (a distant memory now) and starting work at my current position at Code Fellows. Rereading that brought up a lot of old stuff for me, but does beg the question of what's been going on since then? Instead of trying to weave some well-structured narrative about it, I'm going to follow Gary Vee's advice and simply document. So let's document. Another long one folks, so strap in.

The last chronological point in my story was when I had started working at Code Fellows as an Assistant Instructor on the Python course taught by the illustrious Cris Ewing. I had, up to that point, never once used Python for web development. My expertise was in data analysis work using the hedge-witchery that I called my programming skills. I had signed on at the tail end of week 4 of 10 with literally no idea what the students had worked on before that point. My strategy was to make some base assumptions about what they understood, and Google the shit out of any question that anyone asked me (but in such a way that it would teach them without shining too much light on my ignorance).

That actually worked for quite a while! The latter part anyway. That first bit brought up some problems. As always, every assumption that you make is more or less wrong. You may strike in the direction of "correct", but because you're missing the details chances are that when you make an assumption you're about to learn some shit. When I first learned Python way back in 2012, the purpose was for scientific analysis. I learned Python through the numbers, making connections through the math that I knew worked. On top of that, anytime I'd heard about computer science prior to then it was always in the context of math. Hell, at my undergrad CUNY York College the CS and Math departments were one and the same! So, when Cris tasked me with helping to construct a week of data science curriculum for his Python course I figured "they must have already encountered some math with Python, so this should go over pretty well."

Building the curriculum wasn't easy; I had about a week and a half to think of a week's worth of lecture material alongside my fellow Assistant Instructor, Ruth Stern. We had grand ideas of what we'd do. What about Markov-Chain Monte Carlo? That'd be cool, maybe in a week. Ooh what machine learning algorithms should we introduce? They'll get K-Nearest Neighbors pretty quickly, so let's have a few lined up in case they blow through that. How deep into statistics should we go? You know what, we should wait to talk about Bayesian statistics until the end. Make sure they get a solid foundation in the math of it all.

We managed to write and publish it, and so the Monday of week 6 came (week 5 was project week). The strategy was she'd go first and introduce the whole idea-space of Data Science and Machine Learning, then I'd talk about basic statistics, then she'd come in with the first machine learning algorithm based on what I'd talked about. Then every day that followed, I'd introduce some statistics based on what we'd both talked about on the previous day, and she'd build on that with the next algorithm. Simple. Clean. Wrong. Our well-crafted lesson plan went over like a lead balloon. The context that we'd missed was the students had spent the first 4 weeks of instruction learning the basics of Python, with the express purpose of using it for web development. Math was an afterthought for most, though interestingly enough the few that were struggling with web development understood what we were trying to do pretty well. Compound that with a couple other things: I talk at about a mile a minute normally, and even faster when I'm nervous (and I was soooo nervous); Ruth hadn't really taught too much in front of a class and needed practice and work on her analogies; and amongst a small-but-loud subset of the students there was an undercurrent of sexism that brought it all crashing down.

Ruth stopped her lessons after the first day. Shit. The students were half-lost on my own statistics lectures. Double shit. I had to recover, and quickly. Refactor! I no longer had the machine learning algorithms to build from! What I had written before was irrelevant; I had to salvage what I could and spread it more evenly so the students could actually get something from these efforts! Refactor and teach, refactor and teach. That was so hard to do, but set me up well for the next year of working as a part of the Code Fellows team. In the academic world, the curriculum is the curriculum and may get refactored between classes but is generally not adjusted during the course. Here, we pivot as we must, staying consistently alert to needs and progress of the students and tailoring what we teach to what they're able to absorb. Do they need a second day of testing in Django? Fuck it, push today's lecture forward one day and mob-program a new app from scratch. Running out of time in the course to teach a cool algorithm? Cut that shit! When your students are focused on getting something tangible from your course you begin to think less about what you want to teach and become a lot more concerned with what they need to know.

Empathy rules the day here, and the most valuable lesson that I learned in those first few months was to consider what we're doing from the perspective of the student. That wasn't that hard for me to adjust to—I was learning just as they were learning, while they were learning, albeit a little faster because I'm nice like that (and had 3.5 years of coding experience prior to that). I barely retained half of what we taught during that first Python class because I was spending so much time trying to adjust to the new environment. Not just the teaching, but being a part of a company. I was an employee now! At a fairly young company no less, so I was trying to find my solid ground while the company itself was figuring out what worked and what didn't. So, teaching, meetings, teaching, answering questions, grading, meetings, teaching, course done. These students made some baller-ass projects at the end. I only wish that I'd had the coding education that they had.

After the Python course was done, Cris went back to the freelance world as he was wont to do at the time. His flow would be to work as a freelance developer until he got the itch to teach Python again. Then he'd teach at Code Fellows for the 10 weeks and return to the wild. He was far more excited when I signed on than expected (still is. I don't get it, but I'm not going to complain), and while he was gone we chatted about what we wanted the Python course to become. What should we add, remove, or rearrange? What software is being updated that we'll have to incorporate? How about that data science week huh? Haha, yeah, that was crazy. See you in August. Wait what?

After the Python class ended and I got over the Plague that knocked me out for a solid week, I spent my time working on the course. I refactored with intent, refining the things that worked, excising the things that didn't. I was also told that Code Fellows wanted any instructor that would teach full time to be able to teach 201 (basics of HTML, CSS, and vanilla JavaScript), 301 (jQuery, templating, front-end routing, and single-page web applications), and a 401 (the actual Python class I was on) all the way through. So until my next stint as an assistant instructor on an upcoming 201 class, I would have to binge-learn the Code Fellows curriculum. And so the days went: a lil bit of Python, a lil bit of 201, completely ignore 301 because it simply wasn't time yet. More formalizing of the Python curriculum, more working on the 201. Fairly straightforward.

The 201 started and when I wasn't assisting with answering questions and grading, I was working on the Python course. Along the way I got to see the whole process of student growth. When I tell you that oftentimes our students come in with no coding experience, I mean none. We're talking some having never seen their terminal before. We're talking Microsoft Word, internet browsing, and email. After 4 weeks of 201, they don't realize it but they experience about 6 months-worth of developer learning. Then onward into 301, again another 6 months worth of information crammed into their faces in 4 weeks. Some of the same students continued forward, and even though my brain was half-occupied with Pythony things their progress made me extra proud.

The next 401 Python class came around and Cris was a regular customer at Code Fellows again. There was some logistical stuff that was threatening to pull me out of the course about mid-way, but it ended up getting worked out so that we could run the Python curriculum with all the edits and extra notes I'd written. 10 weeks later, those students were off and into the job market again, and I was getting ready for the next round of 201-through-401.

A couple interesting things happened during that time, things that would grow me personally and professionally. This won't be chronologically-ordered. For one, I'd heard tell of this local Meetup group called PuPPy (Puget Sound Programming Python). Every month they'd get together and talk about Python. I ignored it for the first few months because I just wasn't into the meetup scene anymore. Too busy writing curriculum and, you know, sleeping. But Cris was talking at one in September so I figured I'd go and at least support the homie. It also helped that it was being hosted by Code Fellows so we're talking minimal threshold for entry. He had just recently come off of being a keynote speaker at PyCon 2016, and spoke about the value of going to meetups and speaking, as well as at conferences. Hearing him speak, I recalled my own speaking engagements (several, if you want to check the resume for a sampling) and how much fun they were. And how much I learned in developing those talks. And how it felt to be able to give back some of the knowledge I'd hoarded over time. I'd also at the time been in the midst of developing a week-long course in Data Analysis and Visualization with Python and needed to find a way to garner interest. So fuck it, let's write a talk.

I signed up on the PuPPy slack channel and pestered the organizers Alan and Don into letting me speak. I first had grand ideas of doing a full hour, but when they said the hour slots were full for the next few months I got real and signed on for the shorter talks. 8-10 minutes, a couple minutes of questions after, and boom it was done. It went fast and was well-received, but that wasn't the highlight of the October PuPPy meetup for me. Instead, I was struck by just how friendly and welcoming everyone was. Here I was, fresh into a new career teaching something that I was in the process of still learning, giving a talk at a major Python user-group meetup in one of this country's tech hub cities. And it was encouraged! And subsidized! With food! And BOOZE! It was great. From then on, I became an avid advocate for getting my students out to meetups, even giving my most recent cohort of Python students extra credit for just showing up.

About that week-long Python class, holy shit was that difficult. Not just to teach, but to build. I had to assist and learn on the 401 Python class that Cris was teaching, but also learn the upcoming 201 course I was about to give immediately after, and write this curriculum which meant researching to write the curriculum, then actually teach the 201 course full-time while continuing to write the curriculum, and write a short one-night intro to the weeklong course that delivered the higher concepts, and also deliver that one-night course once each week up until the weeklong course started. And also sleep. And eat. And my fiancé became pregnant.

Yeah, somewhere alongside that whirlwind of events we created life. LIFE! And so that journey has begun, with our kid making its big debut this coming June. Interesting thing about becoming a new father, the gravity of it all doesn't really hit you for a while. The first ultrasound you barely see anything. The second one, it becomes more real. The baby moves! Like, it's really there and moving! Shifting about, dodging the ultrasound machine, kicking around inside my lady. The irony of getting into a career developing people and moving forward in life to develop my own person. Until the birth, my most recent cohort of 19 Python students are my crowning achievement. They came up from nothing, fought through the pain, and through it all built career-worthy skills all from my teaching and their own grit. After June, the newest addition to my family will be everything, and damn if I'm not gonna put the full force of my abilities toward making it into the best human that I can manage. Hopefully the stars align and I, we, can make that possible.

And that's been the year. Ups, downs, rapid learning, large life changes, and a motherfucking baby. It's interesting what happens when you're fully invested in the life you live. After all that, I sit poised for the next leaps forward. The legion of students I'll continue to churn out like Model T's, the new connections I'll make personally and professionally while strengthening existing ones, the growth that I'll see in myself. No regrets about making the jump, as hope and intrigue spring forth daily.

Hello, future.