Build Design Systems With Penpot Components
Penpot's new component system for building scalable design systems, emphasizing designer-developer collaboration.

medium bookmark / Raindrop.io |
Accepting my first apprenticeship at a software consulting company was a
no-brainer. I was fresh out of college with a degree in an unrelated field and
have never written production software before. While my computer science peers
were accepting offers from big name tech companies, I signed myself up to be a
student once again.
Two years later, while first in line for a promotion to tech lead, I quit my
job and signed myself up for a second apprenticeship at thoughtbot. My
mindset going into this one was a bit different.
Apprenticeships when you already have experience — why?
I was, without a doubt, thriving at my job — I had been there for almost two
years and was on my way to a well-deserved promotion. So why did I give all of
that up for a temporary pay cut of about 50% and a backwards title change to
“apprentice” once again?
My first apprenticeship, right out of college, was an opportunity to:
Have a summer job — it was no Google Engineer’s salary, but I was making
the most money I’ve ever made at that point in life: a little less than $20 per
hour!
Learn an employable skill — apparently my knowledge of titrations and
organic chemistry did not transfer well into the tech industry.
Make new friends — it was a bit of a rude awakening to walk out of a
classroom for the final time, and realize that my friendships weren’t going to
be preconditioned by assigned seats or the dorm room lottery.
When I accepted my second apprenticeship, I didn’t need one for the same
reasons. Despite the circumstantial differences, accepting my second
apprenticeship was still a no-brainer.
My second apprenticeship, with two years of work experience under my belt and
pending a promotion, was an opportunity to: embrace new challenges, add to my
stale skillset, and find a place to grow.
Don’t be the smartest person in the room
As one of the earlier mobile developers, I quickly became a top contributor in
my previous role. When I left the company, I knew the codebase extremely well —
so well, that the tasks became mundane.
I was white-labeling mobile apps. If you thought fixing multiple different bugs
was tedious, imagine fixing the same bug, in multiple different apps. There
were some interesting challenges with backwards compatibility and ease of
customizability, but I felt like I had seen it all. I wasn’t the smartest
person in the room, but I wanted to feel dumb again — I wanted the satisfaction
of wrestling to grasp something new, and finally understanding it.
It was a very comfortable job, and it quickly became uncomfortable to be so
comfortable. I was plateauing before I had been in the industry long enough to
be considered a senior developer. I couldn’t ignore the urge to make a change.
Invest in your skillset
I had two notable goals when I made the switch — to be able to work with new
technologies and to become a better consultant.
I had been programming in Objective-C since my first apprenticeship, and though
there were small side projects here and there through which I got to work with
different languages, nothing really solidified until I was doing it for eight
hours a day. Technology was ever evolving, and I was not in an environment
where I could keep up.
I was also getting tired of being the anonymous code monkey and I didn’t see
many opportunities to grow beyond that. Having worked so intimately on a
product — literally getting to know its every shape and form when developing
customizable components for reuse in each white-label app — I definitely
knew a thing or two about good and bad product decisions. Instead of being able
to communicate this with clients, I was often left questioning the decision of
a non-technical account executive approving impossible designs laced with bad
user experience. I wanted to make my voice heard.
Take root in a place to grow
Having qualified for a promotion to tech lead, you would think that I was
growing. However, what it really meant to me was that I was good at one thing —
mobile development in this particular code base. I wanted to know: how would I
fare at architecting an app from scratch? At learning a new programming
language? At being dropped into a legacy codebase requiring a lot of
refactoring?
I was good at one thing, and that was very isolating. The promotion would lock
me into doing more of that one thing, but I was seeking advancement beyond a
title change.
In an attempt to stay challenged at my last job, I tried to switch roles from
front-end to back-end. It was understandably a hard ask — the company would be
losing a profitable front-end developer, and gaining a junior back-end
developer. I needed time to fill in the gaps of knowledge.
I found what I was looking for in thoughtbot’s 4-day work week and
investment Friday. A whole day allotted to learning, coupled with the fast
development velocity and constant rotation of projects, made a software
consulting agency an ideal place to grow beyond the apprenticeship.
One step backward, two steps forward
Promoted to a developer once again, I’m glad I made my decision. Since I became
an apprentice, I have dabbled in Ruby on Rails, built a greenfield app with
React Native, and picked up consulting experience through frequent client
engagements. My once plateauing learning curve is once again on the rise as I
delve into new ways to bring better software to market. I’m looking forward to
doing even more.
In my short time in the tech industry, I have met two types of developers —
those who have 10 years of experience, and those who have 10 years of one
experience. Which will you choose to become?
AI-driven updates, curated by humans and hand-edited for the Prototypr community