gSchool: More than Learning to Code

On January 28th, Jeff Casimir and 24 students began a new journey as gSchool opened at Galvanize, a new coworking community and innovation space in Denver. Engine Yard sat down with Jeff to learn the full story.


Jumpstart Lab has had a lot of success in DC. What made you pick up and move to Denver?

We've been in DC for a long time, and were ready to try something new. For the first half of 2012, I ran Hungry Academy at LivingSocial in DC. Every student from our class was hired to join LivingSocial's engineering team. As you'd imagine, injecting 24 engineers into even a large dev team takes awhile to settle down, so LivingSocial wasn't ready for another run right away. We started looking for opportunities to try a tuition-based school model, met Jim Deters and Chris Onan from Galvanize, and knew we had a right fit.

There seem to be developer training programs popping up everywhere. What's interesting about gSchool?

I have a social change agenda. My first six years out of college were with Teach for America, through whom I taught Computer Science and co-founded a middle school in downtown DC. I feel really lucky for the opportunities I had, in my teenage years, to hack together old computers and start experimenting with programming. Teaching programming is my opportunity to help others start down that amazing road.

As a community, we've been at the internet-based startup game for 15 years. When you look at normal people, what applications do they use? Facebook, GMail, and that's about it. Reg Braithwaite hit the nail on the head last week with this post -- there's so much latent potential. There's surely good work going on many places, but I think we need to stir the pot. Developers coming from diverse backgrounds are better suited to tackle problem domains that we don't know about, or that are outside of the normal developers' comfort zone.

I see gSchool having three distinct levels of impact:

1) For Individuals. A good number of the folks who are coming into development these days are coming from endangered careers and fields. If they become a developer, work hard, and continue to grow, they'll never again worry about their paycheck. Even if a company shuts down completely, there'll be a dozen others desperate to hire them. Meanwhile, developers get to work on creative, interesting, difficult problems with great pay, benefits, and schedule. That level of job security and joy has a transformative effect on individuals, couples, families, maybe even generations.

2) The Community. Obviously there's a shortage of quality developers, especially in the Ruby community. At some point, choosing to build your products using Ruby on Rails becomes a dangerous choice.

What if it works? What if traffic starts surging and you need engineering help? Scaling expertise? The ability to break your one monolithic app into lean services? There's a very real possibility that, even if you have a pile of cash, you can't hire people with the skills you need. How would your stakeholders feel if you need to turn off new registrations because your code can't handle the load?

A business that's playing it safe should choose a more mainstream technology just because of labor availability. For years, the Ruby/Rails community has survived by developers hopping from place to place. The total number of developers is growing, but not quickly enough. There's no big solution on the horizon and the community can't continue to grow in this accidental fashion. We have to invest in creating new developers to maintain the health of the community.

3) The Big Picture. The Ruby world has always been a collection of weirdos which is one of it's greatest strengths. We have so many stories of people that came from unusual backgrounds. But now that Ruby is in the mainstream, we need to consciously cultivate that diversity in hobbies, interests, races, genders, nationalities, and socio-economic backgrounds. That crazy mixture is what sparks innovation and passion.

How did you come up with the gSchool format?

I've been teaching programming for 9 years, and have learned that becoming a developer is about confidence more than anything else. The one essential characteristic a developer needs is a stubborn belief that you can get it done. Confidence doesn't come from reviewing a ton of material, it's built by solving difficult problems over and over -- in other words -- deep practice.

I could stand in front of the class and "go through" everything a new developer needs in about two weeks. But becoming a professional takes much longer. You can't "waterfall" developer education and just learn one piece after another. Across our six month program, students build 10 complete projects. We focus on the simple things you have to do over and over so they're automatic and the complicated things you do a few times to know they're possible. The topics don't roll out linearly, they spiral around each other.

What is your teaching philosophy?

Our model is to challenge you just beyond your ability and support you just below your need. Learning should always be uncomfortable. When I used to work with young teachers, I'd ask "Are you giving them the warm bath right now? Is everything just pleasant and comfortable?" That's not learning, that's nodding.

