I always wanted to work for a "startup", the HBO series Silicon Valley makes
it look so much fun, and it inspired an entire generation of engineers to want to pursue
that lifestyle, including me. After a few years at the Royal Bank of Canada, a close
friend of mine referred me to the CEO of Pine, a seed round FinTech looking to disrupt
the mortgage industry in Canada. From there, I interviewed and was eventually offered
the position "Founding Engineer" as the first employee of Pine.
Today, about 13 months later. Pine has 26 employees, 7 of which are on the engineering
team. In this time, I've helped build entire systems, refactor them & throw them out.
Now it's time for me to reflect on the year, what I've learned, observed and
experienced.
The idea vs. the execution
If you would have asked me 2 years ago what one of the most important part of a startup
is, I would have said "the idea".
The idea is this magical thing that determines the success of your company because
ultimately it's what
is unique about your company right?
It's what your company is, it's your idea. Well, yes
but really no. Your company
and its fate lives or dies on the execution of the idea.
My first exposure to this was when my co-founders shared their investor deck which they
used to raise their
seed round. While this deck included slides about their idea, it also included a lot of
details about them,
the founders, and how they have the expertise, experience and know how to execute the
idea.
Overtime, as I thought about this more I began to see this pattern everywhere. A lot of
companies will build, or even copy
ideas from other companies, but it all comes down to the execution of the idea.
At it's core, our companies plan & "idea" is to build a digital first mortgage
experience which should hopefully lower
our operation costs and allow us to deliver a better experience with tech while passing
on some savings to our clients.
A digital mortgage experience is not new, in fact, most if not all the traditional big 4
banks in Canada have some form
of a online mortgage experience today.
Where Pine will make it (or not) is in the execution of our idea. Building the best
mortgage experience that is unrivalled
by current offerings and executing on this idea across the entire home buying
process.
People and their roles
To execute on an idea, you need people. You need engineers, product managers, ops &
others, all laser focused on one problem.
Hiring at a brand-new company is quite the feat, because nobody knows who you are yet.
You have nothing, no digital presence,
and you may even need to convince people you actually do exist and are not trying to
scam them. Most of the hiring we did
early on was through our own personal networks (friends and old colleagues). Out of the
first 10 employees, only one had been an out-of-network hire. Hiring this way
was great. At the size we're at, one bad hire can ruin everything and you mitigate a lot
of risk when you hire people through
referrals.
Within our engineering team, the majority of people were hired at the same "level".
Since all our hires we're experienced, everyone was classified as a "senior developer".
It's really common for startups to have "flat" org structures & avoid or put little
relevance on job titles. The idea is that there's less middle-managers, less unnecessary
process, less invisible communication barriers
and ideally everyone feels equal.
While I like this idea of a flat structure & title-less roles in theory, I think it's
extremely hard to get right. What I've learned, is some people just want specific job
titles. Even though it may just be text on a screen and seem meaningless. Job titles and
levels are a way of recognizing work & experience. After talking with other colleagues,
I kind of get it. People who used to be a "Staff Engineer" don't want to post on
LinkedIn their new job title of "Software Engineer" because it seems like a demotion and
could hurt them long term when looking for their next job.
Another challenge I thought about as we were discussing this structure was our
appearance to outsiders for recruiting.
We don't want to lose new talent over a silly job title or decrease our SEO on job
postings because people are looking for
"senior" or "staff" level positions and our job titles omit those keywords.
I've learned that org structure, job levels, etc, go hand in hand with culture. They are
something that may not seem necessary logically, but the human element of a company may
deem it so.
The other difficult task with flat org structures is operating and having everyone
believe in it. While the org structure may
be flat, if some people are invited to meetings that others aren't, it can be perceived
as that person being more important
or higher level which can invalidate the whole point of the flat org structure.
Another observation I experienced was watching our engineering team grow to 6 senior
level engineers. Up until recently, we hadn't hired any non-senior level engineers.
Naturally, you would think that only senior level engineers means that productivity
will be great. While I don't disagree with that, there are some dynamics that can slow
down progress. As they should,
people with lots of experience in the field - and are paid senior level pay - will
naturally want to advocate their
idea(s) to a solution. Having a diverse set of recommendations from experienced people
with different backgrounds is something all companies strive for.
But for a startup, it can be unproductive if not organized well. We had times when a few different (all
valid) solutions were
proposed, and over the course of an hour or two we would spin our wheels discussing
these solutions, effectively not getting any closer to
a solution. In cases like this, it can be useful to have a decision maker who ultimately
has the final call to make a decision. Having this person can prevent the "too many
cooks in the kitchen" scenario from happening. Sometimes though, people don't see eye to eye on implementations and that can be tough to efficiently deal with.
This can and does happen at every company, but with our team of 7 senior engineers I felt like it happened more than I had experienced in the past.
Today, we're a lot better. I think that's because the expectations have been set and now everyone works between those lines.
Probably my biggest observation though from a people & operations perspective is how
valuable it is for your engineers to understand the product in depth.
At RBC, for my team of about 7 engineers we had 2/3 Business Analysts (BAs). These BAs
worked for the Product Owner (PO)
gathering requirements, answering any questions and in general ensuring that engineers
understood what they needed to
do their work.
This might not scale at your startup. Having a low ENG:BA ratio gets costly. Engineers who
ultimately understand the product the best will be able to best design and implement new features.
But with less process and BA support this can be tough. I think it's very valuable that companies take the time
to really teach all new hires about the company and the product(s). When everyone has a small PO brain inside them,
a better product will be made. Part of this is on each employee to take pride in understanding the "other side" of the business, and part
of this is on the company to promote a culture where everyone should understand, challenge and work together when creating the vision of the
product.
Process
Often times one of the greatest things you'll hear about startups and small companies in
general is how there is very little to no process and your free to just get work done.
But the question I pose to you is, when do you need process?
Do you ever need process? How much process is too much process? This can be a loaded
question but is something every leader needs to consider when they are looking at their
teams and how they work.
I came from an employer with way too much process and then went to Pine where we had no
process. Why? Because nobody had created it yet.
In the beginning we didn't need it. But today, we benefit from some process. Processes
such as creating Product Requirements Document (PRD) are a great way for the PO to
organize features and communicate them to the eng or design teams.
There is this fine line between too much process which slows you down and not enough process which
can also slow you down. Too much process, and you're spending time in meetings instead of building. Not enough
process and your team might not be all on the same page, not running as efficiently as possible or just disorganized. This perfect line is
different for every team. I think it's important that every team always be on the look-out
for how they can better improve their process and workflow, which includes taking feedback from the team, reflecting, and re-adjusting.
Product & delivery
The last topic that I have is the product. My advice for anyone working for an early
stage startup is expect to refactor, expect to throw out code and expect for
requirements to change.
As a dev at heart, I take pride in what I build, and I never want to build something I
believe is bad. But I have to remind myself that (at least in my case) we're not used by
millions daily, we're used by dozens daily. Over-engineering is a serious delivery
killer. I remind myself constantly that there's no point in building the most "optimal"
solution (even though it would
be the more fun) because today we don't have the users to justify it. By the time we do,
the requirements could have changed
or at the very least, we should have more time and money to build a even better solution
learning from user patterns and the other
data we've hopefully collected since releasing the first iteration of that feature.
At our stage (and in most cases), clean code > performant code.
Now on to year two
It's been a great first year at my first startup. I've learned a lot, but I have even more to learn in the future.I'm excited to see where this journey will take me.
--