Sunday, January 11, 2015

My Week at Hacker School

I first heard about Hacker School last summer. I had run into my friend Lindsey Kuper at a conference in Edinburgh. She told me that she had been a resident and that I should do it too.

"You’ll like it," she said. "I can put you in touch with the people.”

I like being told I'll like things--makes it so much easier to decide. I needed to finish my thesis and get a job, but I also like to say "yes" and deal with the consequences later. One "yes" led to another and I found myself booking travel and accommodations for a week in New York in November.

Since I was busy working on my thesis and getting a job, I did not try too hard to figure out what to expect. Plus I was told I would like it. I had opened a tab with the Hacker School website and skimmed Phil Guo’s blog post on his residency. When people asked me about it, I would say words like "immersive," "free," and "retreat for programmers" and then change the subject.

When the time came, I made my way to my Soho room and then to the address they had emailed me. The second-floor open office space of Hacker School was abuzz with all the chaos and excitement of the first day of summer camp. The beginning of my residency, they told me, coincided with the first day of a new "batch." Every six weeks, a group of new students begin their twelve-week Hacker School experience, joining a group of more seasoned Hacker Schools finishing their experience. Residents are given the unique opportunity to insert ourselves for one or two weeks at a time and observe the unfolding of this social experiment.

A hidden advantage of starting with a batch was that I was initially anonymous. After I acquired my key I took my place by the breakfast spread of pastries and fruit. My PhD has trained me well for standing next to free food: smile politely; introduce yourself; do not take too much food at once. The first person I met was student who had quit a math PhD program (which he had begun at an impressively young age, I later learned) and spent the last year programming and traveling the world. The second person I met was a student who started teaching herself Lisp while working in a bar. She had just quit her dog-walking business to do Hacker School.

After the fifth person it was time for orientation. Here I finally learned the key facts. While Hacker School has hours of being "in session," students and residents all have a key to the space at all hours. Outside of check-ins at 10am and weekly presentations on Thursdays, students are responsible for their Hacker School experiences. The students decide what they want to learn and how they want to go about it--the faculty are there only for guidance and check-ins. Hacker School differs from many of these other 12-week programs in that it is not focused on teaching a specific skill (unlike, for instance, the Ruby on Rails boot camps). In addition, there is a focus on learning skills (functional programming; cryptography) rather than completing specific projects. Some students have a project or direction in mind when they arrive, but many seem to just show up and see where the experience takes them. (You can read more about why they started Hacker School here.)

Orientation kicked off a fun and perspective-changing week. On the first day, I introduced myself, stated my interests (programming languages and functional programming among them), opened “office hours” and waited to see what would happen. I advised some people on learning Haskell and Scala--and also “paired” with them for periods of time. I talked to one student who had gotten into programming through activism and organizing (I later read online that he had been quite involved with Occupy Wall Street) and introduced him to a friend working with city data. After I gave talks about the history about programming and about my work, some people asked me about programming languages and also programming languages research (verification; static analysis). One morning by chance I sat next to a student, Pedro, and we struck up a collaboration to create the Markov Tweet generator that now powers @MarkovRMS. Pedro was eighteen, from Sao Paolo, and had the coolest development environment of anyone I'd ever met.

Pedro, Libby, Fernando and I had dim sum for lunch one day.
And Pedro was only one of many fascinating people I met that week. There were students who were teenagers and students in their fifties and sixties, with grown children. Some had not gone to college; other had PhDs--one woman had studied Computational Geometry and coauthored a paper with MIT professor Erik Demaine, one of the most well-known people in our field. Some people hoped to transition into a programming job: some from non-programming backgrounds and some from having taken breaks from programming to do startups focused on other things. (From the placement of alums, it seems that students are quite successful in getting the jobs they want.) Perhaps because Hacker School gives a second chance to people who have not been programming since birth, the program is far more diverse than the typical tech company.

