Meow Thatโ€™s What I Call a Purrfect Apprenticeship

Hi, my name is Beth and I just wrapped up my thoughtbot apprenticeship on February 1st. ๐ŸŽ‰

When you hear the word ‘apprenticeship’ you may imagine a young adult, right out of a trade school or vocational school getting on-the-job training. At thoughtbot, apprenticeships can be a little different.

And thoughtbot’s apprenticeship has evolved over time. In the past the apprenticeship has been a way to quickly train developers and designers, sometimes with intention of shipping them out to other companies, but now thoughtbot hires apprentices with full intention of promoting them to non-apprentice devs and designers at thoughtbot after the fact.

Sometimes thoughtbot meets people who they would like to work with but that person might need some ramp up time before they’re able to bill on client work. A lot of times these people have already been working as developers or designers. By hiring someone like this as an apprentice, thoughtbot can get them up to speed on the thoughtbot way of doing things within a three month time frame.

In my case, I’d been working as a Rails developer at a product company for over two years after graduating from a bootcamp. I was fortunate that there were a couple of more experienced devs who became my mentors there. I ended up picking up a lot of good habits from them – things like making small, single-responsibility classes, learning how to unit test, knowing when to refactor, etc. I had even started writing technical blog posts and had already been on a whirlwind conference speaking tour. But… I had no web consulting experience and there were still quite a few gaps in my programming knowledge.

I almost didn’t apply to thoughtbot. I didn’t think I had a chance of getting a position here because of said knowledge gaps, but fortunately for me I had a very smart friend at my previous company who pushed me to do it. “What do you have to lose?” he said.

So when I interviewed at thoughtbot for a developer position, I tried to be very clear about my strengths and shortcomings. It turns out everyone there thought I would make a great addition to the team, I just needed a little ramp-up time!

It started with a bang

Thus I began my thoughtbot apprenticeship.

Day one was incredibly eventful! Matz (๐Ÿ˜ฎ๐Ÿคฉ๐Ÿคฏ) visited thoughtbot to find out what interests us about Ruby and our opinions on where we’d like to see Ruby go next! He brought a whole delegation of programmers and technologists from Japan with him to show us how they used Ruby. It was a very illuminating morning. Then I cried at lunch. I lost my sweet kitty baby, Clementine, to cancer just two days earlier and she came up in conversation over lunch. Everyone was really compassionate. I give the whole SF studio five stars (โญ๏ธโญ๏ธโญ๏ธโญ๏ธโญ๏ธ) - would cry in front of again.

Day two comes around and there I was, surprised (but also grateful) to find out that not every day at thoughtbot would be so action-packed and emotionally raw. ๐Ÿ˜…๐Ÿ™Œ My manager, Kane, and I had a convo to nail down a few particulars – specifically my current weaknesses and my goals for the apprenticeship.

Here are the abridged lists:

Weaknesses

  • Starting from scratch/setting up my environment ๐ŸŒ
  • Certain aspects of TDD ๐Ÿš˜
  • Consulting (like, all of it ๐Ÿ’ฏ)

Goals

  • Work on a brand new project โœจ
  • Get better at test mocks & writing acceptance specs ๐Ÿ…
  • Learn the client/consultant relationship ropes ๐Ÿค

In it to win it

The apprenticeship was a lot like my previous job, in that the majority of my time was spent programming. The main difference was the consulting aspect. I was no longer working closely with product owners that were also my co-workers, but strangers (at least initially) who hired us to help them. This part was new for me and new things can often be uncomfortable, but every apprentice gets mentors, and mine were great.

My first month was spent working on a greenfield Rails project (GOALS ๐Ÿฅ…๐Ÿ’จ) in-office, pair-programming with two incredibly talented devs (Hey May and Sweta! ๐Ÿ‘‹) and collaborating with our brilliant designer (Yo, Steven! ๐Ÿ–Œ).

Month two I was moved to a more established React application which included two days a week at the client office and I got to work directly with my manager (who has so much great guidance to share, lots of it about programming, some of it about boats โ›ต๏ธ). My pair-programming partner-in-crime Sweta also joined the project at the same time.

And just like everyone else at thoughtbot, I had investment time on Fridays. Mine was mostly spent working on conference talks or improving Meowifier. (I’m used to questions about this one. Don’t worry. There’s another blog post on the way! ๐Ÿˆ๐Ÿ’จ๐ŸŽถ).

The finish line

Early on in my second month as an apprentice, Kane and I made the joint decision to cut my apprenticeship short at the end of two months and promote me to a billable developer. We both felt like I was going to be ready!

After just a few weeks of mentorship I’d gotten to practice all those skills I needed to work on and more!

A few of the top ones:

  • experience making early decisions on a greenfield project
  • laying out the best options to our clients and the why behind them
  • learning React Redux

My promotion happened to coincide with my trip to Australia to speak at RubyConf AU! It was a satisfying close to my apprenticeship.

Maybe you’ve thought about applying as a developer at thoughtbot, but were like me and didn’t think you had a chance… seriously, just do it!