Thursday, December 24, 2015

My "touchy-feely" takeaways

I recently took the weekend version of Stanford's "touchy feely class", COM 19. I had heard good/intriguing things about it from my colleagues, and in the spirit of trying anything communication-related once, my partner and I signed up.

The class revolves around this thing called a "T group", which is a group of 12 strangers sitting in a circle for hours, staring at each other, and talking only about things actually happening there and then. What do strangers have to talk about? A lot, as it turns out. We all feel and think things when we're in new situations, and we tried to express those honest feelings while in the circle (thanks to the help of a feelings vocab sheet in our laps).

Before and during the process, we come up with our personal learning goals, and we discuss those with our coaching group. These were mine:

  • I often resort to humor in tense situations. I wanted to be able to recognize the emotions behind that humor and express those instead.
  • I tend to avoid conflict, and if there is conflict, my instinct is to run and hide. My goal was to not run into the bathroom, metaphorical or actual.
  • I rush to judgment of others and am quick to point out the ways they're violating the rules. That's been a goal for me generally in life this year, so I made it a goal for T group.
  • I realized during the class that I didn't handle it well when another person expressed appreciation for me (I deflected or tried to hide), so I made a goal of learning to receive appreciation.
  • Similarly, I realized I wasn't giving as much appreciation as others, so I made it a goal to practice giving appreciation.

I definitely felt like I progressed in my goals, some more than others. I did find myself getting into "teacher mode" a lot, which often happens in classroom-like situations, and I wasn't as emotionally engaged in that teacher mode. I did take an awful lot of notes about the ways that facilitators worded things, though. Here are a few of my favorite phrasings:

Describing our feelings/needs:
  • “I noticed… I feel… Pause.”
  • “The story that I tell myself is…”
  • “My experience of you…”
  • “My wish for you….”
Discovering how others feel:
  • “I’m sensing that you… Is that right?”
  • “I’m hearing that you…”
  • “How did my feedback land with you?”
  • “How do you feel right now?”
  • “How did it feel when I said that?”
  • “Can I check in with you to see how you’re feeling?”
  • “Do you feel complete with our conversation?”
Responding to conflicts:
  • “It’s not about the mess, it’s about cleaning it up. Let’s celebrate it!”
  • “I see that she is trying to make a repair, and I want to recognize that.”
  • “I see that you’re going into a shamehole, and my wish for you is to not go there.”

I found it particularly helpful that my partner and I both signed up. They put partners in separate groups, so that we can get touchy-feely without the baggage of a relationship. However, we met up during meals, exchanged notes, and often challenged each other to go further in our learning goals. After the workshop, we were able to communicate better because we were both so used to expressing feelings, and we expected that of each other.

I recommend checking out the class if you're interested in communication and honest expression. It will likely be a very different experience for you than for me, but it will certainly be an experience either way!

Wednesday, December 23, 2015

Combining coding and teaching into a career

 I had a chat yesterday with a college junior who’s facing a conundrum: she realizes she loves computer science and teaching, and she’s not sure how she should combine those into a career. I both hope and think that there are many others thinking about that, so I thought I’d share my thoughts here.

First, let me go into the ways that I’ve personally managed to combine coding and teaching in my decade-long career.

Combo #1: Developer relations

Don’t know what that is? Most people don’t, and I definitely didn’t know what it was in college.  It’s a job where you spend your time helping third party developers understand how to use your company’s API - like by writing documentation, making demos, giving talks, and answering forum questions.

I struggled in my senior year of college with trying to find a job that appealed to my mix of interests, but when I happened upon a description of that role, it sounded like a perfect fit. And it was pretty damn cool. I spent nearly half a decade at Google, helping developers with the Google Maps API, Google Wave API, and other fun APIs like spreadsheets, gadgets, and even a 3d chat client.

Photo of Pamela speaking about Google Maps API
Giving a talk on sweet ways to visualize data with the Google Maps API

In what ways wasn’t the role perfect for me? Well, I didn’t love that I was spending my time promoting proprietary technologies. I wanted to give talks about open-source technologies and not feel limited to just Google’s. I also missed having in-the-flesh students, like I’d had as a TA in college. That was when I started a GirlDevelopIt chapter, which helped me with that need. (Tip: a job doesn’t always have to fill all your needs).

Combo #2: Engineering in EdTech

After Google, my next job was as one of the first frontend engineers at Coursera, a MOOC company. I treated it very much as an experiment, because I didn’t know if I’d enjoy a job were coding was my role 24/7 (or 30/7, since it was a startup).

As it turns out, it was a lot of fun. I really loved working on features to improve the learning experience for students, like better forums and clearer grading policies. I also loved working with professors and hearing their ideas for more engaging courses.

Screenshot of Coursera.org pages
Some of the student-facing features I coded in my year at Coursera

I was definitely missing teaching though. I got a bit of my urges out in a few ways: by giving talks about the technologies I used at Coursera (like Backbone, a hot topic then), by writing blog posts and documentation, by delivering internal trainings, and by continuing to teach GirlDevelopIt workshops.

I eventually got too jealous of the professors that I was working with: I didn’t want to just help them get their courses online, I wanted to try putting courses online myself. It just seemed so damn fun!

Combo #3: Teaching Online

That’s when I started eyeing Khan Academy. They didn’t actually have a job listed on the careers site for teaching coding, but that didn’t stop me (and shouldn’t stop you, either). I emailed them with a proposal of what my job role would be, went through a custom interview process that was 50% coding and 50% content creation, and began my job a few weeks after.

