Book Review: So You Want To Go To Code School

My friend Katie Leonard just wrote a book and I’m pretty excited to share it with everyone.  She and I attended the same class of a code school here in Portland and for both of us it was a huge leap of faith, with big learnings and wildly different, but thankfully successful, results.

We talked many times about what we’ve learned from the experience and what we might have liked to know going into this whole thing, spending thousands of dollars, quitting our jobs, putting our lives on hold and pouring ourselves into programming.

She had enough of talking and decided to put together the getting started guide we both wish we’d had when we got started. Covering: picking your school, the skills you need, the results to expect, and notably a lot of what you won’t learn.

So-You-Want-to-Go-to-Code-School_preview.pdf 2015-09-12 16-12-24
Get the book here

I’m happy to report that its a very comprehensive overview.  Katie covers everything on the nuance of what schools might work best, digging into financials, credentials, student teacher ratios that are ideal and different curriculums. There is a section covering what initial career paths will be open to you once you graduate, tips on cracking the interview process, and points out the dangers of getting too comfortable in a support role.

She gives great summaries of the tools you’ll find yourself using most often when you get started, including probably the best layman explanation of Git that i’ve heard.

Git is like a series of cartoons that make up an animation in a flip book — each page contains a snapshot of what your code looks like with some slight modification. The last image is the most up-to-date version of the code, but you can also flip back to any snapshot along the way, compare two snapshots to see how they are different, or add new ones to continue the story.

And perhaps most important is the psychological aspect of going to code school: You must really love problem solving, building and viewing things in a systematic way to get the most out of a career in programming and you should take care to validate that you’ll really enjoy it before taking the plunge.

If you’re looking to pursue a Career Change via Code School: Buy this book

If i’d had this guide when I got started in the tech industry I think i’d have felt far less uncertainty than I did going into it. If you know someone planning to take the code school plunge or are planning this career change for yourself you owe it to yourself to pick up this book.  You won’t regret it.

You can follow Katie on Twitter or check out her blog, both of which she updates when she’s not too busy writing books or keeping the wheels turning at her day job.

Code School – Postmortem – Part III

Picking up where the last post left off,  our second month introduced the group project work.  Rails and Ruby continued to be lectured on as well as general programming topics, but I think the important thing was that  the students self organized into groups after choosing from project proposals and began to work on delivering them in a short time.  This was exciting to  me because delivering functioning code that someone else asked for was the name of the game and learning to work within a group is a key skill for a developer.  You’ll rarely be a total “lone wolf” working as a professional on a dev team.

Gradual Release of Responsibility:

The idea of agile development came into play as self organized groups took focus away from a strict lesson plan and our first gradual release of responsibility took place.  Coming into the program as a non-advanced student I think at this point I would have preferred more guidance, but others also seemed to thrive when allowed to go their own way with their use of their 9-5 office time.  The key to staying focused was that a lot of the resources I was using already framed out a relatively straightforward learning plan that I could continue to execute, without them I think I might have flailed a lot more.

At a certain point however, what we wanted to focus on became more clear as what you tend to spend more time on you tend to get better at.  Subconscious specialization if you will.  The Development of Discuss-it was the breakthrough moment for me.  Walking through the project from wire frames, mock-ups, and white-boarding to a feature complete app that is working and hosted.  Built with a team and delivered on-time(ish).  It also focused me on Rails and Ruby in a way that theoretical study couldn’t have.  For a lot of the same benefits working through Hartl’s Rails Tutorial is fantastic and a great primer.

This is also where a lot of the value of the code school was for me: surrounding myself with enthusiastic people who I could collaborate with like this and who were at a similar skill level was absolutely crucial to building up my competency and giving me confidence and motivation to continue.

Company Tours:

