Some Additional Perspective, Same Conclusion

As many of the readers of this blog already know, I finished re-tooling my career at the Turing School of Software & Design this past January. Now at roughly six months in the world as a Turing Alum and two months as an engineer at Ibotta, I wanted to share some additional ideas with perspective code school students, current Turing students, and recent graduates.

Before Turing

Like many of my peers at Turing, I was in a job that I really did not see a long term future in. Unlike many of my peers, I was transitioning from a moderately successful decade long career in k12 public education. While I was certainly not the oldest student at Turing, I was on the upper end of the spectrum. I also was not the only student at Turing with considerable career experience. For example, my classmate Sonia Gupta was transitioning from a successful career as a lawyer into the technology world. Other students included pizza delivery person, news producer, product manager, financial analyst, serial entrepreneur, a coffee barrista, and pig farmer.

For those considering Turing, your background can be an important component of your success. The communication, leadership, and technical skills I built up as a teacher, assistant principal, and systems developer with New Visions for Public Schools helped me succeed at Turing's rigorous curriculum, stay disciplined in my job search, garner an offer from Ibotta, and work productively on my new team. All this is important when evaluating whether or not to enroll in a code school or begin any type of serious career transition.

Choosing Turing

There are a few aspects of Turing's program that differentiates it from many of its competitors in the code school and coding bootcamp space. The pieces that stood out to me as an applicant and then went on to serve me well as a software engineer are the overall commitment Turing has to high standards and quality pedagogy. When I first corresponded with recruitment at Turing, they did not talk about job placement or the technology du jour. Rather, they said that the goal of Turing is to produce great programmers. I am not a great programmer yet, but I have the foundation I need to one day become a great programmer. 

My foundation from Turing includes a solid understanding of the principles of Object Oriented Programming and Test Driven Development. These ideas span technologies and when I do switch from working predominantly in Rails to whatever comes next, objects will still be objects and professional grade code will be tested.

Coming from the education world, which I continue to see as one of the fundamental issues of social justice in the United States today, it was important that whatever program I chose shared some of my values around equality, justice, and altruism. Where some programs focus entirely on student portfolios, job interview prep, and other short term learning objectives, Turing's curriculum is entirely couched in the greater idea that high fullfillment technical careers should be open to anyone willing to put the time and effort into learning the prerequisite skills regardless of race, gender, sexual orientation, or previous experience.

Finally, Turing is unique in that it is structured as a non profit organization which makes it easier to align its own interests with those of its students. Turing is not trying to franchise, nor is it beholden to shareholders hoping to maximize their returns. Because of its structure it will not try to cut costs at the expense of learning because learning is the goal, not profit.

Fellow classmate  Susi Irwin , schooling me on uploading files to Amazon storage buckets during our second Turing module.

Fellow classmate Susi Irwin, schooling me on uploading files to Amazon storage buckets during our second Turing module.

Takeaways Six Months Out

Six months have passed since I completed the program and with experience comes additional insight. In some ways I was prepared to enter the workforce and make an immediate impact as a Rails developer. For example, Turing back end students understand and can write idiomatic Ruby and are proficient with the basic Rails conventions. I could design database schema, write recursive algorithms, and talk about organizing software well enough to pass these aspects of my technical interview.

At the same time, there are other areas where I definitely felt like I had a lot of catching up to do. I think I probably erred on the side of branching out to new front end javascript technologies too quickly at the expense of really specializing in Ruby, Rails, and other back end technologies. One specific example is the background worker, which is a way of queueing up jobs for a Rails application to complete at some later time. At Turing we had one class on implementing background workers to send emails, but it is my understanding that background workers are extremely ubiquitous across Rails production applications and certainly the one I find myself working on now.

