I regularly hear from people who are interested in starting a coding school and want to learn more about my experience starting Epicodus, so I thought I'd jot down a bit about our history, what's worked well (and not), and advice I have for other people.
Before the first Epicodus class, I did a lot of networking to find out what companies were looking for in junior developers. I made sure that there was actually a market for the students I was going to teach, and learned about what companies value in junior developers. What I heard more than anything else was that specific languages and technologies were less important than a hunger to keep learning and an attitude of humility. And while there were many companies who weren't sure that graduates of a program like Epicodus would be a good fit for them, there were just as many who were very excited about hiring junior developers.
Next, I turned to the student side of things. I volunteered at local meetups and events for beginner programmers to see how other people were teaching beginners. I also went through many books, videos, and tutorials myself. At the in-person events, I watched the students learn to see which lessons and approaches were effective, and which didn't work as well. After getting some experience, I assembled my own lessons and put on several free evening workshops to get more experience teaching and running classes, and saw how I could make my lessons better. I asked for a lot of feedback from the workshop participants.
At that point, I felt ready to run my first Epicodus class. I spent a couple months getting the curriculum ready and promoting the class: I announced at local meetups, emailed local tech mailing lists, posted on online forums, and listed our classes on several websites for coding schools. I rented a room in a local co-working space, and bought computers and furniture.
I knew that teaching staff would be my biggest cost and potentially very hard to hire, so I decided to try an unusual approach to structuring Epicodus's classroom. Instead of giving lectures in class, I completely embraced the flipped-classroom model and put all of the lessons online for my students. In class, students would just work on coding projects all day. I figured that way, I wouldn't need to hire experts to teach my classes: instead, I could just hire strong graduates to help out the next batch of students, and the lessons, which need more experience and expertise to make, would already be ready to go. Additionally, I had all of the students pair-program in class, as I had seen that two people working together learn from each other and need less help from teachers, and that would help keep the number of teachers we needed down.
I learned an awful lot of the first class. The first thing I realized was that I was totally off-base on my student to teacher ratio. With the way I had structured the classroom, I had nothing to do most of the time! Another important lesson I learned was that after the class was over, many of the graduates had a hard time structuring their job search. Finally, I discovered that there was a lot of demand for other languages than the one I taught initially - it turned out that the choice of language was more important than I had though. So for the next class, I tripled the number of students to 24, incorporated job search prep into the curriculum, followed up with all of the graduates regularly until they found jobs, and expanded our curriculum to cover two languages.
For the third class, I hired two teachers and increased the class size to 60. That 1 teacher to 30 student ratio turned out to be a good sweet spot. It also let me focus on the employment side of things, which I wanted to continue improving. We created an internship program with local companies to help our students get real-world experience before graduating, and instituted a more formal resume and cover letter review and mock interview process. We also started working on adding classes in other languages.
Since then, we've continued to grow, add staff, and improve. Every day, we challenge ourselves to make our classes and career services better, and we constantly ask our students for feedback so we know how we're doing.
For people thinking about starting a school like Epicodus, here are a few things I'd suggest:
- If possible, start the school with two people. Have one person focus on the classroom, and one focus on everything else (admissions, career services, administration, etc).
- Talk to local employers and learn what languages are in high demand.
- Utilize the flipped classroom structure by building out all of the lessons as evening/weekend homework, and use the class time just for coding. Feel free to use Epicodus's materials at learnhowtoprogram.com.
- Provide a lot of structure and support for job-seeking, starting before students graduate.
- Ask your students for lots and lots of feedback.
- Little things: incorporate your company, get a business bank account, buy standing tables from MultiTable with Ikea tops, use 27" iMacs (no reason to skimp on computers - it's way easier for pairing and for teachers to help out, and over the course of the computers' lives the difference in cost is negligible), and take advantage of all of the operations and software tools Epicodus has open-sourced.
If you find this helpful in opening a school, drop us a line and let us know!