Thursday, September 20, 2012

Creating our Coursera Starter Culture

A month ago, I read "Team Geek" by my former Google co-workers Brian Fitzpatrick and Ben Collins-Sussman. It's a book about how to code well with others, based on their extensive experience both in open-source (they invented SVN!) and their experience starting up the Google Chicago engineering office and leading teams there. I read it at the perfect time, because that was only a few weeks after I joined the half-year-old, 20-something-large Coursera team, just at the time that we were asking ourselves "How should we do X? Should we do Y? What's the best process for Z?"

One of the things that Ben and Fitz talk about is the "starter culture" of a team. For a baker, the most important part of making good bread is to start with a good, strong starter culture, because that culture will overcome any other cultures that come into the bread loaf later and produce a good loaf. They argue that the same can be said for teams — if the founding members of a team start with a strong starter culture, they will pass that on to new members and not be infected by "wild strains" of counter culture. The culture is a lot of things — a shared mission, engineering practices like coding conventions and code review processes, but also social traditions like happy hours or board game nights.

I'm enjoying being part of the first few team members of Coursera, because I have the opportunity to influence the starter culture now, while we're small, and hope that the culture continues as we grow larger. Besides establishing our engineering practices, here are a few company-wide traditions we've started:

Show & Tell

Show & Tell

Remember this from kindergarten? Well, I thought it was awesome, so I've initiated a "Show & Tell" Mondays at Coursera.

We have a whiteboard in the hall where people can sign up with their name and their topic for an upcoming Monday, and then during lunchtime on Mondays, we give 5-15 minutes to each presenter. We're open to anything here — drafts of new features, interesting analytics, tutorials on using internal tools, or even ideas for future features — and it's not just for engineers, it's for everyone. We often get into great discussions after the show & tells about what we've seen, and these days, most everyone goes to them because they don't want to miss out.

It encourages a culture of openness and sharing, particularly across the boundaries of the engineering team. We want to feel like we're all in it together, and that everything we do is relevant to everyone else.

Tech Talks

Once a week, we invite a guest speaker to give a talk to us over lunch, and then we pick their brains to exhaustion after. We're fortunate enough to be working with very smart professors who we've brought in, like Kevin Werbach from the Gamification class that just started, and we're also lucky to work near to smart entrepreneurs, like Michael Staton from Inigral and Gunnar Counselman from Fidelis Education.

It's a great way to expose ourselves to outside opinions and challenge our own opinions, and it's particularly awesome now that we're so small and we can all personally chat with the speakers. We had very impressive guest speakers at Google, but it was rare that I got to actually have a personal conversation with them.

Formal Friday

Well, yeah, we're not the first ones to do this, but we make it look good.

My colleague Leith makes our Formal Fridays more interesting by bringing in a crazy cool raffle item every week, like an elephant-shaped mug or a laser-shooting duck, and sending off an email early in the morning, enticing us with how great our life will be if we were to own that item. The dressier we are, the more entries we get in the raffle, so that email will get us off our asses and into our bowties.

It also turns out to be a great excuse to take team photos once a week, like this one (which was a week I missed, unfortunately):

Games Lunch

As much as we love talking about what we're working on and how we can improve it, it can also be mentally exhausting. We like to give ourselves a break from that every so often with a quick board game, either over lunch or on a late night. We've stocked up on games that take less than an hour to play (or came up with rule variants that make it so), like Dominion, 7 wonders, and Poker. After a rousing game, we feel refreshed and sometimes even inspired. Our product designer Minjeong says she can't help but think about the user experience of playing the game, and how that transfers over to our product.

Those are some of the ways we're starting up our fun, open, and collaborative starter culture. Hopefully we can keep our culture strong as we grow in size. (And yes, we're hiring!) So, what do you do where you work?

Saturday, September 15, 2012

Teaching Web Development in Africa

Note: This is a guest post from Jack Bates, who emailed me a few weeks ago to tell me about something awesome he's been doing with my teaching materials in Africa. I invited him to do a guest post here.

For the past year, I've been tutoring HTML and web development to youth in Africa, and it's been both challenging and fun. Now, our youth village is recruiting someone to contribute more talent to the village next year, and I'm hoping to spread word of this opportunity via this blog post by sharing my experience in the role.

I used the resources that Pamela Fox helpfully compiled at to mentor twelve students who all built their own websites, such as websites for their karate club, fashion club, and traditional dance troupe. One student made a website to teach others about the hardware components of computers, and another website discussing the merits of a common currency in the East African Community. The two most advanced students began programming their own computer game to help others practice touch typing, and it allows players to compete across the network with WebSockets.

The youth village and the country are both totally committed to technology. Some of the other things I did this year are coordinate a donation of books from O'Reilly Media, improve internet access with open source tools, and figure out wireless and AC electrical problems. Plus, I installed the first solar heated plumbing in the village, on the roof of my staff house. During the school vacations, I got to travel to Uganda, Kenya, and Tanzania. The village is in rural Africa, and there's a passion fruit vine outside my window.

I work with four permanent Rwandan computer staff who are better teachers than I'll ever be. Some of the kids are afraid of computers when they first get to the village, but I've watched these teachers encourage them, and now a girl who was afraid before is one of the leading computer students. Sadly there are still fewer girls than boys who are passionate about computers.

This position is also part of a cohort of about ten international volunteers, with different roles and responsibilities. If this year is an example, they are highly talented and interesting people.

I was enthusiastic about doing this because it took me a long time to learn to code, and looking back, many lessons could have been way easier. I think tutoring others is the best way to recover that investment. Admittedly, the hours are long (sometimes I think Rwanda is the Japan of Africa, with its insane work ethic and dense population), and there are plenty of frustrations and contradictions, but overall, it is a sincere, kind, and optimistic country.

It would be awesome to have someone who is really excellent with web technology in the village next year! If interested, check out the position description and email with any questions.

This site is not affiliated with or sponsored by the Agahozo-Shalom Youth Village nor has Agahozo-Shalom approved, reviewed or confirmed any of the data and information provided herein.