For the past few years, I’ve spent my time at KA creating courses and coding the platform that delivers those courses. Oh, plus my favorite part: interacting online with our community of creative coders, ages 7–70.

Screenshot of Khan Academy coding course webpages
The talk-throughs, challenges, and random programs that I make while teaching for Khan Academy

I still give workshops on the side, for GirlDevelopIt, CoderDojo, and GirlsWhoCode, but now I get to use my KA curriculum to power those workshops — so my full-time job and my on-the-side teaching gigs are very well aligned. I learn a lot from using my online content in physical settings, so I even consider those workshops to be a part of my job.

So, is there anything missing? As it turns out, yes. I still miss being inside a classroom with students that I see every day over a long period of time. I got close to that when I taught for GirlsWhoCode, but a 60 minute weekly club isn’t enough time to really get to know the students.

I’m going to look into opportunities for a more classroom-like teaching experience in 2016 - perhaps camps that are many weeks long and all day, or a class that’s several days a week with dedicated students.

What did I learn?

Okay, so I’m not there yet — I haven’t figured out exactly the combination of coding and teaching that I like. And in fact, I haven’t even talked about my attempts to integrate other hobbies - like art, writing, and myriad forms of creativity. But I’m getting closer. Here are a few tips to help you get closer:

  • Reflect on what you like and don’t like. Whenever you try on a new role or hobby, observe what makes you happiest about it, and what makes you saddest, and why. Build up a list so you can remember it for future decision.
  • Don’t feel tied down to a decision. It’s okay to take a wrong turn, like picking a job that you end up not liking as much. If you have a CS background and a good portfolio of your skills, you should probably be able to change jobs more easily than most. In this industry, it’s normal for folks to change jobs every few years, so future employers likely won’t look down on you for that. And you don’t need to regret the job - you can just think “well, the point of that job was to help me see what I don’t like” and thank the job for serving that purpose.
  • Don’t feel limited by the jobs that are listed. You can make up your own! My colleague calls this “job crafting.” Companies are good at listing the standard jobs that similar companies have, but there might be a job role they don’t have listed that they’d actually benefit hugely from. Write up a proposal of what that job role would entail and why you’d fit it well, and send it over to them. They might decline, but they might also say yes. Either way, you will have a better understanding of what you’re looking for in a job role.
  • Negotiate for your needs, whatever they are. A lot of times, when people talk about negotiating, they talk about negotiating salary and benefits. However, you can also negotiate for other needs that are important to you. For example, maybe it’s important that you’re able to spend one month every summer at a camp, or one day a week teaching. Tell your potential employer that, and see if you can put that in your employment agreement. It might mean less pay, but maybe that’s okay with you. Or maybe the employer will be willing to consider it a valiant work of charity. You won’t know until you ask.

What are all the options for combining coding and teaching?

I’ve only been out in the job market for 10 years, so I have not done an exhaustive search of all the many possible ways to combine coding and teaching. To recap, here’s what I tried:

  • Developer relations. There an increasing number of API companies out there looking for people to help them teach their APIs. See the APIStrat proceedings or browse ProgrammableWeb for ideas. Also check out my Developer Support Handbook for a better understanding of the role.
  • Engineering in EdTech: If you like teaching, you’ll likely enjoy thinking about creating online educational experiences. Check out EdSurge jobs board to see which EdTech companies are looking.
  • Teaching online: Anyone can create content on sites like Youtube, Udemy, or Lynda. You can also apply to be a creator at companies like TreeHouseCodeSchool, and Codecademy.

Here are other ways you might try:

  • Starting a CS education company. Jeremy Keeshin loved TAing at Stanford CS classes, so he co-founded CodeHS. Now he gets to spend some time touring classrooms to have them try out CodeHS while spending the rest running and coding CodeHS.
  • Doing CS education research. Colleen Lewis and Shuchi Grover are two women doing that today. You can get a much longer list by checking the proceedings of conferences like SIGCSE and ISTE. Some researchers teach themselves, like Colleen, others may just do a lot of observation.
  • Teaching at bootcamps. My friend Liz teaches at Galvanize, where she also gets to spend some time on content creation. My other friend Bianca started Telegraph Academy, a bootcamp for minority students. They don’t get to spend a ton of time on coding their own things, but they spend a lot of time helping students with projects.
  • Teaching in traditional schools. An increasing number of K-12 schools are looking to integrate CS into their curriculum, so I expect to see a spike in CS teacher job listings in the coming years. CS is also a popular major at many colleges. Teaching jobs likely won’t pay as much as other jobs, due to the sad state of teaching budgets, but they might be the most satisfying, depending what you’re looking for. (Update: I tried this myself, years after writing this post, and ended up leaving largely for salary reasons. Read my post for more details.)
  • Running internal training classes. Big companies have so many engineers that they often have their own internal trainers to help get those engineers up to speed with the technology they use. You might enjoy that if you like teaching professional topics to adult audiences.
  • Teaching on the side. There are a ton of clubs and organizations dedicated to teaching coding — global ones like GirlDevelopItCoderDojo, and GirlsWhoCode — and there are probably local groups near you like MissionBit in SF and ScriptEd in NY. There’s also the TEALS program, where software engineers can teach an AP CS class in an actual classroom for a semester. You might also enjoy tutoring a local student or wannabe-programmer.

I hope that helps y’all in your search for the role that will fit your needs and desires best. If a job is the best fit for you, it’s probably the best thing for the world for you to have that job, too. Good luck!