Advice From a Hiring Manager to a Code Bootcamp Graduate

Chuck Groom
8 min readJan 28, 2019

As a director of engineering responsible for a lot of hiring and recruiting, I often talk with folks who have recently graduated from a 3–6 month code bootcamp. A common question is:

What do I need to do next, to get my first job writing software?

The fact is that a bootcamp crash course will not magically turn someone into a top software engineer. It will take thousands of hours of additional experience to catch up with a computer science undergraduate. While the practical skills learned in a bootcamp are useful and a great start, the real value of these programs is to set people up with the baseline skills they need so they can continue to learn and grow on their own. Employers are willing to take a bet on someone who has lots of raw potential, can learn as they go, and will persist through the frustrations of debugging and configuring obtuse systems. In this blog post, I’ll suggest three things that recent bootcamp graduates should do to set themselves up for success:

  1. Write lots of code while working on a project. A good passion project motivates learning all sorts of new things. A Github repository of these projects serves as a personal portfolio and establishes credibility.
  2. Study software fundamentals. These matter for interviews, but are also part of becoming a solid programmer. Areas includes common data structures, being quite comfortable with programming concepts like functions and object oriented programming, and using databases.
  3. Meet people and promote yourself. This might be the most challenging area for some people, but becoming comfortable with reaching out to people for advice and developing a network will open many doors.
The work isn’t done after graduation — far from it!

Work on a Project, Put it on Github

It’s important to continue your education and to keep writing code! Programming is a craft that improves over time. But it’s hard to write a large body of code for its own sake. It’s much easier to stay focused if you’re working towards an outcome.

Pick some project. The specific project matters much less than having a project. You could create a command line tool, contribute to an open source project, or analyze a data set. This doesn’t need to solve a big problem, or even be all that practical. All you need is something that you find interesting, and that you could demonstrate real progress in just a few weeks. If you can, try to do something with a unique twist (please don’t create yet another recipe site!).

Check your code into a public Github repository. Don’t stress about your code being perfect, but I highly recommend writing it professionally. That means you should write your code in a way that someone else could read it. Choose good self-descriptive function and variable names and add articulate in-code comment blocks. Include automated tests. Provide a well-written README file that explains what this project is for, how to use it, and instructions for installing and running.

Employers do look at Github. They want to see code samples and evidence of enthusiasm. If possible, make a live demo of your code available so people can see it in action.

Here’s One Idea: Create an Alexa Skill

It’s surprisingly straightforward to write code that allows back-and-forth voice interactions with the Amazon Alexa device, and it’s big on the “wow” factor.

You can start with a really simple skill, like just telling a canned joke. From there, the sky’s the limit — just browse some skills that are out there for ideas. You can add basic back-and-forth interactions. If you want to store information and preferences about the user, you can dig into learning about the very big topic of storing data in AWS. Or if you want to pull real-time information from a website, you can learn about making HTTP calls and parsing websites; or perhaps there’s an easier-to-use API endpoint you can call, which would teach you about APIs and JSON.

Or, Here’s Another Idea: A Website That Shows Civic Data

You will impress employers if you can show them you built and deployed a website yourself (beyond your bootcamp projects). As one idea, why not expose an interesting public data set? Governments and cities expose all sorts of interesting records. For example, a quick glance at New York City’s Open Data gives me an idea for showing customer service and facility ratings for the city’s walk-in service centers; or another idea for a site that correlates bike ride counts with weather.

Or, The Power Move

If you have a particular employer or specific field picked out, why not choose a project tailored to impress? A couple of years ago when I worked at Xmarks, we interviewed a guy (Will Wagner) who came in with a demo that used some of our APIs. That was huge: in addition to highlighting his ability, this showed that he understand our product and was truly interested in us.

Study Software Fundamentals

Set aside time to study essential software fundamentals like common data structures, programming concepts like functions and OOP, and databases. These come up in interviews, but more importantly these are the common tools that every software engineer should have in their toolkit. It’s how you write code that stores data reliably and easily; that runs quickly because there aren’t unnecessary nested loops; and that’s easy to modify and maintain because there aren’t twisty flows or repeated blocks of copy-and-pasted code.

Data Structures

You must be comfortable using lists and dictionaries in your preferred programming language.

