Epicodus 2015 Year End Report

Epicodus_2015_Report_pdf.png

As 2015 came to a close, I thought a lot about Epicodus's mission:

Epicodus's mission is to help people learn the skills they need to get great jobs. For us, “great jobs” means jobs in growing industries that pay well and provide rewarding work. Beyond the particular skills needed to get these jobs, we aim to help our students become confident self-teachers who can adapt to changing job markets, and great communicators who will work well in teams. We focus on serving people who, by birth or circumstance, don't have easy access to learning the skills they need to get these great jobs.

Four years ago, the US economy was in a bad place, unemployment was high, and many people were struggling to even scrape by. At the same time, companies were struggling to find software developers, and were offering high wages and great benefits to attract the talent they needed. Epicodus was born to try to bridge this gap, helping people get these great programming jobs and helping companies find the talent they need, and three years ago we had our very first class of 8 students.

Today, the economy has mostly recovered, and the coding school phenomenon has exploded, with over 5 dozen schools across the country. However, many of the problems we faced 3 years ago still remain. Software companies still are desperate for programming talent. Many people are working part-time involuntarily. Wages for middle- and low-income workers haven't increased in many years. And while coding schools have made a dent in the problem, most are still inaccessible to the people that need their help most, charging 5-figure tuition and offering short classes that require coding experience before attending.

We've continued to evolve Epicodus to take these problems head-on. We've been adding courses in languages Java and PHP that aren't trendy but where many more jobs are. Our employer outreach team has grown from 1 to 4 full-time staff this year to connect with more companies. We added a new introductory course for people who have little to no background in programming. Our programs continue to be several months long, giving students more time to hone their skills, and our tuition always has been and continues to be a fraction of other schools', including community colleges'.

In 2016, we're excited to continue building on all of the progress we made this year. We'll be adding even more courses, including C# and design. We're defaulting all new students into our introductory course to make sure that everybody in Epicodus starts with a solid foundation (while still having the opportunity to test out for more experienced students). And we're getting ready to open up an office in another city. In the year end report, you'll find a recap of the highlights of our year, information on how Epicodus compares to the industry, stories from students and more. Thanks for being a part of our community! 

- Michael Kaiser-Nyman, President

Why We Shouldn't Make Kids Learn to Code

By Michael Kaiser-Nyman

As our society grows increasingly aware of the power of computer programming, both to shape how our world works and provide high-demand jobs, some people have suggested that we require all children to learn how to code. I think this is a terrible idea. Here's why.

When I was a kid, I became interested in programming, and I was lucky enough to have parents who helped sign me up for community college classes. In an era when coding has become such an important skill, it would be absurd to require kids to navigate the community college system if they're interested in learning to code, and despite this post's title, I'm all for offering courses in our K-12 education system. But I also strongly believe in the importance of letting kids choose if and when they want to learn programming. When my interest waned as a teenager, my parents didn't pressure me to continue coding, and I think that's part of why I ended up becoming a successful developer - I had the freedom to pursue it when I wanted to and when I was ready. Forcing all kids to learn to code risks killing the joy of it for those who would otherwise come to love programming, and turning it into yet another test to take for those who never had any interest in the first place.

Furthermore, the focus on teaching kids to code is misplaced: the most important skills our education system can provide to children have nothing to do with software or technology. When I started Epicodus, before I ever wrote a single word of curriculum, I asked many programmers and hiring managers what Epicodus should teach. I was shocked: people talked very little about languages or design patterns or technologies. Instead, I heard about teamwork, self-awareness, communication, and humility. "Sure, that's fine," I would say, "but what about the coding skills? Isn't that the important thing here?" The resounding answer I received was "no". Across the board, employers told me that they needed a certain baseline level of skills to hire somebody, of course, but so long as somebody had that baseline, their so-called "soft skills" were far more important. One developer told me something along the lines of: "I can teach a junior developer the coding skills they need to solve the problem at hand, but I can't teach the curiosity they need to solve the next problem without my help." Another told me "The greatest risk to a software company isn't their code, but how their employees work together."

At Epicodus, we try to foster soft skills like communication, teamwork, and curiosity. But the best time to develop these skills is as children. People can learn to code as adults - I see it happen every day. Their gains in soft skills are smaller and come more slowly, though. It would be great if every child had the opportunity to learn to code, but it would be far better if every child graduated high school excited to learn and explore, effective communicators, and adept at resolving conflict with their peers. Even if they had these skills and had never seen a line of code before, they'd likely turn out more successful than a programming whiz coming out of the average American high school today.

