RailsConf 2013

Hacking the academic experience

Hacking the academic experience

by Emily Stolfo

In her presentation, Emily Stolfo discusses the need to integrate hacker culture with traditional academic computer science education, particularly focusing on her experience teaching Ruby on Rails at Columbia University. She observes that many computer science graduates lack hands-on skills that are essential in the industry, which she believes can be addressed through a more hacker-centric curriculum.

Key points from her talk include:
- Emily identifies her unique position as both a former student and current educator, allowing her to bridge the gap between theory and practical application.
- She emphasizes that much of what one learns to be a successful developer comes from real-world job experiences rather than formal education.
- The curriculum she developed focuses on practical skills, suggesting that hacking and academia can coexist and enrich each other.
- She provides specific examples of skills that are essential in the industry but are often overlooked in traditional cs programs, such as debugging code from others, using version control systems, and understanding user-focused design.
- To illustrate her points, she shares feedback from her students showing they felt unprepared for internships and lacked vital skills in collaboration and version control.
- Emily encourages fellow hackers to contribute to education, highlighting various platforms and opportunities where they can share their knowledge and bridge the gaps in the academic curriculum.

Concluding her presentation, Stolfo reaffirms the importance of integrating hands-on learning into computer science programs and urges her audience to take an active role in teaching and mentoring others in the community. By combining hacker insights with academic structures, she believes that graduates can be better prepared for the evolving demands of the tech industry.

