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 um I think it's pretty
00:00:23.800
nice um my name is Emily stalo I'm an adjunct faculty at Columbia University
00:00:29.279
and I work on the Ruby driver at tenen the Ruby driver to mongodb um I'm not
00:00:34.320
going to talk about mongodb today but I'm happy to answer questions afterwards I'm going to focus more on um my night
00:00:41.360
job of uh working at Columbia in the computer science department teaching Ruby on Rails um and having been an
00:00:49.160
undergraduate uh there not too long ago working as a professional and then coming back as both a professional and
00:00:56.920
an educator and reflecting on some of the things things that I've uh learned only on the
00:01:03.720
job so I want to start out with a problem that I've identified that I didn't really learn how to program until
00:01:10.600
I was ironically doing a internship um in the context of a master's at the Lou
00:01:17.560
in Paris and I have a CS degree I did I studied computer science at Columbia
00:01:23.320
University so I want to talk about this problem um and uh the hacker Centric
00:01:29.920
curriculum that I feel like I've developed at Colombia over the course of teaching rails for three semesters so
00:01:35.799
I'll talk about teaching rails at Colombia sort of my story to put everything in context then um this
00:01:42.320
develop this hacker Center curriculum what it is why I developed it and what it actually focuses on and then what you
00:01:49.960
can do as hackers because presumably who here has studied rails in an academic
00:01:56.560
institution who taught themselves rails okay so what you can do as hackers to
00:02:02.560
give back to the community because we don't only have to contribute code we can contribute knowledge and education
00:02:08.319
as well um before I get started on talking about this hacker Center curriculum I
00:02:14.400
want to uh point out that the term hacker is a shith which sounds very close to gibberish but it's a it's a
00:02:21.519
term that's overloaded um it's both positive Ed positively and negatively um
00:02:27.040
but I really want to use it in its positive sense here um the main definition of hacker that I'm interested
00:02:33.120
in is um something that I think Mark Zuckerberg uh described quite nicely in
00:02:38.280
the code.org um uh sort of inspirational video on uh
00:02:43.959
why coding should be taught in schools um and two children at a very early age
00:02:49.239
uh he said that as a hacker as someone interested in technology he um had a
00:02:56.040
goal in mind something he wanted to build and then went and looked up things along the way to accomplish his goal so
00:03:02.200
he wasn't interested in learning all of computer science all at once he was interested in getting to a goal and um
00:03:08.599
looking up um information and tools when he was blocked so this is the kind of
00:03:14.080
hacker I'm talking about here the the resourceful um curious um um hacker in a
00:03:20.799
positive sense so talking about myself I have
00:03:26.080
both a traditional and untraditional background as I said um I work on the Ruby driver team at tenen I work on the
00:03:32.799
Ruby driver to mongodb um we're a team of about three or four people uh before that I worked for a
00:03:39.599
startup in New York City that sells limited edition artworks online it's called 20 X200 as a full stack hacker so
00:03:46.599
I was running Pearl embarrassingly uh Ruby on Rails two different versions uh
00:03:52.280
running server scripts Etc you all know what I'm talking about um before that I
00:03:57.599
did a masters at the Lou Museum it was a two year program and I'll talk about that a little bit in a second I worked
00:04:04.959
at IBM as a business consultant and I studied computer science and art history at Columbia I double majored so why am I
00:04:11.159
telling you all of this why am I listing out my resume um I'm actually a pretty serious engineer um at tenen this is the
00:04:18.320
roomy team we're very serious about our our engineering um but what I really
00:04:25.080
want to get at is that I feel like I have a pretty unique perspective because I went to Columbia as I said as an
00:04:30.520
undergrad then I worked for a few years and I was sort of Meandering around doing things pretty much related to
00:04:36.960
technology and then now as a professional I'm going back and teaching students among which I was not too long
00:04:43.000
ago so I think it's also um not it's impossible to give a talk about
00:04:49.280
education and not at least uh mention why the lucky stiff uh who was um I'm
00:04:54.759
sure most of you know who why the lucky stiff is he was pretty active between 2006 and 2009 as a big advocate in the
00:05:01.199
Ruby Community um specifically for um getting people to learn how to code
00:05:06.560
using Ruby um Ruby specifically because it was so easy to use an expressive and
00:05:12.400
um as close to natural language as you can get in terms of programming languages um and he gave a talk in 2009
00:05:20.680
at Carnegie melon at a symposium called Art and code where he said um that the
00:05:25.840
key to getting people um more people interested in coding was really to have
00:05:31.240
these hybrid programmer teachers because teachers um don't necessarily right now
00:05:36.520
have the skills or experience to build things along with their students and show them practical coding skills so we
00:05:42.600
really need programmers coming in as Educators or Educators who are then educated on how to teach programming um
00:05:50.759
or you just need crazy programmers so I don't know if I'm crazy but I agree with why I think that Academia and hacking
00:05:57.479
should not be mutually exclusive so I said I wanted to show you what I
00:06:03.639
did at the Lou just to give some context here and and I guess um in telling this story um I guess my observations later
00:06:10.880
on will make a little more sense uh so I was doing this two-year master's program at the Lou um the first year was mostly
00:06:17.880
Museum studies was sort of like a business school uh where we learned about budgeting and moving large
00:06:23.080
artworks around the second year I was really missing technology so I did my Master's thesis working full full time
00:06:29.840
in the conservation department to develop a Ruby on Rails application um that allowed uh material scientists
00:06:37.000
there to log samplings that they had taken from artworks there was a system already in place using Ruby on Rails
00:06:43.560
that had metadata and historical data on um artworks and I was building this other Ruby unil system that was more for
00:06:50.880
scientific data and then able to link um data on samples um after analyses had be
00:06:57.520
had been run back to Historic um and metadata about artwork so that a
00:07:02.599
scientist's research could um facilitate a curator um historical understanding of
00:07:09.520
an artwork um so the point of me mentioning this is that um when I went
00:07:15.960
to do this project I went to talk to the woman who was the head of the Technologies Department um she proposed
00:07:21.280
this project to me and I was like yeah I have a CS degree that sounds great Ruby on Rails um never heard of it before I
00:07:27.759
had no idea what it was my road map was completely blank I was like had no idea
00:07:33.039
what I was getting myself into um but all of us well most of us um have taught
00:07:38.080
ourselves rails so we know that there are a number of resources that allow you to learn rails and a few things in
00:07:45.879
particular allow me be to be successful that I identified afterwards in reflecting on this experience um one was
00:07:53.400
uh this existing rail app that I Ed as an example and I would mimic some um strategies and data modeling Etc was
00:08:00.560
extremely useful for building my own app the second thing was the internet and this might seem totally obvious to you
00:08:06.960
but it was not obvious to my students when I started teaching at Columbia and I'll get to that in a little bit trying
00:08:13.520
things out so this goes along with what Mark Zuckerberg was saying that I had a goal in mind I had no idea how I was
00:08:19.759
going to get there I didn't have a road map but as soon as I got stuck I would look something up and um get there step
00:08:26.199
by step books are um not obsolete um colleagues so just talking
00:08:33.360
to people in the technology um lab uh talking to them about the system they
00:08:39.120
had built um their experience was extremely valuable and community so going Beyond
00:08:45.399
just the technology lab talking to people um uh in schools I was reaching
00:08:50.720
out to uh people I'd study with at Columbia this was also extremely valuable and users this is an
00:08:56.959
interesting one so um keep saying I have a CS degree but I never had to think about building a tool for a real person
00:09:04.680
in in school or think about like you would study Theory and then practice and
00:09:10.079
then theory and practice um but this sense of thinking about a user and user interfaces um how to build a tool that
00:09:17.320
is really organized and allows someone to really accomplish something this was um I learned a lot from this project
00:09:23.640
because I worked very closely with that with about 30 research scientists and they with me um developed this system in
00:09:31.160
a very agile way so we iterated on ideas and features um so this was extremely
00:09:36.320
useful for the work that I did then did afterwards um and it's worth mentioning
00:09:41.640
also that I was in Paris which is not known to have uh a super thriving Tech
00:09:46.880
scene um at the time especially it was pretty difficult I didn't know anything about meetups there was really no
00:09:52.920
Community physically that I could have gone and interacted with um and this and
00:09:58.000
I guess this experience um makes me appreciate even more the resources that um I'm from New York so that we
00:10:04.240
specifically have in New York but I'm sure a lot of other cities in the US have great resources as
00:10:10.120
well so my whole point of explaining this is to tell you that um I feel like
00:10:15.640
this experience in particular is what prepared me best for the job that I then
00:10:20.760
took in New York as a full stack hacker um specifically uh there's my first fora
00:10:27.440
into running cron jobs um was this um one functionality on our site where
00:10:33.079
every Friday at 88 am. we had a flash sale on a couple of artworks where the
00:10:38.200
price would be reduced by 20% so I first wrote this script that would run at 8:00 a.m. on Friday and use a callback on a
00:10:45.560
Model to go through and see if it was flagged for price reduction um so it
00:10:51.399
goes it runs I check it I get up um early at uh and I check it at 803 it
00:10:56.839
looks great go to work a couple of hours later I again an IM from a colleague and she says why is this artwork 30 cents so
00:11:04.760
essentially I was messing up um something about saving after create or
00:11:10.040
do calling the call back after create versus save something like that um I don't remember right now but being able
00:11:15.920
to accept that I had made a mistake and react really quickly is definitely something that I learned while working
00:11:21.440
at the Loof and making a lot of mistakes so now back to the present um
00:11:28.120
so I'm working at tenen I started teaching the reals class while I was still a um web developer at this um art
00:11:34.519
company um and when I first taught the class I thought I was going to be teaching rails but as I taught the class
00:11:41.600
I realized that there is so much knowledge I've learned on the job in my couple of years working professionally
00:11:47.360
as a developer that I really wanted to um share with the students and so it sort of like give them a fishing pool
00:11:53.760
instead of a fish type thing um and those assumptions that I had made about
00:11:58.959
about just teaching rails were totally for false and I had to as any Ile
00:12:04.160
developer revamp my curriculum now I'm in the third semester and I feel like I've gotten to a pretty good place where
00:12:10.839
um I guess to describe the course in itself I do teach rails all the classes involve rails but all of the assignments
00:12:18.120
that I or the activities I have students do I really focus on having them develop a certain Behavior or highlight
00:12:24.519
something that I feel like is a skill that you only really get from working in the real world um so I've revamped this
00:12:30.399
curriculum and I think this semester I've had the most fun teaching the class I think the students have gotten a lot out of it um my last class is on Monday
00:12:38.320
so um I'm looking forward to getting my evaluations and seeing what they thought of it um but this class is uh rare and
00:12:47.600
not only at Columbia so it's half semester at Colombia it's only six weeks
00:12:52.639
um I'm not sure I could teach it for the whole semester um just because it's in it's so time consuming um but but just
00:12:59.040
to get an idea of what other colleges were teaching and I guess uh before when I asked uh the audience who had taught
00:13:06.240
themselves rails most of you had taught yourselves rails so I wanted to look at some other universities to see if like
00:13:11.680
maybe I'm totally wrong and other universities do expose students to web development or rails and or rails um and
00:13:19.000
I looked at some of the the better ranked computer science departments in the country I I want to name them to point fingers but um because for the
00:13:25.680
most part their um CS programs are very strong um but very very few universities
00:13:32.000
are even teaching web development not even rails I understand rails as like a specific framework and maybe um they
00:13:37.959
don't have the resources to bring in a particular person who who knows rails but even web development is largely
00:13:44.480
absent from um Academia but you might ask yourself is
00:13:50.800
web development is rails relevant to a CS program in a top uh University or any
00:13:57.759
University really is it something that we should be learning in the community because it's so organic it's open source
00:14:03.600
um we come to conferences like this and we learn from each other I think the foundations of
00:14:08.959
computer science are essential I don't think that we should be replacing University curricula with uh trade
00:14:15.839
school curricula I don't think that Academia should change along with each Trend in the tech
00:14:22.160
industry particularly because a generation in Tech is so short dhh said
00:14:28.079
in his keynote the other day that he developed rails 10 years ago when we were all using flip phones and that
00:14:36.079
feels like an e on ago it feels like another era and it would be impossible for Academia to revamp its curriculum
00:14:42.399
introduce new professors new research new classes um and expose their students
00:14:47.720
to all these new subjects um just based on industry Trends so I don't think it's a very easy
00:14:54.800
problem to solve but I think there are some things that we can do and that I can do even at
00:15:01.759
Columbia I couldn't change when I when I realized this I couldn't change uh everything I couldn't change the
00:15:08.240
curriculum at at Columbia I couldn't change the the core courses you had to take um to get a CS degree from Columbia
00:15:15.519
but what I could change was my class so I tried to highlight in in one
00:15:21.440
of my first classes my students that I see rails as the gateway drug to web development I try to focus on uh
00:15:28.880
thinking about what I learned as an undergrad and what they're learning now and map some of those Concepts to Ruby
00:15:35.000
on Rails and for one I think uh framing everything in an objectoriented uh way is some of the
00:15:42.240
best ways of mapping uh rails Concepts to what they know already uh so they have a class on on databases they have a
00:15:49.079
class on networking they have a class on um just various other theoretical
00:15:54.240
concepts of computer science and I try to extract those and um show them examples and rails of how that um how
00:16:01.759
that works in the whole context of a web framework um in particular I think this is really important because um it allows
00:16:09.759
them to take the theory that they learn and see it in practice and give them a
00:16:15.040
little bit more of a hacker mindset where they can um teach themselves and and run with that theory in particular
00:16:22.199
because um in the job market um a couple of examples of job titles uh
00:16:29.199
specifically in New York that even use the word hacker at 10g specifically on our careers page we say we have a hacker
00:16:36.759
culture so we're looking for hackers um among other jobs of course um Etsy even
00:16:42.800
has a uh job title called office hacker who is someone um the in the job
00:16:48.880
description it says it's someone who is able to take gadgets and Tinker with them and make the the um office
00:16:55.480
environment more productive um and uh facilitate take communication Etc they also have another job title called Full
00:17:02.240
stack no intrinsically motivated full stack product hacker who is someone who
00:17:07.880
takes the masses of of data that they have in existence and finds a way of
00:17:13.280
running analytics on them and presenting them to uh maybe business decision makers or basically someone who can take
00:17:20.280
a bunch of uh data that's unstructured or um has really no um um value and adds
00:17:28.600
analytics on top of it uh so if that doesn't prove that some major tech companies are looking for hackers I'm
00:17:34.960
not sure what would so I had all these ideas um specifically this last semester I've
00:17:40.960
been thinking a lot about this in uh trying to get some of those behaviors into my curriculum and I realized that
00:17:46.799
maybe I'm just completely crazy maybe the the students are learning these skills and I just I just think that that
00:17:53.120
my experience is exactly like what everybody else is experiencing now so I used um this tool called pull everywhere
00:18:00.679
is uh which is a um a way that you can pull a group of people and have them text or use a browser to send an
00:18:07.840
anonymous response to your question so at my last class um had a sort of all
00:18:13.000
Hands-On deck class uh where I uh bribed them to come because I had cookies and
00:18:18.159
milk and they all came they're all excited to uh talk to me about this uh this presentation I was going to make
00:18:24.360
and um answer the questions that I told them I would have for them and I asked them five questions and I'm going to
00:18:29.960
share some of the responses with you because I think they're um pretty useful for showing I guess proving what I'm
00:18:36.240
saying um providing some numbers behind uh some of these observations I made so the first question I asked them was is
00:18:42.480
this class different from other classes you've taken at Colombia and if so how
00:18:47.640
97% said Yes actually let me just say there about 40 people who came to class um 50 enrolled but um I you know some
00:18:55.880
don't always come to the class so 97% said yes and I when I asked them why um
00:19:01.840
some of the words that came up were um modern practical more creative solving
00:19:07.840
our own problems less focused on grading but probably because I'm lazy um just
00:19:13.120
really they I think they felt like they had more autonomy and they could they could really create something themselves
00:19:18.840
be creative they weren't sort of confined to a box or a problem set so
00:19:24.039
that was that sort of proved to me that at least I'm getting somewhere at least I'm doing exposing them to something
00:19:29.280
different the second question I asked was if you've had an internship do you feel you had all the necessary skills or
00:19:35.720
that you are lacking in a particular area so this is one response from that question um and I guess the the point of
00:19:41.720
me showing you this quote is that this one student lists a a myriad of languages that they have to deal with
00:19:48.080
and they said there was a lot to take in they learned a lot but they really wish that they they had some preparation um
00:19:54.400
either in any one of those languages or to deal with them all at once so think thinking about the full stack is
00:19:59.720
something that that I particularly like to teach in my class um 96% said yes to
00:20:05.000
this question that they felt like they had an internship in which they for which they were not prepared by their
00:20:10.799
their curricula curriculum at Colombia um and then they said in particular they felt like uh they were missing they were
00:20:17.400
unprepared for collaborating version controls not taught in any class um
00:20:22.440
learning from others apis Unix you're exposed very little to to Unix semantic
00:20:28.600
versioning I nobody knew what that was when I explained it in class running clean codes this idea of I went to the
00:20:34.720
go talk two days ago and um the speaker talked about writing idiomatic code and
00:20:40.960
I I had to explain what writing idiomatic code was to the students um because I think that we know how to
00:20:49.000
write enatic code by looking at others codes in for the most part and participating in some kind of community
00:20:55.039
um uh having a community interaction and if that's absent sometimes you don't really know um if what you're writing is
00:21:01.080
idiomatic for your language um so that was question number two um number three
00:21:06.280
I asked them do you participate in hackathons the reason I asked this question was because I thought maybe had
00:21:11.720
gotten a sampling in my class of students who just weren't even exposed to hacking at all or never went to
00:21:17.240
hackathons didn't really know what it was um but 50% said they had gone to hackathons so I'm not exactly sure what
00:21:24.200
to conclude from this and I'm guessing that maybe it's because um go hackathons as a social thing with their friends um
00:21:31.520
and they don't really think uh beyond the like one project the one off uh hackathon that they do uh maybe there's
00:21:38.520
I'm not sure if uh maybe in in a hackathon is as I said
00:21:43.760
maybe it's the free food or something I don't really know but I guess for me that proved that okay good they are
00:21:49.360
exposed to hacking they are exposed to working with other people so we have to take it one step
00:21:54.640
further the fourth fourth question was um how have you used open source software before this class and um most
00:22:02.360
of them said Yes actually so I asked this question pretty much for the same reason I asked the hackathon question I
00:22:08.640
wanted to see if maybe I gotten a sampling of students who weren't exposed to open source software didn't know about communicating with over others or
00:22:16.159
um exploring other projects online contributing to open source so the fact that they are exposed open source I
00:22:22.520
think is great A step in the right direction um but I think maybe we need to take it one step further I'm not
00:22:28.360
exactly sure what to extract from this uh statistic but um I think it was good
00:22:33.559
to know anyway that they do know what open source software is and then the last question was I asked them if they
00:22:39.720
had a GitHub account before the class because I had them use git obviously for
00:22:45.000
um for submitting homework and um 90% said yes they had a GitHub account
00:22:50.480
before the class um but most of them said that they had it for a hackathon or
00:22:56.039
personal project uh one of my students last week was telling
00:23:01.200
me that he was really excited that he um was applying to an internship over the summer that required Ruby on Ra's
00:23:07.520
knowledge and he was really excited that he had uh he was in Ruby on Ra's class he had it on his resume and that he was
00:23:13.559
going to submit them a zip file of their source code of his source code that evening um of his rails app and I was
00:23:20.440
like please use GitHub so that showed me that I I guess I'm using GitHub in class
00:23:25.679
but I don't I think I need to go a little bit further with that as well and say it's pretty much the standard for how people share code
00:23:32.679
now so anyway that that was just uh sort of my own thing that I wanted to get the classes perspective just make sure that
00:23:39.840
my observations and uh my conclusions or the way I was thinking about how to
00:23:45.559
develop the curriculum wasn't completely off and I think through these numbers I think I'm pretty much on the right
00:23:52.200
track so my point for you back to now back to you back to this conference as
00:23:57.360
open source contributors I think we can contribute more than just code we can contribute knowledge and education
00:24:03.360
because there are holes in Academia in academic c um computer science
00:24:08.400
curriculum specifically so I want to go over five specific hacker habits and how I try to
00:24:15.480
teach them in my class to give you some concrete examples of some of the strategies I've taken this is just a
00:24:21.120
curated list of five of them uh that I defined and I have examples for uh of
00:24:26.679
course there are other things in class that I try to teach as well um but I just want to share some of them because
00:24:32.080
I think they're sort of interesting so the first one I'm hoping the Wi-Fi will work for this but first day of class um
00:24:39.559
yes okay this is let me Google it for you let me Google that for you uh I use
00:24:44.720
mongodb obviously for my class and so you have to skip active record right when you install rails and so I tell my
00:24:51.279
class on the first day that I will not respond to an email if I can Google your question and find the answer on on the
00:24:58.000
first page of Google results you really need to use the internet as your primary
00:25:03.120
resource um and inevitably a week before the class starts I always get um a
00:25:08.279
couple of emails from students more than than you'd think uh asking me what the textbook is there's no textbook listed
00:25:14.919
on the course site and I always say the internet is your textbook it's your primary resource um and if they want to
00:25:21.880
know some books I'll recommend some books as well because books are of course useful so that's the first thing I
00:25:28.960
really emphasize um using the internet looking things up on stack Overflow and having it be really the first place you
00:25:34.360
go to when you're stuck second thing ability to debug code
00:25:39.840
you didn't write so I do this every single day in my job I did not write the Ruby driver I maintain the Ruby driver
00:25:46.960
um this means I need to reverse engineer the Ruby driver I need to uh debug I need to add features so this skill I in
00:25:55.039
particular try to teach by um their uh authentication homework I um set up a
00:26:01.279
skeleton app on GitHub with authentication in it and I said um here's this app uh look at the
00:26:07.880
authentication elements and put it into your own app and I added a couple of bugs so they were all like oh great we
00:26:13.799
get code from the teacher and of course left it to the last minute I hold my office hours on uh Sunday afternoons
00:26:20.440
classes on Monday um my office hours have never been busier I'd say at least
00:26:25.520
three times the number of students who normally come to after hours or there I think because um having to look at code
00:26:31.840
and getting frustrated knowing where to go when you find an error is definitely a skill that they might not have been exposed
00:26:38.679
to the third thing is build something to solve a real life problem uh so this is
00:26:43.960
the first semester I'm sort of doing something like this or really pushing it um my course site is on Google sites
00:26:52.360
which is really embarrassing because it's a rails class so I decided that this semester I wanted to have my class
00:26:57.679
uh be structured almost like a hackathon and have the students build a tool for me for for them in theory um that I
00:27:06.039
would use next semester so I'm having them build a rails app that allows me to post homework assignments the
00:27:11.880
presentations that I use in class um and has a discussion forum for them and I think there's a little bit of a friendly
00:27:17.880
competition amongst the students to U make the best app because um I said that
00:27:23.080
whichever one is the strongest I'll work with a student to deploy it on Heroku and then use it next semester so I think
00:27:29.360
this sort of practical I said before that when I was at the Lou it was like the first time I had to think about
00:27:34.600
users using a system that I had created or that I was in the process of creating
00:27:39.679
and I think this sort of mentality for them um getting them to um getting them
00:27:45.760
to think about me and them and using this Tool uh is a really important skill
00:27:50.840
to learn especially in a web development class and then the fourth thing engage
00:27:57.279
with the community so I mean this in in two ways uh the first way so engage with
00:28:03.320
the community in person and through code so in person in their first homework assignment I have them sign up for a
00:28:09.120
Meetup and um they add it to their readme and push it up to GitHub sort of as a first uh GitHub commit and um I'm
00:28:17.240
really going for awareness here I don't check to make sure they actually go to their Meetup um I don't really care um
00:28:24.240
but I I realized that I do actually need to check what meet up they signed up for because a lot of them signed up for beer
00:28:30.519
enthusiasts I was like guys this is not the point um but anyway there's the
00:28:35.640
awareness now which is great this is what I was going for I can't through go through 50 readmes and make sure that they chose uh relevant meetups but um
00:28:43.120
some of them like uh make the most of uh they have a lot of uh office hours meetups for students to meet each other
00:28:48.840
I think it's been really great and then the second thing is um engaging with the community Through code uh so their final
00:28:55.399
homework assignment or their final project really which is a three week long um thing uh part of it is to do a
00:29:02.760
poll request on someone else's app and add something pretty simple like validation to a model but I really want
00:29:08.880
to um get them used to I'm going to explain in their last class on Monday um sort of the the poll request etiquette
00:29:14.960
and what that means um so that hopefully they'll get excited by this and potentially write their own open source
00:29:20.480
projects or contribute to open source projects that are out there so that's engage with the community so be aware of
00:29:26.840
other us users out there and and how you can share code with them and then the last one I want to
00:29:33.039
talk about is thinking critically about code so this is what I like to call the
00:29:38.600
leave a penny take a penny mindset so it's this idea of um contributing code
00:29:44.159
either on stack Overflow uh but then also using code from stack Overflow and and thinking about it not just plopping
00:29:50.679
into your app and trusting that it works uh so the way I try to teach this in particular is um I I I encourage so the
00:30:00.519
reason I I need to highlight this really at Colombia is because um the students are a little bit afraid of using the
00:30:06.120
internet for um for Content that they would potentially submit as part of an assignment because Columbia is so
00:30:12.960
aggressive with their anti-plagiarism policy which makes total sense I'm not saying that um that shouldn't be the
00:30:19.159
case uh but getting them used to um the the fact that you can go to stack
00:30:24.919
Overflow take code from stack overflow use it in your app um but take responsibility for that code as well so
00:30:32.000
if you so they had to do a homework assignment U where they had to write a Rask to import data and I didn't tell
00:30:37.320
them how to do it I just said use uh use this uh particular method of uh parsing
00:30:42.720
the data I gave a CSV file um and if any of them ask them like okay what do I start I said look it up on stack
00:30:48.799
Overflow go look at an example and then um but then of course like if it doesn't work uh because something they the code
00:30:55.480
they took from stack Overflow doesn't work then it's their responsibility I'm not going to I'm not going to like not
00:31:01.159
take points off because uh they copied bad code so it's just getting used to um
00:31:06.600
oh the other thing is uh using uh ruby gem so I encourage them to check out gems and if they're interested in adding
00:31:12.279
some features into their apps I have a lot of extra credit so that the students who might be a little more advanced um
00:31:18.120
have something to to uh look forward to um so I I explained ruby gems and how
00:31:23.760
you can look at a gem that might have similar functionality to another Gem and how you cross reference with GitHub see
00:31:30.240
when the last commit was and and how many downloads it has and sort of that that U thinking critically about code um
00:31:37.279
skill that all of us do pretty much every day so those are five hacker
00:31:42.399
habits just sort of a sampling of things that I I like to uh highlight in my class and again these are these are like
00:31:48.639
behaviors that I try to teach through assignments um but the actual class I'm teaching is rail so I go through um all
00:31:55.639
the specifics of rails and Convention ions and um
00:32:00.679
Etc so the number of opportunities in Tech is growing according to the US Department of Labor the number of jobs
00:32:08.519
in computer programming will be 1.4 million in 2020 and universities are
00:32:13.600
only prepared to um fill 30% of those uh jobs and according to code.org the
00:32:21.200
number of computer jobs is growing at two times the national average so it's really important that uh we we are
00:32:27.679
focusing on getting more people involved in computer science teaching more programming either in Academia or in the
00:32:33.919
community and making sure that we're touching on relevant skills because they're in such high
00:32:40.440
demand we need to bring um hacking to Academia and Academia to hacking so
00:32:45.720
that's sort of My overall message of this of this talk I really think that they should not exist um isolated from
00:32:53.120
each other they should really mutually inform each other so what can you do as a hacker
00:32:58.799
what can you do to get involved and share your knowledge luckily there are so many opportunities now to teach
00:33:05.440
programming whether it's in a high school in a community in Academia in particular uh skillshare is really
00:33:12.320
popular in New York I'm not sure about other cities but um in with skillshare you can have both an online course as
00:33:18.919
well as a course in person an ongoing course or just a oneoff one night for two hours thing um and you can make
00:33:25.600
money doing it general assembly is really popular in New York as well uh
00:33:31.039
they're they offer um immersion programs you can spend eight weeks learning how to code um so you can teach uh these
00:33:39.240
classes as well as uh workshops which are just a couple of hours over the weekend um or classes that meet a couple
00:33:46.279
times per week one or twice once or twice a week uh for a couple of weeks and you can get involved in this um it's
00:33:52.639
also great for for networking with people because uh specifically in New York I'm not sure about other cities
00:33:59.080
General Assembly tends to attract a lot of entrepreneurial mind minded people so um if you're interested in starting a
00:34:05.519
company it's one of the best ways to like gain exposure to other people who are interested maybe in the same things as you
00:34:11.119
are YouTube I put this on here because uh when I was watching wi's um uh uh uh
00:34:19.879
presentation at at the RN code Symposium he mentions he makes reference to a
00:34:24.960
10-year-old who's teaching uh C++ through a YouTube channel and if he can
00:34:30.079
do it you can do it um there's teals which is a program that New York is
00:34:35.599
implementing uh in the fall for the first time it stands for technology education and literacy in schools and
00:34:42.359
what it is is a program where Professionals in um in programming can stop by a high school for an hour um I
00:34:49.000
think it's once a week um and you have a TA and teach programming to high
00:34:54.079
schoolers so I think this type of program is really awesome awesome if you have just a couple of extra hours per
00:34:59.320
week and it means so much to um high schools as well as the students in high
00:35:04.480
school hacky hack lessons this is a GitHub repo just as an example something why I started a project that
00:35:11.200
specifically focuses on teaching programming to young people um you can add lessons to this um it's still a live
00:35:18.800
project uh even though y has uh fallen out of um he he shut down his public
00:35:25.320
presence uh podast P of course verbal blogs um rails girls um who got the Ruby
00:35:31.920
hero award this year um they have excellent workshops around the world and you can get involved with those they
00:35:37.920
often uh uh coordinate them with conferences so I know in particular Ruby
00:35:43.720
Nation will have a rails girls Workshop the day before and you can volunteers get involved in that so you can sort of
00:35:49.359
piggyback on maybe um a trip that you would already be making with some um opportunities to
00:35:55.800
teach so for you there are many benefits I mentioned that General Assembly if you're teaching there it's a great
00:36:01.800
networking opportunity um your potential colleagues will be better prepared so this means your managers your interns
00:36:08.640
your peers at work so if you help fill in the holes um in academic education or
00:36:14.119
just really help people who are trying to teach themselves rails or anything really web development um you will help
00:36:20.839
them um just as if you uh when you were learning you were looking for help as well
00:36:27.760
you can fill in holes uh no better way to reinforce your knowledge so I thought I learned I thought I knew rails but
00:36:33.520
then I tried to teach rails I still spend entire weekends before my class relearning rails or just really looking
00:36:40.440
at the source code and making sure I'm like really prepared to answer questions it's like really great way to reinforce
00:36:46.520
your own knowledge and strengthen your profile
00:36:51.760
um that's uh I mean people really love to see that you're active in the community um um as I said you don't only
00:36:57.800
have to contribute code you can also contribute knowledge and education uh build your network and of course Karma
00:37:04.880
so what I'm really advocating for is this thing called Academia I really think that hacking and Academia should
00:37:12.319
um be integrated thank
00:37:25.599
you
00:37:55.599
a