I started working in the tech industry in 2010, at craigslist, and then at BitTorrent, both in San Francisco. At both companies I worked in what could generally be considered customer support: answering the phone and the email queue, writing docs, fighting spam, things of this nature. It was great, but I found myself limited in my impact. As someone speaking to users daily I had a pretty solid idea of what they liked, what they didn’t, and what could be changed to make things better for everyone, but as a non-coder the actual implementation of these ideas was at the whim of the engineering team, which naturally had priorities of its own. I signed up for Dev Bootcamp (the first “bootcamp”-style coding school, as far as I know) after a friend of mine had already attended, with the goal that I would come out the other end able to work as a coder in the tech industry. Spoiler warning: now that I’ve been gone from an intern to a developer to a team lead, I guess it worked.
Dev Bootcamp was one of the first, if not the first, “bootcamp”-style coding schools. I believe the now more general term “bootcamp” became widely used after Dev Bootcamp’s example. While coding schools and bootcamps are common now, at the time (late 2013, early 2014) the whole thing was a new concept, in relatively uncharted waters. Due to being one of the first of their kind, they were able to build a nontraditional school, including a lot of aspects that weren’t directly related to learning how to write code.
During the first six weeks we had to do mandatory yoga every day (this became optional during the final three-week period). We also had free access to a staff counselor, with whom we could schedule a time to speak each week about anything, either within the bootcamp or in our lives in general. I won’t lie, I thought all of these spiritual extracurricular activities were very corny at first. I’m here to learn about computers, and you’re making me learn about being nice to people and do yoga? This seems like a waste of time! Teach me about booleans! And so on. I certainly did not get it at the time, but thankfully I’ve come to appreciate it in the years since.
One of the additional, non-coding aspects of Dev Bootcamp was a regular lecture called Engineering Empathy. The goal here was to teach us how to succeed in the non-technical parts of the tech industry, or any industry: working in a positive, empathetic, and sustainable way alongside other people to accomplish a common goal.
The things we learned were in the context of a technology company (for example, how to review a pull request nicely) but generally speaking they apply to any kind of company, and to the rest of life itself. Unless you’re a lone wolf commando straight out of a Hollywood blockbuster, you’re going to have to work with people to achieve things. Building software, throwing a party, fixing a flat tire, the list goes on more or less forever, and in every situation you and all of the people around you will have a much better time, and very likely get your task accomplished sooner, if you’re nice and kind to one another.
Now that I’ve worked in tech for several years, both as a developer and a manager, I look back at the non-technical aspects of my time at Dev Bootcamp as the most important parts of the school. We learned to code in Ruby, which I still use for personal projects on occasion, but haven’t used professionally in years. In contrast, I’ve used Engineering Empathy on a daily basis, almost without exception.
In a broad sense, I think very few technical projects fail for technical reasons. For cutting edge technology like self-driving cars or something like that, you can definitely fail technically, because your team is trying to accomplish something that nobody has done before and pushing the limits of what’s currently possible. For most things, though, where you’re iterating on existing technology or following existing patterns to build something new, failure is almost always going to be due to the people involved, and if they can successfully collaborate with each other in order to reach a common goal.