When a teacher delivers effective instruction, the student never asks "Why do I need to know this?" They instead say "OH! That's how you do it!" We don't teach things until after you need them. The student has to struggle, first, because that's what real developers do every day. When you have that context, have battled with the problem, then you can really appreciate the technique or tool to do it right.

What is your ideal applicant like? How did you make your decisions?

We didn't have a concept of an ideal applicant, more of an ideal group. A strong class needs a mixture of personal characteristics -- introverted and extroverted, varying professional experience as well as the normal diversity axes. That's what the world looks like, so that's what our class should look like.

That being said, there are attributes that make candidates stand out. The biggest thing we look for is the evidence of being a self-starter. Being a good developer means asking and answering your own questions. We look for that determination in whichever field or pursuit they come from. We also look for people who are excited, who can communicate and channel their passion. We'd rather have a student with less tech experience but had the right attitude than an experienced programmer who's a jerk. Like real dev teams, it's just not worth having a person who's difficult to work with, regardless of their skills.

Are there any trends that you see in the applicants?

We saw a good bump in female applicants compared with Hungry Academy, so I think efforts like RailsBridge and RailsGirls are really working. The average age of this group is a little higher, about 26. I definitely saw a continuing trend of what we've called "the broken dream." The story goes something like this: "I went to college, got this job I wanted. I thought it was going to be awesome but I hate it. I want to do something creative and engaging, not fiddle spreadsheets all day." In development, you don't have to defer happiness. You can do the cool and interesting work right away.

You offer graduates a job guarantee. How will gSchool help graduates find a job?

If students graduate from our program and don't have companies banging down their door, I have really screwed up. Frankly, I'm more concerned that people are going to get hired away from us early than them not getting hired at all. We have a lot of local interest in the Denver/Boulder area, but also have companies NYC, SF, Seattle, etc interested in our graduates. We recruited about a dozen companies who are really interested in hiring graduates to contribute to the scholarship pool in exchange for early access to the students. Those companies participate in our demos, mentoring, office hours and by speaking at the program. These companies understand that they have to sell themselves as the place students want to go.

Why would a student go through your six months, when other programs are running just a few weeks?

It's not that we're better than other programs -- we're shooting for a different goal. Other programs have a legitimate purpose in developing apprentice-level programmers. These "world class beginners" can be a great fit for companies with the resources necessary to intensely mentor them. But, to make that real change we were talking about, the community needs professional developers.

That's why our program is twice as long as anyone else. That's why we have the most experienced teaching team anywhere. As best we can tell, I've taught more Ruby and Rails that anyone in the world. I'm joined by Katrina Owen, Franklin Webber and Steve Klabnik, each of whom have deep experience in teaching and mentoring developers.

So what is a "professional developer" in your mind?"

A professional developer can take a business need, distill it into stories and requirements, plot those into managable iterations, develop the software to fulfill those requirements, take feedback from stakeholders, continually revise the plans and requirements, and ship. Every developer benefits from support, but professionals don't need their hand held. On top of those capabilities, they have the humility and determination to continue learning, respect for the work and people, and pride in helping build the community around them.

How can other developers be involved?

Every Friday we like to have a guest speaker. In person here in Denver is ideal, but video Skype works well too. We favor technical talks related to our current coursework. We're setting up 1-on-1 mentoring relationships for each student, about 6 hours per week of interaction, and have a few spots left there. Lastly, on Tuesdays we have office hours from 2-7pm Denver time and invite devs to help answer student questions and review code, both online and in person.

How can companies hire your graduates?

Chad Pytel of Thoughbot raised the question recently of "Why do people have to pay for developer training? Companies should foot the bill." We're trying to reduce the tutition burden on students as much as possible, so we ask companies to contribute to the scholarship pool. Join that group, and you're invited to all our demos and events, and I'll personally work with you to find the people that are the right fit for your needs and culture.

So when's the next class?

This first class starts January 28th and our next session will start in September. Applications officially open in March, but we've put together an early app that's up at

What if someone wants to learn without committing to a full-time course? Our entire business is built on the generosity of open source software, so we do our best to give back. Everything we write for the class, from daily outlines to topic tutorials, is freely available for non-commercial use at IMG_9890