Hologram Engineering Apprentice Program

There are more than one hundred coding bootcamps across the US, graduating more than twenty thousand new engineers per year.

Yet many companies, especially remote-first organizations, struggle with welcoming and accommodating engineers who are early in their careers. Software engineering tends to rely on strong coaching and pair programming to help engineers develop — aspects that can be tough to replicate virtually.

Here at Hologram, we wanted to solve these challenges and be in a place where we could offer roles to at least a few of the thousands of promising code school graduates. After all, today's apprentices are tomorrow's engineering leads, managers, and senior developers, and the rung of the career ladder that is most often missing is the first one.

So we developed an apprentice engineer program, and we recently graduated our first class and welcomed a new one.

Ours is a rolling six-month program where we bring on three apprentices in a cohort. After six months, our apprentices generally graduate into full-time Software Engineers, and then we're ready to welcome a new class.

The last time we opened up an apprentice job post, we received more than seven hundred applicants! It's clear there are more graduates than there are junior roles.

So for any engineer embarking on a new career, or any organization who wants to find a way to welcome junior engineers, we wanted to share the details of our program and how we've made it work for us.

In this post, you'll hear from both sides of the program — a former apprentice and a mentor — on what makes our apprentice program so special.

Ben's mentorship story

I am a big believer in the bootcamp model. After a brief stint in the entertainment technology industry, I myself graduated from a code bootcamp at the end of 2015.

I will forever remember the lessons and opportunities I received when first starting out in the tech industry, so I jumped at the chance to be a mentor to Hologram's first apprentice class.

As someone who has now been on both ends of an apprentice program, I can truly attest to how valuable these positions can be.

What helped make this program successful for us? A few specific aspects we were careful to plan for: a pre-set schedule for consistency and stability; a capstone project to build skills and ownership; a small class size; and dedicated volunteer mentors.

Preset schedules for consistency

While most engineers will say that autonomy is one value of their job that they appreciate the most, we've found that the most successful way to incorporate apprentices is to have a more rigid, preset schedule.

For instance, my current apprentice and I have the following standing syncs on our calendars for the next six months:

  • Team standup 4x per week
  • Individual, one-on-one recaps twice a week
  • Pairing twice a week
  • One-on-one feedback meetings once a week

Having a standard schedule helps both apprentices and mentors plan for the weeks ahead without being surprised when things pop up on the calendar.

Capstones for real-world problem solving

Software engineering is only about 50% actual coding. The rest of the mental energy is focused on abstract problem solving, product and business requirements, and getting along with other departments.

That's why we ask apprentices to devise their own capstone projects — larger projects that the apprentice spends time defining, planning, architecting, and building.

This project is usually related to our day-to-day work — involving large amounts of data, for instance, if someone is on the data team — but is not normal sprint work.

For example, Joanna, from our first apprentice class, came to us with a front-end background, but then was placed on a data team. She spent time building things out in D3, a Javascript visualization library, which was a good bridge between these two worlds. Since Hologram is doing an increasing amount of data visualization, it was beneficial to have someone spend time learning about it.

After three months of standard work as a part of the team, she and I talked about what would make for a compelling capstone. After this, almost everything was in Joanna's hands, and I was really only involved in questions and debugging.

Choosing the right apprentices

When more than seven hundred people apply for three roles and there is a lot of potential in so many candidates, it's difficult to narrow the pool. We're not looking for experienced technical skills, but we are looking for smart, curious, and driven professionals.

We start the same way one might start looking for a Senior role — on a candidate's public GitHub profile. We're looking to see how they have continued to spend time coding and learning after their bootcamp's completion. Understandably, not everybody can spend all day picking up new React skills, but we want to see that a candidate didn't just finish a bootcamp or an online course and stop.

A look at their past work also shows us the most interesting and involved project the candidate has published, which helps us get a read on technical understanding.

Once we're talking with potential candidates, we're looking for someone who doesn't give up easily. Someone who will acknowledge what they don't know as easily as what they do know — both of which can be seen during pairing interviews.

Choosing the right mentors

One often overlooked benefit of the apprentice program is the opportunities it grants current employees of an organization.

The "IC vs. management track" is a debate that is duplicated across many one-on-ones, and often there isn't a great way to truly experience the management track until you tackle it head on.

Having apprentices on a team creates mentor roles, often outside of the standard management track. These roles can be useful for determining what type of work you actually prefer — do you get fulfillment from nurturing the talent and growth of others, or do you get frustrated with the interruptions?

Not every senior engineer wants to be a mentor, and that's totally OK. But for those who want to give it a shot, it's important they have strong communication skills, patience, and a background robust enough to help their apprentice along the path.

So far, we've been lucky enough to have engineers interested in mentoring who volunteer themselves for the program.

Even for mentors who may be less interested in a lead role, spending more time walking through your steps and teaching others helps aid in your own understanding and sharpens your skills.

Limiting the class size

I would love to see a world where all engineering staffs are 50% apprentices. However, I also know that is completely unreasonable.

