Choosing a Programming Bootcamp

One of the biggest hurdles I faced this year in deciding to make the move from software support over to software development was deciding how I’d get the skills to become employable.  There are a multitude of code schools, programming boot camps, and online courses out there that all promise to get you “job ready” in X amount of time.

So where do you even start when evaluating the options?!?

Back then I had so many questions and felt like I was staring more at marketing copy and pipe dreams than actual information regarding most of the choices available.  Sure some of the schools had flashy websites or amazing testimonials while others seemed like glorified versions of for-profit “colleges”, but for the most part there just seemed to be a lot of “that might be good….” options.

Fast forward through three months of boot camp, a five-week internship, and now three months on the job as a software developer and here I am, looking back with the benefit of hindsight and having lived the experience first-hand.  To that end, I wanted to write something up to help others make a potentially better choice when evaluating a potential coding boot camp program.

Factors to Consider:

Online versus In-Person Class Settings

  • Do I need to keep my job while attending code school?  
  • Am I comfortable enough financially to not work for 3-4 months?  
  • Am I disciplined enough to work independently through a course?  
  • Do I need the focused attention that an in-person course would offer?

The online versus in-person debate is something that even traditional college students have had to deal with.  While some people can handle the extra organization and self-motivation that an online course requires, there are others (myself included) who need that in-person element to be accountable and actually just sit down and do the work.

Online courses tend to require less of a daily time investment and are geared towards those who only have a few hours a day/every few days to work on things.  This means that those courses will typically take longer to complete.

These type of courses didn’t work for me because I couldn’t stay focused while working from home/work/a coffee shop and would always find was to distract myself or procrastinate.  “I should work on that.  Well let me make some food first.  Well there are dishes in the sink, I should do those.  Man, we’re out of dish soap, I’ll just go get some.”  Fast forward 3-4 hours later and I’ve only managed to put in 20-30 minutes of work.

In-person courses are typically 30+ hour per week courses that are held during normal 8-5 working hours.  There are some afternoon and weekend only courses available which have around the same total length of time to complete as an online program.  I went to an in-person, 40 hour a week boot camp because having that face-to-face accountability really helped me focus on what I was doing.

Ask yourself:  Do I need to keep my job while attending code school?  Am I comfortable enough financially to not work for 3-4 months?  Am I disciplined enough to work independently through a course?  Do I need the focused attention that an in-person course would offer?

Pair Programming

  • Do I like working with others?  
  • Am I willing to put aside my ideas about how things should be done and follow another person’s idea or be willing to compromise?

Pair Programming is all the rage these days with in-person and occasionally even online based code camps.  Sitting next to another student while you take turns writing code can give you another perspective into the project you’re working on and provides a type of “instant” code review as you’re going along.

While this can be great, pair programming carries the same risk with it as other group work does:  sometimes your partner is great, sometimes you wish their hands would fall off so they couldn’t touch the keyboard ever again.  Finding a good person to pair with can be a challenge if you have a small class size, so keep that in mind.

Curriculum

  • How best do I learn new things?
  • Do I want to do the reading/lecture portion on my own or would I prefer a teacher to guide me through the material?
  • Do I want live feedback or is something more asynchronous (email, etc.) ok?

Knowing how you learn best will help you pick the format that works best for you.  If you need a live teacher and lecture portion to really cement the ideas then an online course where it’s mostly text/video based probably isn’t your best bet.  Likewise, if you prefer to just have the instructor around when you’re working on a project then an in-person lecture format might not be right.

Teachers/Instructors

  • Do I want my instructors be industry professionals who teach me the material?
  • Do I just need someone who I can ask questions who knows at least a little more than me?

I’ve mentioned teachers and instructors a few times so far but let’s really dive into that for a little bit.  A lot of the programs out there use these terms a bit interchangeably but how they implement them varies widely.

Attendance/Tech Policies

  • Do I want to have my attendance tied to my grade/passing?
  • Do I want to be told that I can’t have my cell phone out?

While this seem like a minor concern to some, it can grate on some students to pay money for a program and then be treated like a high school or college student.

Financial Cost

  • How much am I willing to spend?
  • How much CAN I spend?
  • Do I pay upfront or should I finance it?
  • What is the return on the investment for the time/money spent?

Cost for boot camp/code school programs can vary widely.  Just in Portland alone, with only three larger local schools, the cost varies from around $3,000 all the way up to $10,000+ for programs.  While $10,000 might be less than what you’d spend for an equivalent amount of time/education at a college/university, it is by no means “pocket change” for most people.

You also have to factor in your cost-of-living (rent, groceries, etc.), disrupted income if you can’t work while in the course, how soon after school you might get a job,and how much you might realistically make in that junior developer position.  This can all start adding up quite quickly once you start budgeting, so pre-planning and know what you can afford going into your search will help weed out the great but unaffordable/financially risky programs.

Statistics

  • How many students apply and are accepted for each class?
  • What constitutes “completing” the course?
  • How many students that start the course actually complete it?
  • How many get jobs via career placement/assistance?
  • How many get non-development versus development jobs?

