Looking Back on App Academy

Aug 22, 2013

Thinking about 9 weeks spent learning how to code.

From May to July 2013, I decided to take a two month intensive course in web programming, learning the entire web stack from the front end (with JavaScript, HTML and CSS) to the back-end (with Ruby on Rails) with the sole intention of getting a job in web development.

It has been about a month since then and while transferring posts from the Tumblr where I wrote them to this particular blog, I got to read and reminisce back on what I was doing back then. I wanted to sit down and do a little writing about what I thought of the whole thing now that it is all over.

Solving Fizzbuzz

I first came across App Academy on HackerNews. They had posted some sort of thread that talked about a free iOS programming class. It was an intensive course and it was free up front. You would not have to pay anything until you actually got that job. It does not take a raging hurricane of knowledge to like that particular proposition.

At that point in my life, I was working for a startup doing analytics work. I handled angry phone calls from angry customers who wanted their money back but a boss who was not excited about giving any sort of returns back to the customers. Fires abounded everywhere, and every new one was the 100% top priority until the next one arrived. We moved like we were flailing on the Titanic and the ship was sinking … except that the sink was nearly 8 months long. I wanted to do something else. I looked over sideways to the cubicle next to me at my friend and coworker Paul. Paul was a developer. Paul knew how to make shit. Paul spent the majority of his day tapping out runes of colored text into TextMate and throwing the football while he was “deploying” the site. Paul got all kinds of offers every day. Paul never had any issues with getting a job. Adam, my roommate with a computer science masters, gets 2-3 offers a day from LinkedIn. I wanted to know more about this mysterious life of a developer.

I sent in an application, and it took about 5 minutes to do. I did it during lunch, with a few questions that were not all that tough. Just information about like my history and what I was doing in life. I wrote as honestly as I felt I could be and then submitted. Thought nothing more of it. I had done several of those already previous in the year. I like to open the doors and see what comes into the room. Occasionally an opportunity would be interesting enough, right?

Several months I got a random email from nowhere. Apparently I had been accepted as some sort of provisional student. They wanted me to fill out some of the codework that they had attached. If I did then they would go ahead and accept me. With a raised eyebrow, I took a look inside. The problems were relatively simple and with the limited amount of Ruby that I actually knew I was able to write some solutions. I struggled for a week on these simple exercises and then sent them back. It took some time but I enjoyed working on them. I like to solve coding problems especially if they were in Ruby. Ruby is fun.

They called back and arranged an interview over Skype. Recalling it back then, it was on a Monday in January 2013. I had scheduled for it to be after work at 5 PM. I am always nervous before any sort of interview, but in this case I was more nervous than usual. I do not like to lose. The guy on the other side walked me through a few coding interviews. The first was FizzBuzz, which was something I was pretty familiar with. I remember that I used the “upto” method a whole lot. This was probably not the best way to do it. Then they asked me a “cat and hat” problem. I went ahead with that, not saying all that much and then finished thinking that I might have done alright.

Few days later, they sent me an email letting me know that I was accepted for the May 2013 cycle. I had 7 days to accept and had to cough up $3,000 as a deposit.

Not a lot of time to think about whether or not I was going to do this. I talked to a lot of people including from my family and inner circle of friends. Generally their response went along the lines of this: “Why do you want to do development? Why do you want to be a developer?” In general, most of my friends have known me as an Excel maniac. They were puzzled as to why I would suddenly career switch at 25. Some of them were definitely in the “Need-the-Degree” camp. They said that I would only just contribute to the pool of crappy developers out in the job market. Their words were pretty discouraging, but I wanted to make stuff. I wanted to be able to write code. I did not know it yet and though I was a pretty good autodidact, I was also good at distracting myself. Doing this would put me to the test, focus me 100% and make sure that my attention does not embark down the dark path. And also I am not going to lie if all the doubt got my blood going. I like to do things that people would not expect of me. The weirder, the better. Just that type of person. If you want me to try something, just tell me not to. God I am just such a sucker for that.

The Course

I commute from Redwood City to San Francisco, somewhere on Rincon Hill. You have to be there by 9 AM or you get fined some amount of money. There was the option to sleep and live in the App Academy complex but I turned that down. I enjoy my privacy. So I commute on the CalTrain. I have to take the 7 AM Caltrain so that I can hoof it down to the App Academy place by 9 AM. I am almost always early so I take the time to read some of the reading and prepare my mind mentally for working hard and thinking through complex computer science projects.