There are many great reasons to encourage kids to learn to code: it sets them up with a vocational skill, it helps them understand how our technology-driven world works, and it develops their problem-solving and logical abilities. But not every person wants or needs to learn to code, and even those who do can be successful learning as adults. The interest in coding in K-12 education is misplaced. It's far more important that we re-tool our education system to give kids more opportunities to develop teamwork experience, communication skills, and curiosity to become lifelong learners.

What I Learned from Code School

By Mike Bunker

Having no idea what I was doing I decided to enroll in a Code School this summer to learn the basics of programming and web development. I decided to attend Epicodus, a 4-month full time coding “boot camp” teaching Ruby/Rails and JavaScript along with a few different frameworks. I was a Political Science Major in college, and have no experience in the tech industry before starting at Epicodus (as you will see from that wonderfully awful picture below). It was a very challenging and rewarding process to complete the classes and I am happy with my decision to attend Epicodus and be a part of this industry. Here are some of the things I learned and some of my thoughts about my experiences at a code school.

Ping Pong test website built for my Epicodus application.

Ping Pong test website built for my Epicodus application.

When you need help, it's OK to ask for it.

And I asked a lot. From the teachers, other students, to stack overflow and the never ending sea of the internet. I quickly found out that this seems to be a normal thing for developers (or so I am constantly told). Many people work in teams which are collaborative by nature. It is nice to have people to lean on for help with the code. It was great to be able to lean on other students for help when tougher problems arose, and for when those time arose that the students couldn’t solve a problem ( I am looking at you Ember.js), then the teachers were there to help sort us out.

A sign I kept during my time at Epicodus.

A sign I kept during my time at Epicodus.

Pair programming is very difficult.

Pair programming is an interesting thing. There are plenty of reasons for why it is beneficial (and I am sure a thousand blogs doing it better justice than I would), and Epicodus regards it highly in their curriculum. There were a lot of days that pair programming was awesome. I had good partners and learned a lot and contributed a lot. However that was not always the case, and I found it extremely difficult to work with people who for various reasons didn’t “click” with me as programming partners. People learn in different ways, and even those who learn in similar ways don’t always learn at the same pace. While this can be beneficial in certain circumstances, I found myself annoyed with the process from time to time.

Appreciation for tech.

Before attending Epicodus, I didn’t have a lot of appreciation for how difficult it is to be a web developer/programmer. Even things as simple as clean good looking web pages can be difficult to accomplish (like getting that form in the absolute center of a responsive page), and having worked on trying to make web pages/programs/apps that are similar to what I have thoughtlessly used most of my life I now know how to appreciate the technology that I am using.

Building something from scratch is amazing.

My time at Epicodus has culminated in me building a chess game explorer app. I am hoping to write a post specifically about that later, but it has been an incredible experience to set out with an idea of something I want to do, work to get it done, and see it come to fruition (even though there is still a lot of things I want to do to make it better.) The first time I got user authentication to work and when the chess board finally took shape were two absolutely incredible moments for me. That success only fuels my desire to learn and do more. Of all the benefits I feel I got from attending Epicodus, the ability to create something meaningful is the single greatest thing I have gotten.

Chess app taking shape.

Chess app taking shape.

The people are important.

I feel like I got extremely lucky with the group of students that attended Epicodus with me. For the most part, they were smart, fun and driven people who I have spent quite a few nights with getting to know over a pint. I have gone to a few tech meetups and events around Portland since I started Epicodus, and community seems to be important to everyone here. People are excited and passionate about not only what they do, but the tech industry in general. The energy and excitement at the PDX Tech Crawl this year blew me away.

A great group of students and teachers.

A great group of students and teachers.

Mike Bunker was a student in the Summer 2015 Ruby/JavaScript/Rails course. This post was originally published on his site Bunker's Code Blog.

Epicodus's New Office

This weekend, the Epicodus team picked up our iMacs and our standing desks and moved into a brand new space at 400 SW 6th Ave. With beautiful eighth floor views and lots of room to grow, we're excited about this next chapter. For the last few months, our three current classes have been in separate locations, so we're thrilled to have everyone under one roof again. Check out the video below for a sneak preview of the new office!

Join Epicodus for Demo Day on December 4

Epicodus is hosting it's first ever Demo Day, and we want you to be there!

Students from our most recent classes (Ruby/JavaScript/Rails, PHP/JavaScript/Drupal, Java/JavaScript/Android) and some of our alums will be showcasing apps they've built and answering questions about their projects. This is a fantastic opportunity to connect with Epicodus students as they show off their programming chops.

Join us for an afternoon of light refreshments and great apps, and as a bonus, you'll get to check out Epicodus's brand new classroom space where our next round of students will be learning how to program in 2016.

Join us on December 4, from 12:00 - 4:00pm! Space is limited, so please RSVP here.

Sneak preview of our new space at 400 SW 6th Ave!

