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, unless you test out of Intro to Programming, 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 test out of the Intro class, it is $850 * 4 = $3,400.) 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 for anyone who does not test directly into a Level 2 class.

4. What does testing out of the Intro to Programming course entail?
Students who want to test out of Intro will be accountable for the material that is covered in the Intro course, including HTML/CSS, tracking their code from start to finish in GitHub, doing the assigned code challenge in JavaScript/jQuery and the language they wish to test into (Ruby, PHP, etc.), all with proper syntax and indentation, and git commit history. Many students will simply consider the Intro course as a part of the larger program if they have not yet nailed down those fundamentals. We believe it will allow students to move through the higher tier classes without the added stress of also learning the introductory material as they progress.

Students will submit their specific assignment through our code review system for enrolled students. The instructor teaching the advanced-tier class will conduct the code review and make the placement decision.

5. 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.

6.  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 and will not be testing-out of the Intro to Programming course first, 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.

7. 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.

Why We Pair Progam at Epicodus

One of the most unique aspects of how the Epicodus classroom works is that our students practice pair programming, where two people use the same computer at the same time. One person drives, controlling the keyboard and mouse, and the other person watches and talks. Typically, students are pairing with a different partner each day.

Why is this practice beneficial? We’ve found that there are several reasons why pair programming can be more effective than soloing:

Programming is less about writing massive amounts of code and more about solving difficult problems. When two people solve a problem together, they often come up with better solutions, more quickly than each working alone.

Usually, each person in a pair will have different sets of knowledge and different strengths. Pairing allows you to learn from each other.

When you work alone, you’re often tempted to take shortcuts that will come back to haunt you - such as writing code without tests. When pairing, you can hold each other accountable to writing high quality code.

When you watch somebody else code, it’s easier for you to see their mistake and catch their bugs than for them to see their own.

You don’t check your email, social networks, news, text messages, and so on when you’re pairing; as a result, you’re much more productive.

Even though pairing has many advantages, it can still be frustrating. You’ll usually be working with someone who is either more or less experienced than you, and you’ll often feel like you’re slowing down your pair, or they’re slowing you down. You might want to explore how something works, while your pair wants to focus on actually finishing the project at hand. Or, you’ll run into a nasty bug, and you’ll have different ideas about the right way to try to fix it.

Every day at Epicodus, before students start programming, we ask pairs to check in with each other. The pairs discuss what each of their personal goals is for the day or the lesson, they share their strengths and weaknesses (both in programming and in pairing), and they talk about what they need for a happy and safe work environment. At the end of the day, the pairs ask each other for feedback on how the day went.

Pairing is challenging because each student is bringing a different set of experiences, interests, and backgrounds into the classroom, not to mention different communication and learning styles. In the long run, embracing those differences helps to enhance learning capacity and problem solving skills, creating more well-rounded programmers. 

What's Ahead for Epicodus in 2016

2015 has been an amazing year for Epicodus so far. By the end of the year we will have trained and helped find jobs for more than 200 students. Looking ahead to 2016, we're excited to switch up our course format and add some new classes to the mix. 

New Courses

Starting in January, we will be offering several different languages and frameworks including Intro to Programming (full-time and part-time options), Ruby, PHP, Java, JavaScript, C#, CSS, Rails, Drupal, Android, .NET, and design courses.

How the Classes Work

Each language or framework will be its own class and will run for 5 weeks. Classes will generally run back-to-back. You can mix and match 5-week classes to learn the programming skills that meet your needs. On each class page, you'll see that we've made some recommendations about course pairings.

After being accepted to Epicodus, you'll automatically be enrolled in our Intro to Programming class. If you have some background in coding, you can test out of this (or any other) class by submitting a code sample. 

To participate in the Epicodus internship program, you will have to complete prerequisites.

If you have any questions about the new program structure, feel free to leave a comment, or send us an email at hi@epicodus.com.

Encouraging the Growth Mindset

Mindsets can be taught; they’re malleable.

Now that we’ve kicked off our final four classes of 2015, we wanted to share one of the philosophies that runs throughout our courses: the growth mindset. At the start of each class we have all of our students read this excellent article from Khan Academy founder, Salman Khan, which lays down several of the key tenets of developing a growth mindset.

The brain is like a muscle; the more you use it, the more it grows.

Researchers found that people adhere to one of two mindsets: fixed or growth. Those with fixed mindsets (mistakenly) believe that people are either smart or not, and that intelligence is dictated by genes. But people with growth mindsets believe that intelligence can be grown through struggle, effort, and failure.

Our intelligence is not fixed, and the best way that we can grow our intelligence is to embrace tasks where we might struggle and fail. 

People come to Epicodus with a wide range of experience in and natural aptitude for programming. The most successful students, however, are the ones that embrace the growth mindset and know that when they struggle, their learning capacity grows. Our teachers at Epicodus help all our students develop a growth mindset, and encourage students to help their peers develop growth mindsets as well.