If I could go back to Turing as a student I would have found ways to implement background workers in my various projects. More broadly, I would have worried less about gaining superficial exposure to various javascript frameworks, and would have focused more on building a deeper and more narrow expertise. Of course this is with the perfect hindsight of knowing that I work on the back end of the back end of a Rails application and I currently write more regex than Javascript. There is plenty of time to branch out, but the process for learning something deeply is more important than sampling many different areas because learning a technology thoroughly is what it takes to be a professional software developer.

Less specifically, I spend very little time writing brand new code. The majority of my time involves reading and understanding code written by others. This can be a fairly intimidating challenge for the uninitiated. Going back to Turing, I could have prepared myself for this reality by spending more time looking at and trying to understand open source projects. Turing certainly encourages and requires this practice as part of the curriculum I experienced, but my point is that I could have done more. After all, this is probably the closest analogue to the experience of jumping into an alien codebase as a newly hired developer.

Don't worry, I'm not still using that keyboard. Cherry MX Blues. #sorrynotsorry

Don't worry, I'm not still using that keyboard. Cherry MX Blues. #sorrynotsorry

The Hunt for Jobs

I've written extensively about my job hunt process. I now find myself in the position of having coffees with current students and job seekers, a favor I am all too happy to pay forward. Having worked for a few months now, I have some additional understanding of my expectations going into Turing and the realities of the Denver tech market.

Going into to Turing I was quite sure that I would graduate in mid January 2017 and have a job paying at least 10k more than I was making as an Assistant Principal some time in early January 2017. That impression was partly the result of my own optimism and naivete but also the result of the general narrative surrounding code schools and bootcamps when I first started to investigate Turing and other programs in January 2016. Most materials available were produced by these programs' marketing teams and remedying this scarcity is one of the chief goals of this recent blog series.

There are a set of competing interests that a student at Turing needs to juggle to prepare for and execute a successful job hunt. First and most importantly is learn to code. Turing's curriculum, instructional staff and your own high expectations for yourself will get you there. During my time as a student, Turing evaluated projects on a four point scale. It is hard to get a four (heck it is tough to get a three), but always shoot for it. If you do this part right, you will be able to make it through the typical technical challenges and interviews that prospective employers throw at engineering applicants.

At the same time you also need to build your own professional network in the technical market you are looking to enter. This means cold outreach to strangers (unless you already have a sizeable network) and generally putting yourself out there. If you cannot see yourself actively networking and aggressively hunting for a job, you may want to consider options other than coding schools.

A Work DAy

A typical workday for me right now is very different from a typical day as a Turing student, but the latter prepared me for the former. Almost every morning my team has a ten minute stand up, which is a meeting where we stand up (keeps it short) and share out what we worked on the previous day, what technical blockers if any we may be facing, and what we plan on working on that day. My manager reiterates priorities at the start of the stand up. From there, we track our work on Pivotal Tracker (a fancy to do list for software developers) and there is a never ending backlog of stories to implement.

The rest of my day is spent coding. Once I have a draft of a feature, I submit a pull request on Github. My teammates review my code and add suggestions on how to improve. After an iteration or two of that, I merge my code into our development branch and it is typically deployed by the on call engineer shortly thereafter. Once the code is in the wild it is my responsibility to monitor the feature and ensure that it is working as expected.

Ibotta, which recently was listed as a top place to work in Inc. magazine, really is an amazing environment for any developer but especially a recent code school graduate. There are so many experienced and talented engineers eager to share their expertise. There is no shortage of interesting problems to solve. They give us state of the art equipment and access to whatever development tools we want. They give us bagels every Friday, snacks, and a gorgeous office in the middle of downtown Denver.

Most importantly, the culture at Ibotta is rooted in a common belief in disciplined work and an appreciation of quality engineering.

Life is Good

I am immensely grateful to the folks at Turing and my classmates because they gave me the opportunity and resources I needed to learn how to code. There was nothing easy about this process. But now I have a job that I love and puts me in a position to be the kind of father and husband I knew I would never be able to be as a school administrator.

At the driving range with my fellow engineers on a company outing.

At the driving range with my fellow engineers on a company outing.