Having an apprentice creates additional tasks for mentors, as they work to nurture the engineering side of their apprentice in addition to their existing work.

As such, we thought really hard about the number we believed we could take on at one time, and ended up settling at three, all on separate teams.

This number might change as we grow, but we always want to be deliberate and thoughtful to make sure we can give all teammates what they need for success.

Talent waiting for opportunity

Being a mentor can be incredibly rewarding. Some unbelievable talent exists in this world, waiting to be given an opportunity.

Now I can say from the other side that helping others who are just starting their own journey is one of the most rewarding things an engineer can do in their career. It's an opportunity that I hope more engineers get to have as the tech industry evolves.

Julian's apprenticeship story

I got my first computer at age 10. Sure, “computers” were a great field to get into, but — full transparency here — I was more interested in games. When I got stuck, I would reverse-engineer and modify them so I could finish the game. Almost immediately, I was spending more time programming than playing the games.

A do-it-yourself career

Enamored by both hardware and software, I quickly moved from mainframes to Information Technology systems. After writing my first computer script, I decided to pursue programming as a career.

Being a do-it-yourself-er, I taught myself Java and garnered the certification. A great start, but I was far from meeting job listings’ requirements. While learning Dart and Flutter on YouTube, I got a recommended video about coding bootcamps. Coding?...bootcamp? Did someone take my two favorite things and smush them together?

I chose a bootcamp specifically for veterans that had integrated remote work into their core processes and culture. After 14 weeks of drinking from the firehose, I had the skills to bring value as a software developer.

Six weeks into my job search, another former student posted an apprentice software engineer listing at Hologram in the alumni Slack channel. Up to this point, I had come across 90% senior developer roles, so finding an apprenticeship was a revelation.

The application, interview, and hiring processes were exceptional, and everything was ready for me before my first day.

Joining 'one of the best places to work'

During the first week of Hologram's 6-month apprentice program, apprentices are asked to “merge and deploy at least one small change." I was able to deploy a customer-facing UI improvement of my own making, which made me feel productive, welcomed, and a part of the team.

By my first Wind Down, I had witnessed diverse personalities, enthusiastic about what they do, cohesively working together. I was beginning to get a feeling for the company: its pulse, practices, progress, and people. It became apparent that Hologram is one of the best places to work.

After two weeks of onboarding, I worked closely with my mentor for two months, solving various business problems with code. I learned the tools, technologies, and methods we use, our infrastructure, and how it interacts with our carrier partners. I broadened my database knowledge and became a part of the problem-solving workflow.

Capstone project: Building the Holomap

Then it was time to decide what to create for my capstone project. Though Hologram customers’ dashboard has local maps for their devices, we did not have a global map. I decided to plot, on a world map, all Hologram-connected devices in real-time — Holomap.

“Overly ambitious” would be a delicate way to describe such a project for an apprentice to complete in three months. “Bananas” would be a less delicate option. “Pick something you’re passionate about” was poignant advice: it’s what kept me energetic, focused, and persistent through what was practically another bootcamp of my own making.

At one point, I got stuck on asynchronous JavaScript, and no documentation, tutorial, or Stack Overflow posts were enough to break through — until my mentor met with me. I walked through my code, and within mere minutes, he saw what I needed to understand, explained it to me, and we implemented it. The fog lifted, the clouds parted, and the code worked!

At the other end of the spectrum, I learned and implemented two new technologies very quickly: Redis and GraphQL. My creation was beginning to take shape: a high-speed backend key/value database that can do geographic lookups and an efficient front-end interface, respectively.

The final noteworthy moment during my project was when I had to admit to myself that there was no conceivable way that I was going to develop the React frontend I planned initially by my deadline. My mentor mentioned an idea he and another senior engineer had regarding my project: “Why not release an API?”

“You saved my life!” Actually. Came. Out. Of. My. Mouth. Key takeaway: define the minimum viable product and work that first rather than risk having an undeliverable product with many unfinished features.

My newfound salvation afforded me enough quality time to polish the API and write a thorough, detailed documentation and a presentation.

Success after success

In the end, I did manage to eke out a React frontend “starter kit” the night before my presentation to demonstrate how to use the API by example. It showed a table of device session data and it plotted dots on a world map in real-time.

I may have bitten off a bit more than I could chew with my capstone project, but I don't regret it. I worked long hours, but it didn’t feel like it since I was building on success after success and loving every minute. I've learned to be more conscientious about when to ask for help — a necessary skill in this field and in life. Also, coffee.

After my capstone, the relief and the sense of accomplishment came immediately. But internalizing, "I'm a bona fide software engineer now" took a few days. Correction: the reality set in when the new apprentices sent me calendar invites to seek my advice before beginning their own capstones.

Join the Hologram team

Hologram is proud to bring in new apprentices every six months. Visit our careers page to learn more about our engineering opportunities, and sign up for our email list to be alerted when we add on a new apprentice class!

Get online in under a week

Start conquering the entire globe with a simple SIM swap. We’re here every step of the way.