For lists, you should know:

  • Syntax to iterate through every item in a list
  • Syntax to get nth item from a list; the concept of an index and 0 indexing
  • How to sort a list and an intuition that this isn’t “free” (if a list is long, this can take some time)
  • More advanced: the differences between arrays and lists; stacks and queues.

For dictionaries, some key things are:

  • The syntax of using a dictionary for lookup and insertion
  • The concept of key-value pairs
  • The intuition that lookup by key is fast
  • How would you iterate through every key? Every (key, value) pair?
  • Common use cases: a “bag of attributes” to describe a thing, lookup table
  • The relationship between dictionaries and JSON (serialization)
  • More advanced: what hashing functions are (and how they relate to dictionaries); and the uses of cryptographic hashes like SHA-1.

Programming Concepts

While there are all sorts of programming concepts and patterns you can learn, two essentials areas are knowing how and when to put repeatable actions into functions, and being familiar with object oriented programming concepts.

Functions are the core building blocks that let you avoid repeating yourself; but there’s a lot of nuance in deciding how much, exactly, each function should do, picking a good name, and making sure the inputs and outputs are clear and predictable. This comes with experience, but being comfortable with defining functions is an absolutely core programming skill.

You’ll need to study up on object oriented programming (OOP):

  • Instance (a thing) vs. the class (a template for things)
  • In your preferred language, know how to define a class with an initialization method
  • Be prepared to talk about encapsulation, abstraction, and polymorphism
  • Understand inheritance (subclasses). It helps to memorize some examples, like a sedan is a subclass of car which is a subclass of a vehicle.

Database (SQL)

Code bootcamps often skim over database fundamentals. ORM abstractions like ActiveRecord or SqlAlchemy are no substitute for knowing how to write SQL queries and design schemas, and such skills are useful in a wide range of jobs. I highly recommend taking a free online class on relational databases and SQL. Also, try setting up a PostgreSQL or MySQL database on your own computer, create a few tables, and extract some interesting insights.

Note that MongoDB is a different enough beast (it’s not SQL) that it may not be what people mean when they ask about “database experience.”

The Interview Process

Do some research about typical interview questions, and perhaps meet with your bootcamp cohort to practice asking questions to each other. It’s also a good idea to consider the interviewer’s perspective.

Talk with People and Network Like a Champ

Networking is the fine art of maximizing your chances that random good luck will land in your lap. This only ever helps.

In addition to having an active Github presence, you should have an up-to-date LinkedIn account with a large number of connections. I use LinkedIn half as resume, and half as a way to stalk people to find conversation points and serendipitous connections. By adding a large number of people who I’ve worked with professionally, even if fleetingly, I can make myself more open to chance opportunities.

It’s important to get out of your comfort zone and meet people face-to-face. Attend meetups, walk up to strangers and introduce yourself, and follow-through on connecting with interesting people. It’s totally OK to reach out to people who you don’t know very well but you want to know better, even if they have intimidating-sounding titles and seem busy. A key life lesson I’ve learned is:

It never hurts to ask someone if they’re willing to meet for a few minutes to get coffee and chat about their background and give advice. Most people will say “yes.”

You’d be surprised by how often serendipity and good-will opens doors. It may help to prepare a one-page portfolio website as kind of “calling card.”

The First Step Down a Long Path

All this advice really boils down to this: keep learning obsessively and be engaged! Your code bootcamp started you down this path and now it’s up to you to keep going. You do need to be realistic about how large your skill gap is; you’ll be better off starting at a company where there is active mentorship and engineers can spend time with you. Most smaller startups won’t have the capacity to do this well. Finally, bear in mind that hiring managers are seeking people who won’t need much management — these are people who can prove that they are self-motivated, will teach themselves what they need to know, and generally make good decisions. Prove that you’re that kind of person. Have fun, keep writing code, and find your swagger!

📝 Read this story later in Journal. Wake up every Sunday morning to the week’s most noteworthy Tech stories, opinions, and news waiting in your inbox: Get the noteworthy newsletter >

--

--

Chuck Groom

Consulting CTO open to projects. I’m a serial entrepreneur, software engineer, and leader at early- and mid-stage companies. https://www.chuckgroom.com