I just came back from a week at Hacker School in New York — they invited me to join them as a resident. I thoroughly enjoyed the experience and, before I forget, here are my impressions and a bit of a comparison with the more traditional educational programs that I’m used to.
Hacker School and Hacker Schoolers
Hacker School meets in this large open space in Soho Manhattan, and people work on their computers either alone or in pairs. There are a few rooms around the open space. The beginning of my residency coincided with the starting of a new batch of 30 or so Hacker Schoolers, so a lot of people were new to the experience. The program is fairly unstructured; people work on whatever they want to work on. There are no instructors, only facilitators who are there to answer occasional technical questions and help the Hacker Schoolers through mocks ups of interviews, etc. There is no curriculum; there are no lectures. The Hacker Schoolers are expected to figure out by themselves what they want to work on and to learn.
The only structure in place is the expectation that people will show up everyday by 10:30am. They then split in small groups and proceed to do something they call “check in” — each person in the group gives a short summary of what they worked on the day before and what they expect to do during the day. This lasts for about 10-15 minutes. There are also weekly lightning talks (the picture on the left is from one of them) and a weekly evening seminar with an external speaker. But other than these, the rest of the time is unstructured.
Hacker Schoolers don’t pay anything to attend Hacker School, and several of them receive financial aid. As stated on their web site, Hacker School makes money from placing Hacker Schoolers in partner companies after they go through the program.
Hackers Schoolers are a very diverse bunch in gender, age, educational background and life experience. About half of them don’t have a Computer Science background, and the other half does. Some of those who didn’t do CS did some programming in college, others have just picked it up by themselves by going through various learning materials on the Web. In this batch, I met very young people who had either dropped out of college or are about to go to college, older people who had done successful lone-wolf software companies, sold them (or folded them) and are eager to learn something new, people my age who had done some programming way back then, went on to raise a family and are now eager to pick up programming again, people with PhDs, and many young people a few years out of a college degree in something else who really want to try to make a living out of programming instead.
In spite of all this diversity, it was pretty clear to me that Hacker Schoolers have two things in common: they are all smart and self-driven. In talking to the people who run Hacker School, these are indeed, characteristics that they look for when doing admissions.
My Time There
I had no idea what to expect or what was expected from me. They had previously told me that I could do whatever I wanted, and that previous residents had done different things. Like the Hacker Schoolers themselves, residents are expected to figure it out by themselves how they want to spend their time there. I started my residency by giving my book talk on Monday night, and that was fun.
I had accepted the invitation to visit primarily for two reasons: (1) sheer curiosity about how an unstructured and diverse program like this can possibly work; and (2) curiosity about the people who come to this School, especially those who are new to programming and/or don’t have a CS background. So for the rest of the week I setup large blocks of time for people to come talk to me about whatever they wanted, but especially about the basics of CS. That was a good filter, and I got to talk to a lot of the Hacker Schoolers fitting the profile I was most curious about.
Many of the sessions ended up being group sessions that felt like lectures (I was the lecturer), others were one-on-ones of the kind I routinely have with UC Irvine students. This was familiar territory for me. However, these sessions were subtly different from the ones in the University: rather than me driving the agenda of what topics to cover, Hacker Schoolers were the ones driving it. This was both new to me, at least at the “undergrad” level, and really cool! I felt like my brain was being picked on by eager minds, and I loved that feeling! During those 3 days, I “lectured” about topics as diverse as data structures, computer architecture, types, assembly, operating systems, REST APIs, programming styles, and interpreters. I didn’t go deep on any of the topics, for obvious reasons, but we covered a lot! It was intellectually simulating for me to try to explain these things as well as possible in such a small amount of time, with no preparation and no powerpoint.
The diversity of topics covered was a really interesting phenomena that I didn’t anticipate. As I said, most of the Hacker Schoolers I interacted with were those who didn’t have a solid background in CS, even if they knew how to put pieces of software together to make something work. As one of them told me, “yeah, I can make stuff work, but I feel like I have a very shallow understanding of what I’m doing.” Or, as another put it, “I have many gaps.” They really wanted to understand at a much deeper level how the programs they write actually work, and cover the gaps on the foundations of CS — the what as much as the why. Like, why are assorted data structures important? Why are there different styles of programming? Etc. Most of them being Millenials, they saw in my visit an opportunity to “power browse” my brain; I loved it!
Reflections on the Experience
This experience was a stark reminder of the enormous amount of abstraction that we have built on top of computers over the past 70 years. For the people who are starting now from the “top” (say, the latest web framework or some high-level language), computers and the Internet must feel like voodoo! Some people are happy to operate just at the highest level; others (like Hacker Schoolers I met) wanted to go deeper. I don’t think there is a compressed way of assimilating all the knowledge necessary to understand the entire thing; multi–year Computer Engineering, Computer Science and Software Engineering programs are as needed as ever — and even those produce graduates with many gaps in their knowledge… But it got me thinking of what would be the most efficient way of teaching the entire stack of computer knowledge to people who want to learn about it.
This leads me to another reflection: education. In the past couple of years, I’ve seen many of these “hacking schools” pop up in the US. They’re not all the same; but they all provide a short-term immersion in programming, and most of them (perhaps with the exception of Hacker School) target people without formal CS backgrounds and give them hands-on training using some high-level framework. I think this is great, but the fact of the matter is that it’s impossible to form solid software engineering professionals in such a short amount of time. Also, programming “at the top” is fine, and gives people a good sense of accomplishment, but there’s only so much that one can do at that level. All the backend systems and all the complex engineering systems, where a lot of the technical fun and innovation happens, will be out of reach to those who stay “at the top.” I fear that all this energy to get people to learn how to program in N weeks will be lost if that is not followed by a more long-term educational/training program.
Finally, the students who go through Hacker School are different from the undergraduate students we get in Universities, especially state universities. I was curious to find out how an unstructured program like Hacker School could work, and whether it would be good for our undergraduates to operate like that. I continue to be very skeptical of unstructured programs for general undergraduate education, because they require (or assume) a very high bar for the students who can thrive in such environments. Hacker School is run more like graduate student research groups, where the students are expected to figure most of it out by themselves. Not everyone is cut for graduate school, so if we wouldn’t provide structure and support for those who, for a number of reasons, aren’t able to define their own learning agenda, we would be making a huge step backwards in the field of education — the divide would be even larger between young people of privilege and young people who find themselves in odd circumstances by the time they go to college. Structure and support are expensive, but they are a worthy investment.
All in all, I loved spending last week with this incredibly smart, self-driven and diverse group of people.