The time continued to fly by and now we were starting to tour local development companies (and dev teams of non-development companies) through PCS.  This was another great aspect of the code school that I think was key to job hunting success later on down the road.  We toured a whole lot of very cool companies including: New Relic, Elemental Technologies, and Dark Horse Comics.  We were able to ask a lot of questions about the practical day to day aspects of development work and about what me might need to do to better prepare ourselves for a position at one of these cool local companies and build up contacts for future networking.  This part of the program was invaluable and led directly to my first official Developer job right after the program finished.

End Run:

In the last month we experienced another gradual release of responsibility that made essentially all of our class time our own apart from what we scheduled with our instructor, Chuck, ahead of time.  This was both my most and least productive period of learning.  I fell down several rabbit holes, set learning goals I didn’t accomplish, but also learned about tech I didn’t expect to (MongoDB, AngularJS).  I also began work on a group project that did not manage to get off the ground.  Components of it were sound and good work samples, but the project itself did not achieve its goals and that was on its own a very valuable lesson in project management.

The final release of responsibility was off course sending us off to apply to jobs, and our last week was almost exclusively focused on this.  I was surprised to find that there were at least 100 tech companies in Portland that could be a good fit for a Jr. Developer, but there were in fact that many in a list the students worked to compile and with a healthy amount of caffeine I began to carpet bomb them with applications.

I started receiving responses immediately and I literally haven’t stopped receiving them since… more than three months later.

Was it worth it?

I have finished a contract with a company I had at the top of my list to work for when graduating from PCS and have signed on for a QA Engineering position to start at the beginning of the New Year at a start-up that i’m very excited about.  You get back what you put in and I think I’ve gotten everything I wanted and most importantly built a model for my own personal learning plan for the future.  And for that my tenure at PCS was worth what I spent, the time I put in, and the job that I quit to get here.

The program at Portland Code School has now changed, new instructors and staff, new hours and I cannot say whether it still affords the opportunity I got, but I can vouch for the program I attended.

Read Part I Here

Read Part II Here

Code School – Postmortem – Part II

Continued from Part I

The weekend bootcamp came and went pretty quickly.  The basics of web development (AKA learning what happens when you click on a link in a browser besides “a page loads”) were covered, websites were launched and before you know it the weekend was over.  It was enough.

After marinating on the thought for a little while I decided it was time.  I loaded up the application page in my browser and… the application date had passed.

Damn.

On a whim I shot off an email checking to see if anyone had dropped out and if I still had a shot for the summer session.  As luck would have it, fortune favors the mildly inquisitive.  A few days later I had an interview and several days after that I had a curriculum: get comfortable with HTML and CSS because on day one you’ll be expected to work with it (the book we were assigned was by Jon Duckett and has the pleasure of being both informative and beautifully designed).  So far so good, though, as it turns out once you apply for a 9-5 programming bootcamp you have to actually quit your job.  In the interests of full disclosure I left a position in administrative assisting… somewhat non-ironically a field ripe for automation.

Two weeks went by quickly, but time slowed slightly for my non-deathbed conversion to OSX and then quickly sped up again.

Week One:

Day one is difficult to separate from all of week one without the aid of a spatula, but I vaguely remember introducing myself to a lot of unfamiliar faces who I count as friends today.  The subject was Ruby, Git, and environment setup for anyone who hadn’t quite acclimated to their knew development home on the command line (hint: me!).  The days were structured, lectures, assignments, readings and of course pairs for paired programming.  I don’t recall the first few days being mind blowing, but they were demanding.  A little later we found our Everest: Recursion. Most of us slammed our brains against the concept of implementing recursion and just before we grasped it we were moving on to the next thing.

I recall at the end of the week taking stock of myself.  I was exhausted.  10 hour days and all of them spent learning something new.  Everyday involved constructing context just to feel comfortable enough to crawl ahead another inch.  I’d been out of practice educating myself for some time now. I wasn’t sure I could do it.  Maybe I just wasn’t cut out for this.  I could quit the following week and only lose the deposit… I could probably get my job back.  I’d give it one more week.

Week Two:

More Ruby, the command line doesn’t feel alien, programs are starting to do what I want them to.  I think i’ll stick it out.  Finding out that I wasn’t the only one completely off balance was a great comfort and paired programming really helped drive home that I was among good people to learn with.

Week Three:

Javascript, the language of web ubiquity and semicolons, but mostly semicolons.  We started by way of jQuery. The pace had been set by now to the point that no one seemed particularly phased by the complete shift in programming language.  The ability to make things fly across the screen was a welcome change from ASCII graphics on the command line.  A good week for small constructive victories.

Week Four:

You can test Javascript? Weird.

Read the rest:

Read Part I Here

Part III:  Group Projects, Agile Development, and Employer tours.

Code School – Postmortem – Part I

Code school is long since over, at least in the context of the fast paced months since this all started in May.  I attended Portland Code School for the 2013 summer session which spanned June, July, and August.  12 weeks of intense study and collaboration guided by Chuck Vose, our instructor, and of course a great deal of self directed study too.

This was a personal gamble for me…  To say it was anything less would be playing down how this has affected my life.  When I discovered Portland Code School I was gainfully employed and had been for the better part of a year, but not in the place I wanted to be professionally and not facing the kind of opportunities I felt I could seize upon.  I’d been restless for a while, looking for opportunities that ‘clicked’ when I read them: teaching English outside the US, moving back to Iceland, starting my own business, pursuing voice acting (still thinking about that one…), going back to college.  Nothing felt immediately satisfying until I started reading about code schools.  I first had read about Dev Bootcamp last year and up to that point programming seemed like something I couldn’t begin to approach without a CS degree, but this seemed manageable.  An entry point.

I stowed that thought in my head and pushed on with work, a bootcamp didn’t seem like it was enough and programming was such a big field.  Could I afford the price tag? But, the articles kept coming and code schools kept popping up in my periphery during late night web surfing sessions.  Finally, I started to do more research in earnest.  First, I searched in San Francisco for more bootcamps and stories of their effectiveness, but San Francisco was far away and the bootcamps there were expensive.  Next, I searched closer to home and found Code Fellows in Seattle.  After much consideration I applied to Code Fellows, it offered the right combination of price, time invested, and sales pitch.  I did not make the final cut, however, but was encouraged to apply for the next session.

Enter Portland Code School.

I’d come across PCS in my searches before, but the website didn’t quite grab my attention and it slipped my mind rather quickly at first.  I was surfing reddit, the portland subreddit specifically, and saw a post about a weekend bootcamp at PCS (This one!).  I inquired and went ahead with scheduling a bootcamp, a much easier lower commitment way of checking these guys out.  By then the website had changed (and its changed again, go figure) and things were starting to look more appealing.

I began to research chuck, checked out the testimonials, researched some of the prior students.  So far, so good.

Read Part II here

Read Part III here

Testing http requests with VCR

Ruby Gem: VCR

VCR on Github

When working on Discuss-it the team found that testing our API http requests slowed down our testing in a big way and sometimes returned inconsistent results.  Since we didn’t want to test the reliability of our external dependencies VCR was the perfect tool to step in between our http request and our test.

What it does is create a ‘cassette’ file in your spec folder which records the first response to your http request and then on ‘replay’ when you rerun your tests it uses the cassette data instead.  If your tests are http request heavy you’ll be able to test how the requests are handled much more consistently with VCR.

 

 

 

Rails app the Second

A new group project is well underway already: a site that searches out discussions for articles and gives you back links.  We’re making a few Ajax calls and parsing some of the data and feeding it back to the user.  This version doesn’t explicitly need Rails to run an could probably have functioned just as well using Sinatra (i’ll post a little more on why I like Sinatra soon), but its a good exercise in working with the rails filesystem and dealing with its idiosyncrasies.  You should see the final website version of the app posted on the portfolio page very soon.

Step two is to wrap it in Javascript and make it into an site pluggable button, but one thing at a time!

We’re using a lot of cool little gems that i’ll write a little bit about in the next few days, so stick around.