Sneak preview of our new space at 400 SW 6th Ave!

Aptitude, Attitude, and Experience

By Michael Kaiser-Nyman, Epicodus President

Over the years of teaching people to code, I often get asked what kinds of people make good programmers, or how to know if somebody's cut out to be a developer. I've certainly noticed that some people have natural talent for coding and can pick it up remarkably quickly, but I'm also convinced that it's much less important than many people think.

There are three things I've seen that determine how quickly someone can pick up coding: aptitude, attitude, and experience. Aptitude is someone's natural, unearned talent. Attitude is the way someone approaches learning to code. And experience is simply how much time they've already spent learning how to code.

Aptitude is of course important, but for most people, their attitude and experience have a much greater impact on their learning curve. Someone who can stay positive while pushing through frustration is going to learn more quickly than another person who gets discouraged. Someone who isn't afraid of learning from their mistakes will figure things out faster than another who is scared of messing up. Someone who can slow down and pay attention to the details will succeed more quickly than someone who tries to blaze through problems without really understanding what's going on.

And besides your attitude, there's just no substitute for experience. What looks like wizardry to someone who's been coding for a month often feels like boilerplate to someone with just a few more weeks of experience. And just as importantly as actual coding knowledge, most developers build good attitudes as they gain experience.

If you're a new programmer, my advice is to not worry about your aptitude - there's nothing you can do about it. Far more important is the way you approach your learning, and the amount of time you spend. Cultivate healthy attitudes, be patient with yourself, and spend lots of time coding. For most people, attitude and experience are far more important than whatever natural skills you were born with.

The Myth of the Best Programming Language

By Michael Kaiser-Nyman, Epicodus President

As an aspiring programmer, it can be hard to know what programming language to learn. You'll often hear hyperbole like "In the future, everything will be written in JavaScript," or "Ruby is the most elegant language." Programmers you meet may warn you against languages they don't like, and you'll come across stories in the tech media about how some language or technology or tool is making everything else obsolete.

My advice to you is: Don't worry - just code.

Most programming languages have more similarities than differences. No matter what language you learn first, you'll need to begin by mastering the concepts of variables, branching, and looping. Most languages use similar patterns of code organization (primarily based around object-oriented design). There are variations in the syntax, structure, and tools, but by and large, programming languages have far more in common than they have differences, especially among the languages commonly used in web and mobile development.

This point really came home to me the other day, when I was chatting with an experienced developer who has worked with many languages over the years. He told me a story of joining a new team that used a language he had never used before. A junior programmer needed help with a problem, and even though the junior had more experience with the team's language, my friend immediately knew that the language probably had a tool to solve the problem at hand. He told the junior where she could probably find it, and sure enough, the junior was able to use it to solve her issue.

When I first learned to code, I agonized over what language I should learn. I started on one language, got stuck, tried another one, heard that it wasn't a good language, went back to the first, got frustrated, and so on. Sometimes it seemed like I spent as much time trying to figure out what language to learn as I did actually coding. In hindsight, I realize that no matter what language I tried, I was going to have a tough time, simply because the basic principles underlying all languages are all difficult to understand at first.

So if you're just starting out, I suggest you aspire to be like my friend the experienced developer. Instead of getting caught up on which language to start out with, just dive in. If you come to Epicodus, you'll be required to learn at least two languages before graduating, but I'd encourage you to learn even more if possible. Every language has its place, and many of the "unhip" languages like C# and Java are actually in higher demand in the job market. The more languages you know, the easier it is to pick up new concepts, dive into new projects, and, of course, get a job.

2016 Classes: Frequently Asked Questions

We've been thrilled with the interest in our new class offerings for 2016, and with that interest has come a lot of questions! Below are answers to some of the most frequently asked questions about admissions and our new course structure. If we haven't answered the specific question that you have, feel free to reach out to us at hi@epicodus.com.

1. What are the requirements for graduation?
We want to make certain that students wishing to go through our entire program, from the introductory course through the internship course, have a clear picture of the requirements and expectations for graduation. For students who are not attending our program on an a la carte basis and wish to complete the full program, please note that two courses from the Level 2 section will be required in order to be eligible to take a Level 3 class and then an internship. In other words, you will need to take a minimum of five courses to graduate: Intro to Programming, two Level 2 courses, one Level 3 course, and the internship course.

2. What does the whole program cost?
The discounted tuition for the complete track is $850/class * 5 classes = $4,250. If you pay the up-front discount, any additional courses are $850 apiece, which you can pay as you go. (Part-time Intro to Programming students pay a different rate for that particular class.)