My memories of the first day went along the lines of this: “My God this place has a lot of men.” Out of a class of 40 or so, there were only about 5 women. I could hardly make them out. Being out of a business background, I spent the majority of my time around women. I connect better with them.

A bunch of guys showed up at the front of the room and started introducing some of the beginning curriculum. What to expect. What a typical day is going to be like. Introduced Ned. The head honcho. The main teacher who was going to help all of us learn how to code. I would describe him in one word as disheveled. In on phrase as “like a magpie’s nest full of bottle caps and gold wire”. In other words, he was a guy with black hornrim glasses, furry goatee, and Jesus hair like as if he rolled his way out on Easter Sunday morning came up just yesterday. He had this tinny voice that sounded with manufactured authority, talking like as if he had to consciously dedicated memory in his mind to rolling his r’s and getting his words done right because if he did not we would not understand him. When his words came out his lips curled up, giving me an impression of a particularly jolly person.

They pretty much started from the get-go. The course is 9 weeks long (though they extended it to 12 after my cycle) which means that there is an awful lot of stuff to learn and get through. I was talking to some of the other students and they told me that you basically learn stuff in one day that most other people in schools take several weeks to review and understand. It is complex stuff. Here is a sample from the Javascript curriculum, which basically happens over the span of a week:

  • You are introduced to server-side Javascript in day 1-2, you read 6 chapters from a number of Javascript books as well as finish the entire Codecademy JS curriculum

  • Day 2: Closures and scopes, you learn callbacks, ‘this’ and ‘that’, how you organize JS libraries, and then how to call a function. Five things in a single day, things which are all pretty essential and I have seen many times in interviews

  • Day 3: Arguments, prototypal inheritance, client side javascript and the concept of asynchronous

  • Day 4: JQuery, which includes manipulating the DOM

  • Day 5: AJAX

And then you learn Backbone.js. To be honest, the sheer deluge of material that a single person in App Academy has to absorb in order to keep up with the curriculum is stunning. It is true that not everything sticks. There is a lot of stuff that falls through the cracks. You might think then that, how does Ned and his bevy of Teaching Assistants know how to manage his students? How does he know if they struggle or not?

Mostly, it is the honor system. He expects that the people in the course - since they are doing their best to learn as much as possible to get that developer job - are incentivized to be honest and forthright when they are struggling. They then get the right attention from the TAs and the instructors. But that is not the only safeguard. There are going to be people who struggle and just stay with it, hoping not to get noticed. This is where the assessments come in.

The Assessments

I remember how nervous I was about the first assessment. The assessments are billed as a way for the instructors to evaluate the students and identify the ones who are not doing so well. In other words, if you do not do well at the assessments and you fail too many of them in a row they ask you to leave App Academy. I imagined that they would turn you out into the cold shivering.

The first assessment I took was in Ruby and it was in the first day of the second week. You come in at 9 AM as usual and then they email out the assessment to everyone at 9 AM sharp. You get one hour to write as much code as you can and get that code out the door so that it passes the automated tests that are wrapped into the zip file.

Do the assessments work? Part of the format is that they are written with Rspec tests. It is as much an exercise to read and interpret the tests as it is to formulate and tap down the code. There are a few people who struggled in the assessments because they were unable to read and understand the tests that were written. Ned had to go and help them interpret that code. Personally I would have considered that part of the assessment and leave them to it, but it seems like they are not that type of people. Some coders were so weak and needed so much hand holding that they practically were walked through the whole assessment. That being said, this was rare and for the most part the majority of the students were able to get through the assessments with a passing grade.

This leads me into my next topic about attention time and span.

Attention

The first class size was about 20 but very quickly things began to grow. The AA cycle that I was a part of “May 2013” was about 34 people and then the one which came after me was about 45ish. I expect that the next one is to be yet bigger. And that is just the San Francisco class. There is also a New York City class that is being run at the same time concurrently. I would imagine that even though Ned, the co-founder and head instructor - is not there in person, the organization is expanding the size of the classes over there too.

I understand why they do that. For one thing, the larger the classes are, the more likely that some of them get developer jobs. At the beginning, the admission rate was something like 80% but it has declined from then. In order to grow their revenues and keep up with all the costs of teaching people, renting out the facility, and buying the rather expensive Mac Minis and monitors for the students to use in light of the fact that the admission rate is not as high as it was when starting out, you have to expand the number you are multiplying by.