A lot of the programs you see will list their percentage of students who were employed within a few months of completing the program but those numbers can be misleading.  Some programs drop students with spotty attendance from these numbers while others have been known to consider ANY job a student gets to count towards this number.

Don’t be afraid to ask the program administrators how they calculate their numbers.  Knowing the “real” number of students who complete the program can actually paint a much different picture of some courses than the “fudged” numbers that the marketing department puts out.

Ideally you’ll want a program where a statistical majority of students complete the course and actually get development jobs.  You’ll want those numbers to reflect the actual student count and to not omit students who should be included (those who get non-dev jobs or who were not counted as completing for attendance but not academic reasons).

Internship?

  • Does the school offer an internship program or placement?
  • Are the internships guaranteed?
  • Are the internships paid?
  • What companies do interns usually work with?
  • What are some example projects that students have completed?
  • Do the companies involved have experience working with interns or a formal internship process?

For some people the entire purpose of a code school or boot camp could be to get an internship with a local tech company to start accruing work experience.  In my own class we had at least three students who had some form of coding knowledge already but couldn’t get their feet in the door so they were “paying” for the internship opportunity rather than the coursework.

A good internship at a well-known company can open a lot of doors after your code school experience is over, so definitely factor that in.  Some programs offer guaranteed internships while others simply help you try to find something.  This can make the difference in getting established quickly after school or having to do a lot more grunt job hunting work.

An important note:  Some schools will offer internships at companies that have no experience with interns/junior developers and this can lead to a really bad experience for both parties.  I would suggest erring on the side of a larger or less exciting company with an established track record with interns than taking the chances of a lackluster learning experience at an unknown company.  An internship at a New Relic or Urban Airship type company known for their internship programs might go a lot farther than one at an unknown startup or local non-profit.

Placement assistance/career counseling

  • Does the program help students look for work after the course?
  • Does the program provide dedicated career counseling/services to students/alumni?

If you’re not familiar with the software industry or if you’re just getting started in your professional working experience, having a placement assistance or career counseling service via the code school can definitely be a big factor in your choice.  Having someone with a vested interest in seeing you get employed as a developer can give you the leg up on someone working at it on their own.

Be wary of programs that tout their career services but have very small/non-existent staff for said activity or have someone do it as a small part of their job duties.  Being truly effective job placement specialist takes a lot of time and networking with local companies, far more than what someone might be able to do part-time while working on other things.

Student feedback cycle

  • How often does the course ask for formal student feedback on coursework/curriculum?
  • Is there a policy for informal student feedback?
  • Are weekly/semi-monthly progress meetings done with students?

A program should be constantly striving to improve its curriculum and a large part of that is getting and giving feedback to students.  Don’t get it wrong, you as the student are a customer of the school and they should be soliciting your feedback often.  If the program doesn’t have a formal process for getting said feedback, that can be indicative of a company just in it for the money and not your actual success.

On the other side of things, you also want the teachers/instructors to be checking on your progress during the course and making sure you’re where you need to be.  There are few things more demoralizing than thinking you’re doing well and finding out too late that you’re much farther behind that you thought.  Frequent check-ins help identify problem areas and fix them before they impact things long-term.

Programming Languages

  • What exact languages are being taught?
  • What portion of the course is dedicated to each language?
  • How does the program handle changes in languages/frame works?
  • What level of proficiency is a student likely to leave the course with in each language?

As you can imagine, some languages are going to be more “employable” as a junior developer than others.  For instance, right now JavaScript framework knowledge is a key component in what front-end developer hiring managers are looking for so picking a program that spends time on one of the major frameworks would be a good investment.

Also make sure that you have a clear understanding of what level of skill you should expect to have leaving the course.  Getting exposure to several languages sounds good but if you’re not at a certain level of skill with any one of those languages you could find yourself lacking in technical interviews and having to play catch up with peers who went a little deeper on fewer languages.

Guest Speakers/Lecturers/Events

  • Does the program have a guest lecture/speaker program setup?
  • Are these speakers members of the local tech community?
  • Do they have relevant skills and viewpoints worth exploring?
  • Does the staff of the program sit in on these events?
  • Does the program offer student/alumni events regularly (once every 1-3 weeks)?

A good event and guest speaker system can actually make more of a difference than you’d think.  Networking in the software industry is a huge part of landing those dream jobs and where better to start than your classmates and program alumni who share that common starting point.  Guest speakers also expose you to new ideas and companies that you might not otherwise know about just entering the development community.

Follow Up:

So for those of you looking for a code school or already in one, did these tips help at all?  Is there anything you’d add or take out?

I’d love to get your feedback!

One Reply to “Choosing a Programming Bootcamp”

  1. The internship was the biggest factor in picking the bootcamp I wanted to attend, after that the depth of the courses – which can sometimes be hard to figure out from the information they post online. But I was excited to see things like Git (from day 1) and Angular.js in the curriculum. Those are areas that I felt lacking in when I tried to break into a programming job in the recent past and felt would boost my chances of getting a job at the end of the program. Other programs offered courses that looked like they covered only familiar subjects that “just knowing” hadn’t helped me land a good job yet.

Leave a Reply

Your email address will not be published. Required fields are marked *