At Hacker School I was impressed not just with the individual students, but with the community that Hacker School has created. The students are respectful and supportive of each other while working on problems together and also while doing social activities--of which there are many. One reason this is impressive is because tech and programming culture are infamous for being "macho," "aggressive," and unwelcome to women and other minorities. In addition, it is quite an achievement to create a safe environment when the students do not have the built-in trust that comes from having superficial similarities. While many companies leverage “like me” bias to build trust in their teams, the only thing Hacker Schoolers often have in common is a baseline level of programming ability and the fact that they have left their jobs, families, and friends to focus on programming.

Photo from alum Laura Bledait's blog.
While careful student selection accounts for part of the healthy community dynamics, Hacker School’s social rules play an important role in maintaining the safe environment:
  • No feigning surprise. This is when someone will say something like "I've never had sushi before" and someone else responds with, “Really? I didn’t know there were people like that.” This exchange makes the second person feels superior and the first person self-conscious.
  • No well-actuallys. A "well-actually" is when one person states a fact and someone else jumps in to correct the person on a minor technicality. Especially when people feel vulnerable and/or struggle with Impostor Syndrome, well-actuallys are much more harmful than they are productive.
  • No backseat driving. Nobody likes backseat drivers.
  • No subtle "isms." Hacker Schoolers are discouraged from engaging in sexism, racism, classicism, homophobia, etc. To avoid flame wars, people are also encouraged to take someone's word for it--without discussion--if they say an "ism" has occurred.
There is something to be said honest and open discussion and feedback, but these often require a level of trust and respect--both of which take time to build. Given that Hacker School brings together such a diverse group of people for such a short period of time, these rules are surprisingly effective in establishing an environment where people feel safe and supported.

The other aspect of Hacker School's culture that impressed me was how much the students were able to learn and produce despite the lack of curriculum or explicit goal structure. The weekly presentations--and job placement of the candidates--suggest that emphasizing learning and collaboration over specific projects and deadlines can be effective. I was amazed by the diversity and quality of the projects students showed during the weekly presentations. One guy had built an app that tells you where to get a cab based on previous cab pick-ups. Two students had built a simple web framework and then built some websites on top of it.  In addition to having fun work to show, it seemed like people had fun doing the projects in the first place.

The no-pressure atmosphere of Hacker School gave me the opportunity to finally try pair programming, a practice where one person does the typing and the other person reviews each line of code. To help with motivation and to prevent students from getting stuck, Hacker School encourages all students to "pair" on projects. Due to deadline pressure and perceived effectiveness of splitting up tasks my partner(s) and I had always agreed on interfaces and worked separately. With Pedro I discovered how productive it was to have two people look at code at the same time: for catching syntax errors, for finding deeper bugs, and for discussing how to construct the program. Working on code with someone else also allows you to finally have inside jokes about your code with someone besides yourself.

In short, Hacker School is a magical place. For those in a position to get involved, I highly recommend it. For everyone else, it's worth keeping up with what Hacker School is doing--how they are questioning our assumptions about how we learn and work. Hacker School showed me the value in being intentional about culture. It also showed me the value of taking time from my deadline-driven, task-driven life to learn--and play. Also, when I have my own research group, I am definitely going to encourage people to pair on programming and other projects.

Perhaps it was for the best that I did not try to understand what Hacker School was before I experienced it. There is nothing else quite like it. And it might be just what we need to build a more inclusive tech culture.

Saturday, January 03, 2015

Hello 2015!

When I was younger, I had no clue what it would be like to be in my 20s in the mid-2010s. I’d like to report that I never thought life would be so fun.

