(cross posted from Into Thin Air)
I’ve been drinking a lot of coffee. A lot. People here in Denver are making significant career changes and becoming software engineers. This is good. And I’ve been drinking coffee with them.
These people have worked for the Peace Corps, directed non-profits, built profit and loss statements as accountants, and defended clients in court. They are turning to code schools to help them get into the tech sector.
Places like the Turing School of Software & Design and Galvanize have impressive programs that teach folks the trade of software development. Students graduate with competence in jQuery, React, Angular, Ruby, Rails, and MySQL. Most of these are frameworks, languages and systems we use here at Gusto.
And the most common question I get from code school graduates, as we co-caffeinate, is:
"Beyond what we learn in code school, are there other technical qualities Gusto looks for when hiring software engineers?"
"Yes, you’ll have to demonstrate working knowledge of CS fundamentals."
CS fundamentals, including knowledge of data structures, algorithms, and runtime complexity, create a language that engineers use to communicate about code. And honestly, a lot of this stuff is intuitive once you know what to call it.
Take this code snippet, for example:
A developer without CS knowledge might look at this and think “Hmm. This feels inefficient.”
A developer who understands CS fundamentals might say, “Hmm. O(N²) runtime complexity is no bueno.”
“O(N²),” then, becomes part of the language that those who understand CS fundamentals use when they talk to each other about their programs. It carries with it implicit meaning that requires no further explanation. Engineers just get it. And that is efficient.
Ok. The Bar.
The bar Gusto sets for engineers is the same whether they have a CS degree from Stanford or a degree from a code school like Turing. We want to see A) an understanding of CS fundamentals, B) strong coding capability, and C) good collaboration with the interviewer.
Being able to build websites or mobile apps won’t be enough. You’ll have to study up on and understand CS fundamentals.
And this seems dispiriting to those who have spent 6 months learning to code. But code school graduates can be successful with A, B, and C. It has happened before with Gusto. But they had to work hard on “A” first.
Get good at "A."
And to that end, I exhort diving into these resources.
Khan Academy — Computer Science Algorithms
Chapters 1 and 2 of Cracking the Coding Interview by Gayle Laakman McDowell
Career Cup’s mock interview video series
MIT’s Computer Science Lectures
After spending time learning the language of CS, I highly recommend engaging a placement firm with experience helping people find software engineering jobs at tech companies, such as Triplebyte — a highly respected placement firm we’ve worked with in the past. And check out this article by Kelly Sutton — a new Gusto engineer who writes about his experience with Triplebyte during his job search.
I'm one of you.
I have empathy for what it’s like for someone with a non-technical background to try and break into tech as a developer. Just check out my LinkedIn profile. I have a degree in Spanish. And throughout my 16-year career, I’ve had to constantly prove I have CS chops. Code school graduates should expect to do the same as they start working as professional developers.
Reach out to me on Twitter @jgrahamthomas, or shoot me an email at firstname.lastname@example.org if you have questions or want advice.