3. Does the Internship course have a tuition price? Have you changed the cost of the program?
Yes, the internship course does cost the same $850 as the other classes. (The internship has always been considered a course with that tuition price, and dividing the program into its 5-week modules has simply made that more apparent.) What has changed is the addition of the Intro to Programming class, which lengthens the whole program by five weeks.

4. Can I call you or drop by to talk?
Since we are a small staff and are usually busy with the current students during the day, we offer a monthly drop-in hour for potential students to come by, meet with a member of the staff, see the facility, and ask questions. These drop-in sessions are usually held the first Tuesday of the month from 5:30pm to 6:30pm. They are well-attended by potential and newly-accepted students. Potential students who cannot come to the drop-in hours and want to speak with us in person or by phone should email us at hi@epicodus to schedule an appointment.

5.  What if the courses I want to take are not offered in the order I prefer? I don’t want to lose momentum by waiting 5 weeks for it to be offered again.
As you plan out your time with us, please pay attention to the dates courses begin to avoid having a downtime while waiting for your preferred class to start. (For example, if you are interested in the Winter 2016 Java track, it would be best to start the whole program in March so that you could take those classes in succession.) That being said, we encourage new students to consider all the languages we offer as viable means to creating a successful career transition into coding.

6. What are the Course Tracks? What classes should I take?
We no longer have prescribed tracks for students to take, as we have now divided the program into the 5-week course blocks, allowing enrolled students to choose among the courses that are being offered at a given time. Enrolled students are now also able to take more than the minimum required 5 courses, if their time and budget allow.

That being said, there are courses that combine well together, and students are certainly welcome to take the courses we've traditionally offered together, such as: Ruby, JavaScript, Rails; PHP, JavaScript, Drupal; Java, Javascript, Android; C#, JavaScript, .NET; CSS, JavaScript, Design. The frameworks do need to come after the base language, so you should expect to take Ruby before Rails, PHP before Drupal, Java before Android, etc.

Student Project Feature: Building a Static Website with HTML and CSS

Class: Intro to Programming

Task: Build a static website

Amount of Training: 4 weeks

Languages Used: HTML, CSS

Working in teams of four, our Intro to Programming students used their newly-minted HTML and CSS chops to create a great-looking static website. Each team needed to use Git to track their website’s progress, and each project needed to include the following elements:

  • A main page and 2-3 subpages that are linked to the main page
  • All of the HTML tags the students had learned so far (p, h, ul, ol, li, em, strong, a, img, div, span)
  • A custom made stylesheet that used selectors, properties, and values
  • Divs and spans to keep the page organized
  • At least one float
  • Use of the box model to create custom border, padding, and margins around an HTML block element
  • Nesting in the stylesheet to add different styles to each child element

The group whose project is featured here, decided to build a website for a restaurant. Using a combination of Bootstrap and their own custom stylesheet, the group built a sleek website with a rotating gallery of images on the home page and subpages for the restaurant’s menu and contact information.

You can check out the full project on GitHub Pages
 

Accidentally Sexist

By Michael Kaiser-Nyman, Epicodus President

I was chatting with a friend of a friend the other day who mentioned she was thinking about taking Epicodus. Out loud, I said "Oh, that's awesome! I really hope you do it." But in my head, I was worried. What if she wasn't good at programming? What if she didn't do well in the class? What if she didn't get a job afterwards?

I noticed these thoughts bouncing around and then stopped for a moment. Why was I so concerned? We have really high completion and employment rates, and I've had several friends and acquaintances take Epicodus before. What made me worried about this person?

And then I realized that it was because she is a woman. 

It was pretty surprising and I felt pretty terrible to catch myself thinking that way, especially since Epicodus has been working hard to encourage more women to get involved in tech. I shared my train of thought with a female friend of mine who's worked in tech for a long time, and I was really surprised when she confided to me, "I catch myself doing that all the time."

Our assumptions about other people based on their gender, race, and other groups characteristics are embedded really deeply in our minds, and often come out without us even realizing. I know I can feel really ashamed when I realize I've had a sexist or racist thought, and often my first instinct is to try to pretend that it didn't happen, or justify it in some way. But recently I've been trying to embrace the idea that those thoughts are going to be there, whether I like it or not. I think it's better that I acknowledge them and correct them, than to try to ignore them while they continue to secretly undermine my attempts to treat people equally.

It can be difficult for many people, myself included, to talk about racism, sexism, and other forms of discrimination, and even more difficult to acknowledge that I can contribute to them, even when I'm trying not to. But the first step towards making something better is admitting you have a problem. And it's comforting for me to know that I'm not the only one with this problem, that even my female friend who's long been involved with promoting diversity in tech has this problem.

So, I'm accidentally sexist, probably more often than I realize. We all probably are. Let's try to acknowledge it to ourselves and each other, try our best not to be, and work hard to make up for it.