For me, 2014 was a year of growth. I did some things I’m proud of: supervised a Masters of Engineering thesis, published my first articles outside of my blog (for instance this Wired opinion piece), and started giving public talks about both computer science and technical privilege. I also started journaling again and have a better framework for reflecting on how I feel about my life. Here are some things I’ve been working on in the last year.
  • Building my personal community. Surrounding myself with like-minded people interested in similar things is important not only to my happiness, but also my personal growth. In the last couple of years, many of my friends have graduated and moved away. I’ve also moved on from actively contributing to building other communities, for instance Graduate Women at MIT. This has all left a bit of a lonely void, but it’s also given me a chance to think about how I want to focus my time—and social energy. I’ve been thinking about how my interests in computer science and technology fit in with my desire to more directly engage with and contribute to society. To explore this, I’ve been adding more people with writing, journalism, and civic participation interests to my personal community. I’ve also been exploring this through running NeuWrite Boston, a workshop for scientists and science writers. I feel incredibly grateful to learn from and grow with the brilliant fascinating people who are part of my world!
  • Taking breaks. After spending years trying to find work/life balance on a daily or weekly level, I’ve realized that I’m better at sprinting and resting than moving along at a consistent pace. (Also, in many cases, work/work balance is good enough for me.) Rather than limiting myself to 8-10 hour workdays I’ve given myself permission to go harder when I’m in the middle of something good. Afterward, rather than just pretending I haven’t overworked, I’ve also been more conscious about giving myself the appropriate amount of time to recover. As part of this, I experimented with taking longer—and different—breaks. I spent more time on beaches this year than I did in previous years. I also traveled for my longest consecutive block of time yet: following a conference in Edinburgh in the beginning of June, I traveled around until a friend’s June 28th wedding in Croatia. (Part of this was work/work balance, with research visits I had arranged.) When I came back I was shocked at how relaxed I felt--and about the new ideas I had formed about my life and work. (Sara Watson also wrote this fun article about what I learned about my Android phone.) Even though I'm taking longer "breaks," it doesn't seem like I've been getting less done--and I've been appreciating how changes of scene and pace has left me feeling more rested.
2015 is supposed to be a year of change: I’ve applied for Assistant Professor positions and I’m supposed to finish my PhD. Depending on how many interviews I get, this spring could get quite busy. By the end of the spring I will have made some decisions that constrain my life’s possibility space for the next few years—but it will still be a large space with many exciting things. I’m a bit nervous because I’ve seen other people I respect and admire struggle with this time in their lives, but I also have some great examples of people who managed to really enjoy their final years. Given all that’s about to happen, here are my resolutions for 2015:
  • Know my priorities and keep them in perspective. While it’s important to play the game to be able to keep working on the problems that I find most interesting and challenging, it seems all too easy to get consumed by the game. There are real pressures involved in obtaining and doing the job of an Assistant Professor: you may be familiar with the reported long hours and poor mental health of young academics. It will be important to remember why I want to be in academia in the first place: for the problems, for the people, and for the platform for improving access to computing—not necessarily for the prestige or for things that other people might want. It’s also important to remember what’s important to me about being a human as opposed to a disembodied virtual research-generating entity: my health (physical and mental) and my relationships with other people. Regular reflection is important for keeping all these priorities in perspective. Towards this I would like to meditate and journal at least once a week. Continuing to take the appropriate breaks will also help with this.
  • Embrace uncertainty—rather than fearing it. It feels comfortable and it feels safe to know that good things are going to happen. I spend a good amount of time wishing I could know what would happen. (Knowing where I’m going to be geographically is a big one.) On the flip side, it’s incredibly exciting not to know what is going to happen. In addition, I am lucky enough that nothing really bad is going to happen. In the words of my friend Alison, I know I’m going to have “a roof over my head and food to eat.” Even if I don’t end up getting something I want at the time, any outcome will provide opportunities for growth. Whenever I’m thinking about how I wish I knew what was going to happen, I would like to remember how exciting the possibilities are—and how they are all good. Keeping things in perspective will help. :)
Because people are more likely to achieve things if they publicly announce their intentions, I’ll also say some of the things I’d like to work on this next year. After finishing my thesis I’m excited to work on some of my future research ideas. I’d also like to keep reducing the gap between my professional and personal interests. I’d like to keep thinking about how my interest in programming languages can be combined with my interests in civic participation and social justice. (In this theme, Ari Rabkin and I are writing a piece for the first 2015 issue of Model View Culture about how social biases manifest as biases against programming languages.) Part of this involves thinking about how to make computing accessible to more people. I remain deeply interested in thinking about empowering people through the design and dissemination of programming languages as well as through promoting equal opportunity in computing.

Something I didn’t always realize was that rather than becoming your Final Self at some point, you keep growing—and if this is something important to you, you can get exponentially better at it every year. I’m liking my Current Self better and better every year. I can’t wait to see how we grow in 2015!