Seattle Applications Are Open!

Android OS-100.png

With our 2016 courses officially underway, we're excited for what's ahead for the rest of the year. We just wrapped up our first full-time Intro to Programming course in Portland, and our PDX students are now studying specific programming languages and frameworks including PHP, JavaScript, C#, and CSS

What's next on the horizon? We added a bunch of new course dates for our Portland campus and opened applications for courses at our Seattle location. Our first Intro to Programing course in Seattle will launch on June 6, followed by C#, JavaScript, and .NET.

Each language or framework is its own course and will run for 5 weeks. Courses will generally run back-to-back. You can mix and match 5-week courses to learn the programming skills that meet your needs. On each course page, you'll see that we've made some recommendations about course pairings. After applying to Epicodus, all students will be placed in our full-time Intro to Programming course.

For a full breakdown of our courses at each Epicodus location, check out the Portland Courses and Seattle Courses pages.

Seattle Here We Come!

We're excited to announce that Epicodus will be opening an office in Seattle! After almost 3 years and close to 450 students graduated from our Portland office, we've built a training model we're proud to take to new cities. Seattle, being our closest neighboring tech hub, is an obvious choice for our second location.

As you probably know, Microsoft is based just outside of Seattle (in Redmond), and so Microsoft's C# language and .NET framework are hugely popular in the area. Our first Seattle students will learn these technologies, as well as JavaScript and AngularJS. After we run our first series of courses and have some time to get settled, we'll expand our offerings to many of the other courses we offer in Portland.

We've started filing our paperwork with the state and begun looking for an office, and expect to have these tasks completed in the second quarter of this year. We're shooting to have our first class start towards the end of the second quarter.

Seattle's just the first stop on our journey ahead! Look forward to news about more planned office openings in the second half of 2016.

What Programming Language Should I Learn?

By Michael Kaiser-Nyman

Now that Epicodus offers so many different courses, we often get students unsure of what to take after they finish Introduction to Programming. If you're an Epicodus student or anybody wondering which language to learn, the first thing you need to decide is if you want to focus more on front-end or back-end development. Front-end developers spend their time making things look and work well, obsessing over layouts, navigation, colors, and design. If this type of work appeals to you, your best bet is to take CSS and Design classes at Epicodus.

If you're more interested in back-end development, you have several choices of languages: C#, Java, PHP, and Ruby are all offered at Epicodus. My best advice about how to choose is not to worry too much. Most modern programming languages have more similarities than differences, and Epicodus graduates often find themselves working in different languages than they studied in school. Back-end programmers often switch languages as they change jobs, or even as they build different types of software at the same job. So don't stress too much about making the right choice! That said, each language has found a bit of a niche, and depending on your interests, you might be attracted to one over another.

C#

C# is most popular among bigger established businesses, often for building internal software. Because it's been around for a long time and has the backing of Microsoft, it is one of the most in-demand languages in the job market. C# has also been going through a bit of a rebirth lately, with Microsoft open sourcing the language and surrounding platform, porting it to run on Mac and Linux, and incorporating many of the best features of other languages. If you like the idea of working for a larger company on business software, C# is a great choice.

Java

Java is also a favorite of enterprise companies, but its appeal is broader as well: it's one of the most popular of all programming languages, and it's used in everything from for high-performance processing to building Android user interfaces. Because Java has very been popular for a very long time and is used in so many applications, it is also a very high-demand language. If you're interested in working for an enterprise-level company, as an Android developer, or in high-performance applications, Java could be a good language to learn.

PHP

PHP is most used in content-heavy websites with relatively little user interaction. The most popular content management systems - Wordpress, Drupal, and Joomla - are all written in PHP, and everything from local restaurants' websites up through large complex government deployments are built with these tools. If you're keen to work for an agency that builds websites for clients, or if you like the idea of building out sites for brands, businesses, and organizations, PHP is a great direction to go.

Ruby

Ruby is a favorite language of developers building interactive web applications. If an app involves users creating accounts, entering information, and interacting with dynamic content, there's a good chance it is built with Ruby. Ruby became popular because the Rails framework, which is written with Ruby, simplified many of the common tasks associated with building web applications. It's most popular with startups and smaller companies who are looking to build their product quickly.

Though each language has its niche, there is plenty of crossover. For example, Rails' popularity inspired copycats in just about every language, and so you'll see interactive web applications written in C#, Java, and PHP, with Rails-like frameworks including .NET MVC, Spring, and Laravel. Even at one company, you might find them using PHP for their marketing site, Ruby for their web application, and Java for their back-end processing. 

The most important thing is to get the basic principles of coding down, practice a lot, and be ready to change to another language when your job inevitably does.

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.