00:00:16.480 I'm feeling like a total dork right now because I think I'm one of the few people who actually use the template for the slides. But I think it's pretty nice.
00:00:23.800 My name is Emily Stolfo. I'm an adjunct faculty member at Columbia University, and I work on the Ruby driver team for MongoDB. I'm not going to talk about MongoDB today, but I'm happy to answer questions afterwards.
00:00:34.320 I'm going to focus more on my role at Columbia in the Computer Science department, teaching Ruby on Rails. Having been an undergraduate there not too long ago, and then working as a professional, I’m reflecting on some of the things that I learned only on the job.
00:00:49.160 I want to start with a problem that I've identified: I didn't really learn how to program until I was ironically doing an internship as part of a master's program in Paris. I have a CS degree; I studied computer science at Columbia University. So, I want to talk about this problem and the hacker-centric curriculum that I developed at Columbia while teaching Rails over three semesters.
00:01:03.720 I'll discuss my experience teaching Rails at Columbia to put everything in context. Then, I’ll describe the hacker-centric curriculum, what it is, why I developed it, and its focus. Finally, I'll talk about what we, as hackers, can do to contribute back to the community, since we don't only have to contribute code but also knowledge and education.
00:01:35.799 Before I dive into the hacker-centric curriculum, I want to clarify the term 'hacker.' It’s a term that can hold positive or negative connotations, but I want to use it in its positive sense here. The definition of a hacker, which I think Mark Zuckerberg described nicely in a code.org inspirational video, emphasizes someone interested in technology who has a goal in mind.
00:01:56.560 He spoke about how, as a hacker, he wasn't interested in learning all of computer science at once. Instead, he focused on achieving his goal and looked up information and tools along the way when he faced obstacles.
00:02:02.560 This is the kind of hacker I'm referring to: the resourceful and curious individual in a positive sense. I have both a traditional and untraditional background. As I mentioned, I work on the Ruby driver team at MongoDB, where there are about three or four of us.
00:02:43.959 Before that, I worked for a startup in New York City that sold limited edition artworks online called 20X200, as a full-stack hacker. I worked with Perl and, embarrassingly, multiple versions of Ruby on Rails.
00:03:01.199 Before that, I completed a master's program at the Louvre Museum, which was a two-year program. I worked at IBM as a business consultant and I studied computer science and art history at Columbia, where I double majored.
00:03:11.159 Why am I sharing all of this? I believe I have a unique perspective because I went to Columbia as an undergrad, worked for a few years in technology, and then returned as an educator. It’s important to mention 'Why the Lucky Stiff,' who was an influential figure in the Ruby community between 2006 and 2009, advocating for coding education.
00:03:43.000 'Why the Lucky Stiff' stated that getting more people interested in coding required hybrid programmer-teachers.
00:04:06.560 Teachers often lack the necessary skills or experience to build things alongside their students, so we need educators who are also programmers, or unconventional programmers. I believe academia and hacking should not be mutually exclusive.
00:04:54.759 To give you some context, I want to tell you about my experience at the Louvre. I was in a two-year master’s program, where the first year was focused on museum studies, learning about budgeting and moving large artworks. In the second year, I was missing technology, so I developed a Ruby on Rails application as my master’s thesis.
00:05:17.880 The application allowed material scientists to log samples they had taken from artworks, working alongside a system that used Ruby on Rails to manage metadata and historical data on artworks. I was essentially building a system to manage scientific data that could link back to historic metadata.
00:05:46.760 During this project, I consulted with the head of the technology department, who proposed the project to me. I had a CS degree but had never heard of Ruby on Rails before; my roadmap was completely blank, and I was stepping into the unknown.
00:06:15.560 Like most of us who have taught ourselves Rails, I found several resources helpful. One was an existing Rails app, which I used as an example, mimicking strategies and data modeling, which was invaluable for building my own app. The second was the internet, which seemed obvious to me but wasn’t when I started teaching at Columbia.
00:06:45.320 The concept of self-directed learning resonated with me as I always had a goal. When I got stuck, I would look something up and move forward step by step. Talking to colleagues in the technology lab about their experiences and systems also proved invaluable. Additionally, reaching out to people I studied with at Columbia offered significant support.
00:07:10.640 However, I realized that despite my strong background, I had never considered building a tool for a real user during my education.
00:07:30.000 This experience pushed me to think about user interfaces and the organization of tools to accomplish specific goals. I learned a lot through my collaboration with researchers, employing agility and iterating on features.
00:07:51.760 It's worth mentioning that I was in Paris, which was not known for a thriving tech scene at the time. I was unaware of meetups or local communities to interact with, which makes me appreciate even more the resources available in technology hubs like New York.
00:08:18.320 This experience prepared me for my job in New York as a full-stack hacker. One of my first responsibilities involved running cron jobs, which was in conjunction with a flash sale feature at my previous job.
00:08:34.600 I wrote a script that ran every Friday at 8 AM, reducing the price of select artworks by 20%. My colleague once messaged me about an artwork being 30 cents, highlighting a mistake in my code.
00:09:05.000 The ability to accept and react quickly to mistakes was something I learned while working at the Louvre and has been vital in all my subsequent work.
00:09:25.760 Now, back to the present: I'm working at MongoDB while teaching Rails. When I first started the class, I thought I would simply be teaching Rails itself. However, I quickly realized there was a wealth of knowledge I wanted to share with my students.
00:09:48.320 I aimed to provide them with a 'fishing pole' instead of just a 'fish.' My initial assumptions about merely teaching Rails quickly changed, and I had to remodel my curriculum.
00:10:12.720 Now, in my third semester, I've refined the course to make it more beneficial for students. Although I still teach Rails, the assignments and activities focus on building specific behaviors or skills that you typically gain from real-world experience.
00:10:35.920 I've revamped the curriculum significantly and I’m having the most enjoyable time teaching this semester. I’m looking forward to receiving my evaluations to see how students perceive the changes.
00:11:02.479 This course is unique, as it's only a half-semester class at Columbia, meaning it lasts only six weeks. I'm unsure if I could teach it for a full semester due to its demanding nature.
00:11:25.600 I wanted to investigate what other universities are teaching and see if I'm on the right track in teaching Rails. I looked at highly ranked computer science departments across the country, but few even teach web development, let alone Rails.
00:11:47.760 While I understand Rails as a specific framework, the absence of web development in academia surprised me.
00:12:02.000 You might wonder whether web development or Rails is relevant to a computer science curriculum. I believe the foundations of computer science are essential, but we should not replace university curricula with trade school curricula.
00:12:15.240 Academia cannot easily pivot to each trend in the tech industry, especially when tech trends change rapidly. DHH pointed out that Rails was developed ten years ago when we were using flip phones, making it feel like another era.
00:12:47.480 It's impractical for academia to continually overhaul curricula, introduce new professors, and adapt to evolving industry trends. However, I believe there are steps we can take.
00:13:04.280 While I cannot change the overall curriculum at Columbia, I can adjust my class. One way I emphasize Rails is by introducing it as a gateway to web development.
00:13:29.960 I focus on mapping concepts students learn to Ruby on Rails, helping them understand theoretical principles in practice. This also fosters a hacker mindset.
00:13:47.880 In the job market, titles like 'hacker' are commonplace. For instance, at 10gen, we specify a hacker culture in our careers page. Etsy even has an 'office hacker' role.
00:14:06.960 They seek individuals who can Tinker with gadgets and enhance productivity within the office environment. Various tech companies are seeking hackers, showcasing the importance of such a mindset.
00:14:29.360 I wanted to embed these behaviors into my curriculum and realized that perhaps I should confirm if students are indeed learning the skills I believe they are. I used a tool called Poll Everywhere to gauge student responses.
00:14:51.760 During a recent class, I incentivized attendance with cookies and milk, bringing in around 40 students, and asked them five questions related to their class experience.
00:15:15.600 The first question was whether they felt this class was different from others at Columbia. A remarkable 97% said yes, and their reasons included 'modern,' 'practical,' 'creative,' and 'less focused on grading.'
00:15:32.839 This proved to me at least I'm making progress in exposing them to a different learning experience.
00:15:47.559 The second question revolved around internship preparation. 96% felt they lacked essential skills for their internships related to their curriculum at Columbia, particularly in collaborating, using version control, and understanding APIs.
00:16:08.520 They felt unprepared for aspects like Unix systems, which had little exposure in classes. I emphasized that understanding how to write idiomatic code often arises from community interactions.
00:16:27.839 For the third question, I asked whether they participated in hackathons. About 50% replied they've attended, but I'm unsure what that indicates. Maybe they view them as social gatherings, limiting their experience.
00:16:44.839 The fourth question centered on experience with open-source software. Many responded affirmatively, reinforcing the idea that they have, at least in some capacity, explored this realm.
00:17:00.920 The final question I posed was whether they had a GitHub account prior to the class. An impressive 90% said yes, most created their accounts for hackathons or personal projects.
00:17:16.319 One student shared he was excited about applying for an internship requiring Ruby on Rails knowledge, highlighting the importance of using GitHub as the standard way to share code.
00:17:40.640 These responses helped me check if my observations and conclusions about developing the curriculum were accurate. I feel confident that I'm on the right track.
00:18:01.760 My main point for you, as open-source contributors, is that we can contribute more than just code. We can contribute knowledge and education, which can help fill gaps in academic programs.
00:18:18.160 I’d like to share five specific hacker habits that I incorporate into my teaching, providing concrete examples of strategies I've utilized.
00:18:33.360 The first habit is to use the Internet as a primary resource. I tell my students I won't respond to questions easily Googleable. I frequently remind them that the Internet serves as their primary textbook.
00:19:00.640 The second hacker habit is learning to debug code you didn't write. I provide them with a skeleton app with authentication features, intentionally adding bugs they must resolve.
00:19:18.440 This method increases office hour attendance as students engage with issues in the code they've received.
00:19:43.200 The third practice encourages building something to solve real-life problems. This semester, my students are developing a Rails app for me to post homework assignments and use for future classes.
00:20:02.559 The fourth habit focuses on engaging with the community, both in person and through code. For their first assignment, I have them sign up for a Meetup, emphasizing the importance of networking.
00:20:24.479 I also require them to do a pull request on someone else's open-source application, introducing them to collaboration and contribution.
00:20:55.679 Lastly, I encourage thinking critically about code. In an environment sensitive about plagiarism, I guide students to responsibly use and take ownership of code sourced from Stack Overflow.
00:21:14.279 The students also explore Ruby Gems, allowing them to understand and compare functions, teaching them a vital aspect of programming.
00:21:39.679 According to the US Department of Labor, the number of jobs in computer programming is projected to be 1.4 million by 2020, but universities are only prepared to fill 30% of those positions.
00:22:01.960 Additionally, the number of computer jobs is growing at double the national average, so it's crucial that we extend participation in computer science and programming.
00:22:21.639 We need to integrate hacking into academia and vice versa, fostering mutual benefits from both fields.
00:22:37.440 As hackers, you can contribute to knowledge-sharing in classrooms or community programs. Organizations like Skillshare and General Assembly provide opportunities to teach programming.
00:23:01.360 The TEALS program allows professionals to teach programming in high schools, and I encourage you to offer your time to support the next generation.
00:23:20.760 Projects like Hacky Hack Lessons of GitHub focus on teaching programming to youth. You can also contribute to workshops like Rails Girls, which have a positive global presence.
00:23:37.440 Teaching reinforces your knowledge and builds your network, while also helping to fill the gaps in others’ understanding. This active participation benefits everyone.
00:23:54.680 As I conclude, remember that we can significantly benefit from integrating hacking with academia.
00:24:06.360 Thank you.
00:37:25.599 Thank you.