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.