But there are issues that come with expanding the classes. For one thing, getting attention from the instructors and from the Teaching Assistants. There is only 1 Ned (his co-founder runs the business side and does not help all that much with the teaching) and there are only 3-4 TAs. This means that there is only so much tutoring time that can go around and they are incentivized to spend it judiciously. App Academy makes more money if everyone passes because time and money is being invested in these students. If one of them washes out because they are not able to make the cut then that is a loss. The result is that they spend a lot of their time working on the weaker students - those who are not bad enough to wash out completely but too weak to keep up with the rest of their fellow peers. They might not be able to remember how to roll their own authenticiation system in Rails, remember what a closure is in JavaScript, or be able to work with the canvas in HTML. They do work certainly hard, but just for some bizarre reason they cannot keep up with the rest of the class. These are the students who see Ned and the TAs the most, getting detailed one-on-one tutoring to keep their heads afloat. It is natural after all. App Academy does not get a single penny if they just fall behind indefinitely and are unable to get the skills to do the job.

There are a number of strong students who are so good that I question why they are bothering being here in App Academy in the first place. They quickly get bored with the material - that is how good they are - and then they want to explore further and deeper. However there is only so much time to go around and if you are doing well or even just alright, you are left on your own devices. I quickly established myself as one of the people in the latter during the first few weeks and from then on I hardly met with or spoke to the TAs or Ned. I basically just auto-didacted through the whole thing, not knowing if I was doing it right. The only feedback I would get came from the “solutions” laggardly posted on Github (you are expected to read and “understand” the solutions, whatever that might mean, in addition to the reading that you already should have to do) or from the feedback from my pair programming partner, who often times was not quite sure himself.

The Job Search and Conclusion

One of the nicest things about being a developer in a job search is that you do not have to do all that much work to get leads. People will call and reach out to you, which is something I was not very used to. They never do that for business majors. You get a call or a random email with an opportunity and you just feel so special. However, I would have to say that once I told my story - that I was a former business major who wanted to transition into development through this intensive course called App Academy - the calls quickly went to nowhere. It seemed like you had to get the professional experience or that legendary computer science degree. A 9 week course did not cut it.

And then there were the technical interviews. App Academy ended my cycle with 2 weeks being spent on final projects. I feel that people would have been better served (and I think this is indeed the case after I graduated when they expanded the cycle to being 12 weeks long) if one of the two weeks were ditched and instead we spent time just interviewing. Hell that seems to be all we needed to have learned. Just interview like hell. Some of these questions were difficult - related to algorithms or bizarre, obscure parts of Rails - and I struggled to keep up. A few of them, like the ubiquitious “What is a closure in Javascript?” I kind of answered but not so well.

Perhaps it is just me but in the end, I never really got over the imposter syndrome that permeated through my entire time at App Academy. My friends outside of the course never saw me as a developer and said what they felt was obvious, “How can anyone expect that 9 weeks of learning can compensate for what some people need to do in 4 years?” My roommate who is a front end developer with a masters from Berkeley flat out said that he would never want to work with anyone with an App Academy-like experience and that the recruiters’ jobs should be to “keep people like you out”. That was sort of disheartening. Elitist and of dubious accuracy … but disheartening nevertheless.

[He] flat out said that he would never want to work with anyone with an App Academy-like experience and that the recruiters’ jobs should be to “keep people like you out”.

And then the rejections just got to me. Too many interviews and calls ending the same way with a “We will get back to you” and then a quick rejection via email. It was depressing and though Ned and my other classmates in the cycle were pretty optimistic, telling the same story and circulating resumes to the same listings wore me down. We were all going for the same jobs. I would talk to some of the other people in the cycle and we would refer to companies by name. We knew them all because we were going to the same places to apply to them. It felt like a cattle rush … and then we all knew that we had to secure that job before 9 weeks was up because then there was going to be a whole new batch of App Academy people released onto the market and that batch would be EVEN LARGER! You end up then just picking whatever came along and offered the most money. Some people were alright with that. I guess it just wasn’t right for me.

I realized in the end that this frantic burst of recruiting energy - if it were applied in the same way with my old job - then I would have done fine with good money and the same non-crazy working hours. (As it turns out, my previous startup in which people were expected to work from 6 AM to 8 PM for months on end was sort of unique.)

Not like that the entire experience would be considered a waste of time. It certainly worked for a lot of the people in the class. I get emails almost everyday about the job search, announcing with glee when people get offers for web developer gigs. There are still a lot of people waiting for that offer, but for others it worked exactly as advertised. For the right person, it is the right thing. As for myself, I learned a lot about Rails, picked up a fascination with JavaScript and gained a lot of experience in something that I am interested in on the side. It is valuable knowledge and in the end it would be used … just not professionally.