Leading Snowflakes
Leading Snowflakes
Leading Snowflakes
The Engineering Manager
Handbook
Oren Ellenbogen
To Shahaf, Evelyn and Joshua
transitioning from an engineer into a manager position, can help you to save
This eBook is not open source. I am a big advocate of fair use and chose to avoid
any form of Digital Rights Management in order to ensure you can enjoy this
lesson in whichever way works best for you. If you received a copy without
http://leadingsnowflakes.com
If you have any feedback or questions, please reach out to me. I’d love to hear
Twitter @orenellenbogen.
Acknowledgements
First and foremost, I’d like to thank Talya Stern for asking the tough questions,
helping out with copy editing, spell checking and grammar. I couldn’t have done
it without you.
I would like to also thank the early beta readers of this book: Bill Hodgeman, Eyal
Efroni, Ohad Laufer, Tomas Lundborg, Victor Trakhtenberg, Ilya Agron, Effie
Arditi, Shani Raba, Amit Yedidia and Maxim Novak, for giving insightful and
Lastly, I’d like to thank Nathan Barry, Justin Jackson, Adii Pienaar and Paul Jarvis
for not only inspiring me to write this book, but also for teaching me a new
Words can’t express my gratitude for what they’ve contributed to this book.
Introduction
LESSON 1
LESSON 2
LESSON 3
LESSON 4
LESSON 5
LESSON 6
LESSON 7
LESSON 8
LESSON 9
The end?
engineer into a manager, that would be it. As much as I was excited, I was also
terrified.
We were never taught the dark art of building a team or leading people. As if this
isn’t enough, these unique individuals (hence “snowflakes”) in our team tend to
Engineers.
What is it then, which could aid me in finding my own management style? What
can I do to gain that confidence I need, to start leading, rather than reacting?
being able to break complexity into smaller, almost tangible parts, where
figuring out these patterns of simplicity can not only produce beautiful
Writing this book was my own journey to present tools and techniques I believe
Now, our job is to ask the right questions, to encourage people to think, to
challenge, to inspire.
While we may always feel that we are walking in this path alone, I want to
challenge you to look deeper into the way you lead others. I want to challenge
you to share the reasons you lead people in a certain way, so those patterns of
simplicity you find along the way can become your own secret sauce to
leadership.
I’m cheering for you for taking the time to invest in yourself and do what you
believe is best for your team. I know that you’re busy, that you hardly have the
time to breathe. It is people like you who encouraged me to write this book. I
know because I’ve been there. I know, because I can feel what you are feeling
now.
I was never a consultant or a theorist. My pains came from facing the same
problems you’re facing today. My desire for patterns and practices came from
arsenal, helping you to find your own path to become a great Engineering
In writing this book, I wanted to make sure you will learn practical techniques
you could start using immediately. This is why I’ve made sure that each lesson is
You’ll find each chapter to start with the motivation behind the tools and
techniques you’re about to get to know, followed by a list of tasks you can use to
Let your curiosity lead you, as you can navigate between lessons the way you find
Finally, I’ve created an online application you could use to track your progress
http://leadingsnowflakes.com.
Switch between “Manager” and
“Maker” modes
Managers.
2. How to use your calendar and small gestures to create the quiet time
3. Figuring out which types of tasks you should own on your “Maker mode”.
4. Tactics for finding the right balance between Maker and Manager modes.
Motivation:
This is why when we go from a “Maker” into a “Manager” role, we so often fall back
complete yet another task instead. It’s the power of old habits. Also, it’s much
more fun (and immediate!) when getting the work done is completely in our own
hands.
team execution.
One way to avoid stepping back to our old habits is to completely commit to our
new role and delegate all of the “Maker” tasks to our teammates. While this move
can feel “right”, as it forces us to focus on scaling our teammates, this decision can
lead to losing our edge as someone who’s able to help with prioritization and
estimation, both internally and externally. Our teammates and peers will soon
“smell” our incompetence, and once they will feel we are no longer contributing to
technical debates or prioritization, they will stop consulting with us, even if
unintentionally at first. The last thing any manager would like is to own control by
forcing it.
understand what kind of tasks we can and should take on ourselves as Makers,
focus. Lastly, we need to start utilizing our calendar better and have a few signals
to communicate our transition between those modes during the day or week.
These subtle gestures will allow our teammate to give us the quiet time needed to
Finding that balance between these two modes takes time, practice and a lot of
adjustments. The good news though, is that there are actionable steps we can
take to practice and optimize our ongoing transitions between these modes.
Managers
Before we dive into the reasons why interruptions behave completely different for
Makers and Managers, we need to take a step back and figure out the
As Makers, we are measured by our ability to complete tasks. There are many
moving parts and the required context, for most tasks, is pretty large: balancing
considerations and the list goes on and on. This context and the nature of some of
these tasks (“part art part science”) are the reason why Makers need a lot of time to
As Managers, we are measured by our ability to scale our team and company.
That usually means improving one or more of the company’s KPIs, clearing
velocity etc.
enjoy running around, asking “what’s up? ” and “how can I help? ” We love to collect
small wins by talking with people. Interruptions are an integral part of our job.
transition...
— Tom Moor
Enabling “Maker focus”
Our time is the most important asset we have, yet we are usually passive when it
comes to planning our day. I’ve done it for many years, working a full day as a
Manager, and then continuing late into the night as a Maker. “I’ll create a plan
If we won’t block the time needed for the Maker mode, someone else will. It could
be our boss, one of our peers or some random (not really) urgent matter that
“Role-based” calendar
A small trick I found useful is to visualize my calendar using different colors. I’ve
created two calendars – One for the Manager (blue) and one for the Maker
(yellow). For the Maker, I’ve blocked in advance specific hours during the week so
no one else could set a meeting for me at that time. I like to use early mornings or
towards the end of the day to switch to my Maker mode. Here is an example:
Sometimes, we may need to change our plans, but at least we’re starting the week
with a game-plan we’d like to see coming through. Using this kind of view, we can
easily see that we have blocked enough time for getting things done. We are in
control.
My favorite practice was sitting at home with some hot coffee or tea when
planning my day. Having a quiet environment made it a much easier and shorter
have an option to tune-out. Running around in the hallway, yelling “I’m about to
change into my Maker mode, heads up!” is not a great option (although it might
We need more subtle ways to signal our team that “I’m trying to focus here, is it
really important? Can you send me an email instead? Can you handle it yourself ? ”
Small gestures can be a great way to subtly indicate our current mode. Here are a
few ideas:
you’re in Maker mode. It’s a great way to disconnect from the outside
“Focus room” – Find a quiet room at the office (or at a nearby coffee
shop) and sit there with your laptop for a few hours. Not only is it a very
clear signal for your teammates, it’s also a great way to break your
funky hat? Hang a red “ON AIR” neon light outside the room? Keep it
light and playful, you don’t want to scare off your teammates, or do
you?
On your next team meeting, share your experiment with balancing your
Manager/Maker modes. Explain why you believe it’s crucial for you to remain
hands-on, and that you will need their help and understanding as part of this
journey. If you feel it’s too soon to share it with everyone, start by sharing it on
While we don’t have to be the most technical individual on the team, we have to
be someone our teammates can go to in order to get help with prioritization and
risk analysis. The only way we can keep our edge is by continuously practicing our
Here are a few guidelines I’ve used along the years to help me pick my tasks:
Keep them small (<4 hours) – pick tasks that are fairly simple and can
suggesting a new UX for some feature. Whatever your job is, pick
something you’re confident will be small enough to fit. You should still
Whatever your backlog system is, make it easy to pick small tasks
Not on the critical path – the last thing you want to do is to become a
else. Be there to support and mentor them in this transition, but let
would pick tasks that will benefit the velocity of the team. It can be
maybe creating a tool to cut down needless work. I find this approach
exciting? Try to produce a working demo and present it to the team. It’s
Boost our company’s ability to attract and retain talent – Can you
create a website that would show how awesome your team or company
is? Can you write a small technical challenge and publish it online so
people around the world could try to solve it? Can you publish a small
Boosting your company’s appeal for new hires can do wonders to your ability to
The first lesson I’ve learned was to change the number of hours I’ve spent each
week as a Maker. Once a month or so, decide how many hours you want to invest
every week for the following month. You can start with 15-20% Maker time, while
having the rest of the schedule open for managerial tasks. If your team is small (2-
course, it also varies according to how strong and experienced your teammates
are.
As your team grows, you may feel the urge to drop those hours completely. Don’t.
The best way to learn is by asking for feedback. Share what you’ve learned so far
on your 1:1’s with your boss and your teammates. Ask for their opinion on your
When nothing works, I always go back to a single practice which is starting the
day working from home for a few hours once or twice a week. Feeling that small
some more Hackathons you could participate at – There are plenty of Hackathons
you can join, not even necessarily in your company. Use that time to demonstrate
Re-organize your calendar: block enough time for Maker mode – I suggest no
Create a clear color distinction in your calendar, for “Manager” and “Maker”
time.
Make sure you’ve got at least 5 “small wins” in your backlog that you can start
implementing tomorrow.
Pick a gesture you can use to switch modes during the day.
Discuss it with your teammates on your next team meeting: ask the team for
Share these posts with other managers in your organization. Have a discussion
over lunch.
Motivation:
technical lead for many years, I soon started to feel how badly I miss the short
methodologies and tools such as Pair Programming, Code Reviews and Design
Patterns, just to name a few. These processes used to help me to become more
We don’t want to admit that we don’t have a clue to our boss or our teammates.
business needs.
“Fake it ‘till you make it”, I remember I kept saying to myself. I felt like a fraud.
I knew that “People quit their boss, not their job”, so I decided to break my old
habits of hiding my dilemmas and start looking for ways to openly seek for
now.
I would like to show how some of these peer review techniques can be applied to
manager, we should feel more in control of our progress and learn more rapidly
from our surroundings. Once there’s such a system in-place to capture our
decisions (or lack of them), gathering feedback should become much easier.
Our boss and colleagues are huge assets to learn from, and – from my experience
Nathan enters your door asking for a few minutes of your time.
He tells you that he needs to refactor some messy code he spotted, while working
on his feature. He wasn’t sure if he should refactor the code or let Kai, the one who
“Hmm… well, Kai is busy with another feature. Fix it and let’s move on, we’ve got a
There are many ways to achieve the same goal. For example, we could come up
Let Kai fix it and ask Nathan to work with some dummy data until the code
is ready. It’s been a long time since Kai wrote this code originally, so it should
Leave the code as it is. Maybe you can deal with it later on as a Technical
Debt.
We can imagine the different “realities” each one of these decisions will lead to.
Experienced managers would be able to offer a few more options, explain how
the other side might see it, or challenge us to put more responsibility on our
teammates.
Captain’s Log:
For years, I’ve perfected my own system. I call it “The Decision & Feedback Loop
to include just enough details to re-ignite our memory on the situation, and
Let’s take the example from above, and fill it within the template:
required for the feature he’s working on. He wasn’t sure if he should refactor
the code or let Kai (who originally wrote it) fix it on his own.
The decision – I’ve asked Nathan to fix it as Kai is too busy with another
feature.
Make it a habit
Nothing motivates us more than peer pressure. Here are some tactics to motivate
1:1 with the boss — starting from your next 1:1 with your boss, pick 2
dilemmas from your list and conduct a “code review” on your decisions. I
recommend that you’ll start with describing the dilemma (not the decision!)
and let your boss say how she would handle it. Only then, share the decision
you’ve made at the time, and see how she reacts to it. Have an honest
Find another Engineering Manager in the organization you can trust — ask
him to take this journey with you. Set a 30-60 minutes bi-weekly meeting,
where each one of you takes 2 or 3 dilemmas, and try to get him to share
feedback and thoughts. Just like with your boss, stick to sharing the context
and the listen carefully regarding how he would approach it. Note: don’t
share private discussions, your people should trust you to keep their privacy.
1:1 with your teammates — You can take 1-2 dilemmas raised by the
individual you’re sitting with, and talk about it. Use this time together to see
if you could have handled it better from your side as well. Ask for feedback
and guidance just as you offer your own for your teammates. Keep in mind
though – some of your teammates don’t have the exact context you’ve got in
mind or the required maturity level. That being said, don’t underestimate
10 minutes daily ritual — You don’t have to write a new dilemma every day.
You can take that time instead to write down a self-retrospection on one of
the morning, before you’re going to lunch or around the end of the day.
1 hour monthly ritual — spend an hour to review a decision you’ve made 1-3
usually around and you’ve got no distractions. Consider what decision you
would have made, if that same situation happened today. Write it down.
— Robert Collier
Retrospect
Here are a few questions we could use while going over our dilemmas:
The dilemma —
Are there any recurring issues that might point out a Technical Debt in
our application?
Does it feel like the Technical Debt is under control?
Is there a specific individual in the team who raises most of the points?
Is there someone else who could provide these answers (e.g. the
Technical Lead)?
Maybe we should have asked our boss to move the deadline in 2 days,
so our teammates could get more value from the given task?
Maybe we should let them make the decision and take accountability
for it?
Did I share it with someone?
To keep actively seeking for feedback, we should start by sharing at least 50% of
‘Examples’ tab).
Set a daily reminder in your calendar for 10 minutes of writing things down.
Set a bi-weekly 30 minute reminder in your calendar for a peer review with your
partner.
comfort zone.
Motivation:
Moving from an engineer into a manager position can feel horrible at times. Not
long ago, we were friends and peers of these amazing people in our team and
now we’re the one “calling the shots” and trying to make this team work well
themselves even further was one of the most difficult parts of my job. It’s a huge
emotional hurdle.
Trying to remain their friend, I was doing everything within my power to avoid
hurting them:
“This is not the way to write maintainable code, should I tell him that? ”
“We need to stay more hours this week, should I force everyone to come earlier or
leave later? ”
I kept things to myself, working crazy hours, fixing my teammates’ mistakes
when no one saw. I wanted things to run smoothly, to keep everyone happy. “If it
fixing their code. The more protective I became, the more disconnected people
got from their work. They lost faith in me as I didn’t share anything with them,
while all I could think of was how to protect them even further. They did the
bare-minimum work required, while I was working for longer and longer hours.
Looking back, I was being selfish. I judged the situation and acted based on the
image I wanted to create for myself. I thought that if I’d tell them the painful
truth, they would stop liking me. Avoiding sharing my real thoughts with them
I wanted to teach them how to deliver products. I wanted to teach them how to
ask the right questions, how to look at the bigger picture, how to prioritize tasks
and risks, how to build trust by creating visibility into their progress, and so on.
My goal was to help them grow and become great engineers. I knew that it
would not be easy, so I stopped looking for easy shortcuts to get there.
I realized that while it’s never okay to act like an “asshole”, it’s probably
unavoidable to sometimes feel like one. Sharing harsh feedback is really hard on
both sides, yet it’s a part of our responsibilities, if we really care about growing
our teammates.
based on the outcome we’re looking for. I would like to go over some guidelines
sharing feedback and leading our teammates. This is what we’re going to cover
now.
Dick Costolo, Twitter’s CEO, uses the term “The Leader’s Paradox” – as managers
and leaders, we need to care deeply and thoroughly about our people, while not
We need to figure out a way to push our team towards the right direction. It
when things aren’t going as expected. But before we can act as leaders, we have
to understand both the power and risks of putting ourselves in our teammates’
shoes.
well-aware of.
how they analyze the situation. It does not mean we agree with them, or share
Sympathy is empathy plus feeling the same way as the other person. It’s more
than noticing or agreeing with one’s perspective, it’s feeling as if we were that
person.
Let’s say one of our teammates is not performing as expected. Empathy will put
us in a place where we could analyze the situation from their side: maybe there is
them to get the job done on time; maybe they have hard time at home.
Sympathy on the other hand, will trigger memories from our own past failures.
the chances of us judging the situation from a subjective point of view. Sympathy
turns the focus on us instead of focusing on the situation and the teammate.
Our teammates expect us to always act from a place of empathy, not sympathy.
In order to judge my own decisions, I had to create a simple way to see if I acted
from a place of sympathy or empathy. While I hated the feeling of sharing “bad
them further.
Here are a few questions I’ve asked myself, after making a hard decision or
we see it, e.g. “The feature wasn’t ready on time and we had to delay the
entire release. I saw that it was hard for you to get the commitment and
cooperation from the Product Team. I also understand that you weren’t the
Did I clarify my expectations? e.g. “I expect you to raise a flag earlier, if you
believe that you’re not going to meet the deadline. I want to see you more
communicative with the Product Team, even if I’m not available. Earlier
sync with them could have reduced the chances of delay on their side.
Finally, if you feel the deadlines are wrong, I expect you to ask for help and
leadership by practicing it. If we’re constantly late with our own tasks (or
meetings), we can’t ask our teammates to keep their deadlines. If we’re bad
that from our teammates. If they see our own boss chasing after us for
status updates, we can’t expect them to be active and create visibility into
If I answered “YES” to each and every one of the questions in this checklist, then I
knew I acted from a place of growth. It didn’t make it easy, at least in the
When we act based on our deepest beliefs for what’s right for our teammates,
when we lead by being forthright and clear, then it’s easier to deal with the rest.
While this may feel as if we’re losing our friends, judging our actions using these
3 questions slowly reduces that pain. It makes us feel more confident, as these
decisions represent our true self, and most people respect that.
— Simon Sinek
Instead of hiding behind our own failures, what if we could share it with our
teammates?
Acknowledging our mistakes and sharing our progress creates openness and
trust. It shows we are open to feedback, that we are willing to share. It shows that
we too are learning how to get better at this role. The medium itself is a matter of
deployment mess”
source project”
The guideline here is to be honest about it. We should share the reality as we
grasp it, what happened and how we believe we should handle it next time.
Sharing feedback doesn’t end there. Improvement takes time. In order to make
this process effective, we need a way to track this improvement over time. After
we provide feedback and listen to how our teammate responds to it, we should
summarize the conversation and send it to both of us via email. The idea is to
capture our feedbacks and how we understood the other side and keep it so we
could later on follow up on that during their next feature, our next 1:1 meeting or
concrete examples and recommended steps. Then, I added how I understood the
other side and the next action items we agreed on. I asked them to reply back to
this email with their own feedback if I got it wrong or they have anything else to
add. That email was archived (I had a label per teammate), and used as a way to
Many managers are afraid of this approach as they feel it may lead to “keeping
score”. This is, in my opinion, a dangerous pitfall and the reason I’ve created the
I believe that 1:1 meetings should work best if both manager and teammate are
introverts, or the level of trust between them is still low. It would also work best if
the team is still new and trying to figure out how to work with each other. At this
stage, the idea is to get comfortable to the notion of sharing feedback and
retrospective and using 5 whys to reach the core problem. This is a maturity level
in which we can also ask our teammates to write about it and share it – may it be
Delaying feedback
We should be fully aware of what it really means every time we say “oh, she’s too
busy right now, I’ll talk with her tomorrow” or “he’s having a hard time, it can
wait”.
Every time we’re delaying hard calls or honest feedback, we make an active
decision that our teammates could see and learn from. Not making a decision is
equally important and explicit as making one. The fact that we delayed the
conversation doesn’t mean the situation didn’t happen. On the contrary, it means
What started as a “justified” call may become a part of our team’s DNA.
Suddenly, people will feel uncomfortable sharing feedback and challenge each
other. Once it’s ingrained, eliminating this behavior will be much harder.
We also have to keep in mind that bored people quit. Engineers want to improve
and get better over time. They want to learn new techniques. They want to tackle
harder problems. They want to gain the respect of their peers and the
organization they’re a part of. They enjoy new challenges, they appreciate
different solutions.
It’s our responsibility to help them grow. If we’re not giving our teammates
feedback and challenging them, they will become unhappy (and bored) and will
eventually leave.
Task List:
Write a list of things you should have said to people in your team but waited
with it until now. Set a meeting with them (1:1), and use that time together to
push them forward. Use the checklist if you need some mental support.
On your next 1:1 with your boss (or over lunch with your peers), ask for their
opinion on your empathy versus sympathy levels. Couple of questions that can
help:
“Do you think I’m too protective of my teammates? If so, can you give me a few
examples? ”
“Is there some feedback you believe I should have given to one of my
teammates? ”
Clear 30 minutes to sit down and write your own method of challenging your
teammates. Share it with people you can trust, so you’ll have more ways to
Motivation:
This lesson is about breaking down this common advice into an actionable plan.
A great way to amplify teaching is by showing someone else how to get things
One way I found very effective to show my teammates how to plan, build and
feature. It took me years of trial-and-error to understand that it’s not only about
doing the work; it’s also about constantly reflecting our thoughts and reasoning
while working together. We should make sure the “why” is as visible and obvious
as the “how”.
dependencies
results based on “person” (“Hide all posts by Joe”) or “event type” (“Hide stories
succeed.
— Marc Schiller
soon as possible
The first thing I would do is to sit with my teammate and think of ways to provide
value as soon as we can. After all, no one wants to develop something which
eventually our users (or customers) will never use. Some ideas I would bring to
the table:
1. Can we break the project and release it in phases? For example, can we
3. Does it have to work for all platforms or can we start with one platform (e.g.
web or mobile)?
Product Team and how we keep other teams (QA, Support, Operations and other
The immediate risk – slower response time can make the entire homepage more
sluggish and hurt users’ retention (how many times users get back to the site).
So, imagine that our code is out there, how confident can we be in the solution?
Did we collect some statistics regarding the number of events a user will see on
We should be very clear about offering a plan to test for performance as early as
timeout interval for the calculation? Can we easily turn off the feature?
This will increase the organization’s confidence in our abilities to deliver and
Planning
deadline feasibility
When working on a feature, in most cases, the estimation can be intentionally
“crude”. No one can really commit to “4 working days and 3 hours” in advance. As
long as tasks’ estimation remains in days, it’s easy for things to get out of control.
We are all familiar with the vicious cycle: “When will it be ready? ” -> “Tomorrow” -
The smaller the tasks are, the more accurate our estimations will get. This helps
I’ve always tried to break features into a list of 1-3 hour tasks. I believe that we
should always consider investing more time in planning and breaking things to
smaller pieces than rushing to execution. While it may feel extremely difficult at
At this point, I would start to split tasks with my teammate. While it may feel
would ask her which kind of tasks she prefers to take – for example, she focuses
on the backend work while I take all of the front-end code for the Newsfeed. We
would create together some interfaces and use dummy data so I could work on
the front-end without waiting for her to complete the backend. Before splitting
up, we would set a time to meet again during the day to see if we can remove
some of the dummy data and replace it with her real implementation. Short
waiting for each other. When we meet again, it’s exciting to replace the dummy
code with real code; we can immediately see some of the bugs, manage to do
Practice what you preach, and let them see you in action.
Constantly communicate internally and externally
about the deployment of the feature, I made sure we’ve got the design and test-
cases ready. When things got stuck, I was clear on what’s holding us and what it
means in terms of our final deadline. I’ve said “No” to some meetings I thought
people could run without me and stayed late if needed. All to keep the deadline
citizens
Yay! Our shiny new feature is now live in production. All is done, right? But what
about fixing bugs in production, or helping the support team to solve some
If we believe these tasks are as important as writing the code, we should treat
etc.) we believe is right. We should split the work, may it be bug fixes, support
feature to production. This is also a great way to earn the trust of other teams in
the organization and create an alignment to what matters most – our users.
While the nature of the work can be different, the state of mind remains the
to also delegate the techniques, and provide the opportunities to let someone
else practice their leadership skills. Once we feel someone from our team is ready
to practice this technique with another teammate, we should help fostering that
such session. Are they ready to teach someone else? What’s missing? What can
we do to fix that?
Task List:
Pick one or two features you can join to demonstrate the behaviors you expect
After you complete a feature using this technique, conduct a 30-60 minute
retrospective with your teammate. Ask her – what did she learn during this
process? What does she think is still missing to make her more effective?
Which parts did she enjoy most? Which did she hate?
Take this as an input for your next attempt, until you master this technique.
Once your teammate feel comfortable with this approach, help her find a
feature she could practice it with someone else in the team. Ask her to share
what she learned during this process and how the teammate she worked with
experienced it.
Managers.
work.
Motivation:
What should we do with our time in order to build a highly effective team that
Without an answer, we disrespect the scarcest resource we cannot get back – our
time. Like any other role in our company that requires a deep specialization,
becoming a great manager and leader for our team requires a lot of trial-and-
error. It requires putting our “soft skills” to use, and that takes time. Jumping to get
another task done is tempting, but are we the only ones who can do it? And even
if so, can’t it be taught? Otherwise, when will we have time to pick up our heads
and start to invest in those tasks that no one else can handle?
The real challenge in letting go and delegating tasks to our teammates, is dealing
tend to ask before we even start, there is a certain way we break tasks into smaller
steps and execute them. We learned to appreciate the need of keeping everyone
in the loop and raising flags in case the original plan changes. This is why we tend
Dealing with this fear of losing control requires a lot of attention, patience and
confidence from us. Delegation means we have to set expectations for our
practice, be there for them with constructive feedback and allow them to try again
if they fail. We will also have to protect them from the organization’s natural
Delegation is also a great platform to teach our teammates how to deliver high
quality product, as it puts the focus on sharing knowledge and expectations very
I would like to share two frameworks that helped me to deal with this challenge.
The first one would help you to better tell apart what you should own versus what
you should delegate, and the second to delegate responsibility to your teammates
while building trust with them along the way. Let’s get started.
External
It was books such as Getting Things Done where I’ve learned that in order to make
better decisions and find my own balance, I first need to clear my mind and write
all of my thoughts down. So, let’s do just that and start with a quick memory
dump.
These tasks stand for what we believe is our responsibility today. We should start
by writing these tasks under the “Must” column. Such a list might contain (just as
example):
time
There is no need to pause and wonder if that’s the desired output, we’ll have time
for that later. At this point, we only aim to write what keeps us occupied.
The second step, is adding the tasks we believe are crucial for our team’s success,
but we often not get to do or do very poorly. Again, we should add them all under
the “Must” column. Such items could be: “Prepare personal growth plan for each
teammate”, “Create vision alignment around our goals as a team”, “Have a weekly
So far, we’ve written down tasks we actually deal with during our day, or believe
we should be doing.
someone else at the team, if we have any. For example, in some teams Code-
Reviews are done by the Technical Lead, Architect or distributed across the entire
team. This time, we should have it written under the “Delegate” column.
Engineering Manager start with writing (almost) all of our tasks under the “Must”
column.
Now comes the hard part – once we’ve captured the current state, how can we
delegate?
To deal with it, we can ask ourselves two questions for each task:
2. Does it serve the leader I want to become in the long-run (does it push me
Tasks or responsibilities which do not fit these two goals should be delegated to
other teammates. The output of this process is to simply mark the current tasks
we’ve got under the “Must” column, so we could create a plan to delegate them to
our teammates.
Once we’ve marked them, we should also try to come up with candidates we
believe should own these tasks. Next to each candidate, we should add what we
believe they’re currently missing to get the job done. Is it lack of knowledge? Is it
lack of experience (have the knowledge but didn’t practice it enough)? Or maybe
lack of authority in terms of how people in the team or at the company perceive
that person?
This quick view will provide us the highly needed focus when building a plan to
Let’s imagine we’re taking a one month vacation and we don’t have any
connection to our team. Will the team collapse? As hard as it may sound, of
course not!
Now, after overcoming the shock that we’re not as important as we might think
we are, we should try to think how our absence will be fulfilled and which
teammate will take which responsibility in a natural way. This question can help
Managing-up means we will also need to consider our expectations from our boss
or our colleagues. For example: do we expect to have 1:1 with our boss? Are there
areas in the company we’d like our boss to delegate to us? Is there a certain
feedback or tools we’d hope to receive? Do we expect our boss to help with the
effort of building trust between our team and other teams in the organization?
— Mark Miller
outcome
Once we’ve got a few tasks we believe should be delegated, it’s time to create a
plan to handoff each task. We should start by explicitly defining our expected
requires technical training (lacks knowledge) before being able to deal with the
The idea behind this plan is to provide a single page document to our teammate,
responsibility. Having a constraint (one page, not more!) will help us to carefully
figure out what we care about the most, and create a relatively simple structure
expect them to get there. We want them to execute in the way they believe is right
There is nothing better than a real example, so let’s assume we want to delegate
risky technical features to Debby, one of our most technical teammates. Before
handing off this responsibility, we should send this 1-pager to Debby. It will be
get a lot of pressure from the product team, making sure our
code without talking to anyone. When shit hits the fan, I want to see
you calm and raising a flag. If you spot new risks or making a risky
change, I want to be kept part of the loop. It’s perfectly okay to say
“no”, it’s okay to notify the team or myself if there is a delay, just stay
communicative.
Being active – true ownership means that you’re driving the car. I
to see you making sure everyone understands how to use the system
and how to change it. I would like to see ideas and initiatives come
from you. If you need time to deal with Technical Debt, I want you to
ask for that. You have the “authority” to delegate work to someone
context. I want to see you explain the reasons behind a given priority
Sharing knowledge: pick tasks you can delegate (with your support!)
Conducting code-reviews.
Go over the points above. Imagine you had me and our teammates rank
every expectation and output we’ve specified. Imagine we gave you a 1-5
grade per bullet, where 5 is “I truly trust her with it!” and 1 is “She doesn’t
our backlog.
Show you how I currently track bugs and where we’re standing with
it.
Go over all of the modules and documentation to make sure you are
help.
This list can serve us as a visual tool to manage responsibilities and set
Delegated work done right means you’ll gradually feel comfortable addressed as
“CC” in emails, until you reach a point where your input is not required to make an
effective decision. You’ll gradually feel comfortable asking these people to help
Delegating tasks is a powerful tool to practice our own leadership skills. Are we
able to effectively delegate work with our 1-pager? Can we communicate our
expectations in a way that both sides understand how it should work? Do we see
our teammates grow and enjoy their new autonomy and responsibility? Are we
neglected so far?
Task List:
Create your own copy of the responsibility list. You can use a copy I’ve prepared
for you as Google Spreadsheet. Write down everything you can think of under
Ask yourself which tasks you believe you should delegate. Share this process
and ask for feedback on your next 1:1 with your boss or on your next lunch with
Go over tasks you currently own and want to delegate – who should you assign
them to? What do they lack? Write down the 1-pager you’d give each teammate
Set a goal to delegate at least 2 tasks you’re doing today to someone else in the
next 3 months. Talk about it with your boss, so he could be part of this journey
list – Can you think of more tasks you can delegate? Is there a new “Must” task
1. Why our default efficiency mechanism creates low trust between teams.
Motivation:
Organizations, just like engineers, often use a “best practice” we are all familiar
with – breaking our execution team into smaller parts. One of the main
smaller autonomous teams can execute faster by reaching decisions faster as the
dilemmas and problems emerge. They can specialize and own certain areas of
the product or technology and above all – it’s a great way to distribute
accountability, as our teams are small enough to move fast yet big enough to
Execution teams are the core asset of every software company. They are the
engine and wheels which allow the company to reach its destination, or pivot
along the way. While the functional aspect of these teams is well defined in most
Having multiple teams means no more unified values, context and priorities. It
about it.
As we often tend to do with “best practices”, we abuse it. Instead of talking about
the motivations and reasoning for breaking our execution team into smaller
parts, we simply focus on output and control. This can lead to teams that
naturally optimize their own unit of execution, even if it contradicts the sole
How can we steer our company and move it forward if our teams are misaligned
or simply do not trust one another to operate for the company’s best interest?
How can we grow the company and scale it, if our unique culture and values
slowly lose meaning in the larger scope? How can we allow our people to switch
roles and teams if teams are no longer aligned with the company’s mission?
In order to optimize for business’s success, we need to find a way to align our
teams’ vision and goals so we can take advantage of this structure, instead of
I would like to start by sharing a few observations that I believe cause teams to
work in silos, due to our default coping mechanism dealing with growth. Setting
this context will enable us to dive deeper and talk about how to proactively build
trust and involve our teammates in this process. Let’s get started.
If I were to ask 100 first-time Engineering Managers all over the world “What is
your 1st priority as a manager? ”, I believe that most of the answers would be
around productivity. This is only natural as these new managers were 100%
between teams:
priorities
Being promoted to a management position for the first time can feel utterly
what really should be our 1st priority leaves one (huge) question open – what
Barely being able to cope with our everyday pressure to put off fires, we forget
why this unit of execution we’re now leading was formed to being with. What is
our team’s vision as part of the company’s vision? How can we set it? Is it even our
responsibility?
We were never taught to ask these questions, so we keep our heads on our
teams
Now let’s look at this problem at scale. We’ve got multiple Engineering Managers
with each other. Things get really messy when, in order to keep our immediate
we need from them, without even explaining why. How many times have we
spent describing an output we need (say an API) over why we need it to begin
with?
Need versus want misalignment
As managers, we tend to mix what we need and what we want. We mix what we
must get with our nice-to-haves, so everything becomes urgent and important.
We can feel the tension in the air, where different managers are fighting for every
feature they need to complete as if the company’s faith depends on it. At this
We hate to fight, so our default coping mechanism hearing “No!” every meeting
is to simply go around the problem. How many times have we found ourselves
implementing the solution we’re looking for ourselves just to reach our deadlines
In order to build trust, we have to align our teams to start optimizing for value
(getting the right things done faster) rather than optimizing our local
throughput (getting work done faster). It all starts with consistently sharing
It takes a lot of time and effort to create a strong communication and openness
with other managers in the company. Where should we start then? One way I
found very effective was during our management’s bi-weekly sync meeting. Not
only did I get to explain what I need to get done by others, I was also able to
share context and pains my team was having while also leaving a lot of room to
Here is the structure the other managers and I have used during these meetings:
why I believe they’re crucial. It could be a personal issue like getting a new
related to a technical aspect we’re worried about and want to make sure it’s
resolved. Thinking about the 3 things that are absolutely crucial for my team to
solve in the next couple of weeks helped me clarify our real priorities, before I
others. Even though not all of my priorities were always dependent on other
teams, it often lead to a great discussion and knowledge sharing if someone else
At this stage, I wanted to see if others had different opinions about my priorities
and care to explain why. It’s a great way to learn but also to build a feedback loop
For example, we may choose to say that we want to work on fixing a performance
issue that keeps coming up, while others may feel that it would be better to delay
it a bit more as we’re swamped with urgent support tickets that may cost us a lot
of money in our yearly revenues. Maybe performance is one of the reasons for
these support tickets, but if not, are you okay with delaying it to help resolving
customers’ issues?
availability (who’s taking vacation?) and raise other pains my team is currently
dealing with, that may hurt our ability to keep our deadlines. Again, it can be
with a spike of support tickets can reduce availability just like a technical issue
Before I share my own needs, I want to make sure I acknowledged what others
need from me. In order to do that, I usually sit with other managers before the
meeting for a 1:1 and try to gather requirements as soon as I can. The purpose at
this point is not to reach completeness during the meeting, but rather to focus
on doing my homework before the meeting, and syncing the entire group on
next couple of weeks. Optimally, I would say for each requirement when do I
need it for, but I would keep track on it once I get to hear the other managers in
the room talk about their own challenges. At the end of the meeting, I would
Things to reconsider
After the meeting was completed, I would go over my list and make sure that all
person later and see if we can figure out a date for it without the pressure of the
entire room. If it wasn’t possible, I would start making the trade-offs of delaying
the requirement and communicating alternatives with our Product and Business
teams, while keeping that other manager in the picture. It’s important to refrain
from pointing fingers. We live in a world of trade-offs and with limited resources.
What can we do to optimize for value? Can we push other requirements aside?
Can we simplify the requirement so it would fit (for example: breaking it into
smaller deliveries)? Maybe start thinking to hire more people for the team?
Using this structure helped me to make sure I communicate both the work and
the motivation behind it. It created some vital visibility into what’s going on in
my team, while also left a lot of room to get feedback on my planning and
work together.
each other.
— Simon Sinek
Once we start building better communication with other managers, how can we
build trust between our teammates and other teams in the organization?
The idea, like before, is share not only the technical issues but also the pains each
team deals with. We should build a common ground to share our goals so we
could relate and even help out when we see the other team struggling. Here are
During one of your team’s meetings (e.g. Sprint Retrospective), try to come up
with one individual from another team that helped the team to achieve its goals.
At the end of the meeting send an email with a simple “Thank you!” (and a funny
geeky photo, of course) to that person and CC her boss and your team. A simple
having and how they deal with it, can create a great discussion around that topic.
longer working in silos, where problems and solutions are kept hidden. Many
times I’ve seen people from different teams helping each other out by talking
after the session and offering a few more ideas they could try. Put smart people
in the room and let them talk about their pains, they’ll figure it out.
One side benefit of these internal talks is that they also serve as a great practice
for the teammates before they give a public talk. It’s great for their personal
brand (so people outside the company will know them), and for our Inbound
There is no better way to fix communication issues than by working closely with
other teams. If we’re dependent on another team to get our work done, we can
send someone from our team to theirs to understand how they operate or even
to implement our feature in their codebase. We can also have someone from the
other team to spend 2-4 weeks with our team, to better understand the
understanding, so at the end of this time each team has someone who could
better explain the constraints, working methods and end-to-end business value.
Pizzability
This is merely a codename for a small tradition of eating pizza and watching
usability videos of our customers using our product. You can switch it with
interface or the backend which operates it, sitting down with other teams and
watching how our product is being used could create better understanding of
the value we produce. It’s no longer tracking numbers, but rather seeing how real
users use our product. It’s a great way to create a bond between teams – by
focusing on the problems the user is facing instead of the daily problems and
our team’s
Design Reviews
Another way to learn about how other teams operate and learn better about
their pains is to participate in their technical meetings. One small trick we can do
is to send someone else every time so our teammates will slowly get to know
how it looks like on the other team. There should be solid trust between the
managers to allow such initiative to flourish, but it’s relatively “cheap” and
effective way to constantly learn more and build better trust between our teams.
Task List:
Take an hour and write your answer for this question: “How can I help in
building an organization where the parts in it trust each other and enjoy
working together? ”. Share it with people you trust, may it be your boss or one
of your peers.
Even without a sync meeting between managers, you can still trigger a
conversation over email every 2-3 weeks (or every Sprint, if you’re using
Scrum):
Write down your 3 top priorities. Ask for your boss and colleagues’ feedback
on it.
etc.
Specify the tasks you know people are dependent on and when you believe
they’ll be ready.
Specify tasks you’re waiting for and when do you need them for. Mention
that if someone believes she couldn’t make it on time, she should reach out
to you so you could sit together and figure out what to do next.
Find at least one way to start working on building trust between your
“Pizzability” works well even if trust is not there yet. It takes a lot of time to
Try to add a few more ideas/tactics to involve your teammates in building trust
with other teams. It’s a powerful tool to have and it can be a great discussion
On your 1:1 with your teammates, try to figure out if they trust other teams
they’re working with to keep their deadlines. If not, try to figure out why they
have that feeling: is it based on previous deliveries? If so, which? Write it down
and talk about it with the other maangers to figure out the next step. Many
that someone from Team A drops a feature that Team B needs, due to an
throughput.
Motivation:
During my time as a manager, I was constantly struggling with figuring out the
best process to make my team and company more productive. I have read books
about Scrum, Kanban, Scrum-ban and pretty much any other Agile
methodology out there. My pool of options got even bigger thanks to the Lean
Startup movement, and the constant talks on Continuous Delivery and how it’s
applied in various startups and (relatively) big companies such as Flickr and Etsy.
When looking at team level, what should we optimize for? Should we focus on
“Premature optimization is the root of all evil” – it is the same logic we should
state of the product and business. I was optimizing for the sake of optimization.
called “Startup Metrics for Pirates: AARRR!” that changed the way I’m looking at
processes. Listening to Dave defining the 5 steps each company is going through,
was the first time I’ve encountered such a simple yet powerful language to figure
out the current state of the business. This language helped me to understand
how different methodologies would better fit each step in the product’s life-
cycle.
Even if we’re not the one in-charge for the process inside of the company, leading
others means we have to represent the motivation behind these decisions. The
deeper we’ll go with understanding the pros & cons for each method, the easier
it would get to provide clear and accurate answers. Also, while we sometimes
cannot control the process used by the entire organization, we can experiment
with our team’s process, as a way to increase the value we provide to the
My goal with this lesson is to introduce a few concepts we could apply to make
sure we’re optimizing the right thing at the right time. Let’s get started.
No matter what we’re currently trying to optimize for, it’s important to first figure
As an execution team (everyone involved in releasing the product), our job is not
to invest so much in every step of the way, may it be a new feature, an improved
more often:
1. Will we know when and how people hear about our product?
2. Will we be able to understand if and how they use our product?
5. Can we reduce amount of work, and test for need earlier (think MVP or
POC)?
Using these questions to set context and priorities can help our execution team
to be more passionate about problem they’re trying to solve, and the process
they’re using to figure it out, as opposed to being passionate about their current
implementation.
Don’t fall in-love with the solution you’ve built, but with the problem you’re
trying to solve. From my experience, the people I enjoyed working with most
were ones who follow their intuition and adjust by experimenting, rather than
First, let’s start with a quick explanation: when optimizing for efficiency, we aim
to reduce the number of “work units” (time, resources etc.) required to complete
a single task; when optimizing for throughput, our goal is to provide as many
In some ways, you can compare it to optimizing for a single person (assuming
one can do everything) versus optimizing for 10 people with different kinds of
expertise. Throughput will hugely benefit from batching and preparing things
Some processes made this distinction clearer by setting the focus on what we
feature while measuring the entire pipeline. The focus is on the task at hand and
how each step in the process can change the overall time it would take us to
deliver that task. Scrum introduced the concept of predefined time-frames (i.e.
Sprints) and how many features you can achieve per that predefined time-frame
over time
Simple eh? As it turns out, reality is much more complex than that.
over time
Efficiency and throughput are not necessarily correlated. For example, let’s take a
1. Automated Testing adds time to each feature – this means our immediate
each feature, thus having fewer bugs discovered late in the process by QA.
smaller number of hours required by the testing team to verify the feature’s
can decrease the time to deliver each feature and so increase efficiency. If
“regression testing” – assuming that these tests will continue to run for
Using Automated Testing can lead to both decrease and increase in efficiency
and throughput over time. What started as decreased efficiency and throughput
(investing more time per feature, less time to complete more features), may lead
Companies that fail to learn and adjust will eventually run out of money, people
company we’re part of, if we want to optimize the right thing at the right time.
In his talk, Dave Mcclure uses “AARRR” to explain 5 phases every company is
Acquisition – Figure out how to bring more users (or customers) to our
application. It doesn’t matter if it’s via ads, having some press coverage or writing
Activation – Make sure our customers would complete a task that would help us
convey the value of the application (in other words – the user enjoys 1st time
experience). For example, if we’re developing an alarm-clock, we’d like to help the
user set up her first alarm and show her how it would sound like waking her
tomorrow morning.
Referrer – Incentivize your users (and customers) to bring new audience. At this
point, the user is satisfied with our product enough to recommend it to others.
What I love most about these 5 phases is that it’s easy to understand how each
step reflects our business. For example, if our retention is pretty low and our
visitors do not come back to use our application, then we shouldn’t invest money
in acquiring more users just yet. Or, if our activation is poor and almost no one
completes the task we believe represents best our value, then investing time in
wrong place or at the wrong time. While we may feel this is the CEO’s or the
Product Team’s responsibility to make such decisions, it’s our job to make these
tradeoffs visible. We cannot afford to bury our heads in the code, hoping things
will be fine.
possible
If we’re currently working in a team responsible for a product that still figures out
Activation and Retention, (I would claim this applies for every product pre-
more and more features will not change the bottom line, except for burning
more money and time over things no one would probably use. We need to learn
At this point, the best thing we can do is focus on measuring and optimizing the
Have a hypothesis (“this feature will improve Retention by X% due to Y”) ->
How much time are we spending figuring out the requirements of the feature?
How much time does it take to get the design? How much time do we need to
develop the feature and test it? How much time do we need in order to solve
critical issues? How much time does it take to deploy and monitor health &
We should offer ways to cut time where it hurts most. Could we invest 20% to cut
teammates and our surrounding, to cut hard into the meat: Can we refine the
feature (POC or MVP) so we could validate its impact earlier? Can we delay huge
We need to make sure we’ve got analytics in-place, so every feature we’re
releasing can be measured against the KPI we want to affect. If our feature
should be about improving 1st time experience (thus helping with Activation),
then we should make sure we’ll be able to tell if more people complete their first
usage with the application due to the new feature. Without it, we’re working in
complete darkness.
“If you can’t make engineering decisions based on data, then make
At this point, we might feel compelled to make some decisions which may
simply forget and let others (e.g. the CEO) take care of. If we can buy more time
for the business to figure things out, then we should do it. We should act
components which may or may not be used is sticking our head in the sand. The
same applies for massive infrastructure work and automating irrelevant manual
steps. It’s hard to read these lines, I know, but the last thing we want is to invest
predictability
While business certainty is kind of a fluid term, there will be a phase in the
product’s lifecycle where we’ll feel as if things become clearer. It’s this moment
where sales, initially just a first few, become a common event; where milestones
become more and more possible; where champagne is being poured just a bit
At this stage, most companies focus on growth (Acquisition and Referrer) and re-
validating their business model (Revenues) as the company grows. Once the
major risk of developing a product for vain is gone, one of the key parameters any
At this stage, optimizing for throughput can be a great way to measure our
team.
simple spreadsheet
If you have some definition for timely planning/release (e.g. Sprints), you can use
that. If not, pick a time you’re comfortable with, say 2-3 weeks, and start
measuring the number of completed outputs you’re able to deliver. You can use
t-shirt sizes, Story Points or anything else to track the team’s velocity, for
example:
01/01/2013 – 14/01/2013:
After a couple of months tracking these numbers, you should be able to create
some predictability into your plan. You’ll be able to commit to a range of feature
sizes, based on empirical data you gathered. It won’t be perfect, but it won’t be
Now that we’ve got some empirical baseline, we can start optimizing for
members in the organization and sync our schedule so things we’re waiting
for would arrive at time? For example, say we have a team of engineers who
need some sort of feature requirements and graphic designs from the
Product Team before they can start working. By making sure our plan is
clearly visible to the Product Team, we can try to align their output so our
engineers would get the spec + design just before they’re starting to work
on it.
amount of code needed to develop new features (or adjust existing ones)
human errors.
Some companies would change their business or try to conquer new areas. This
means we cannot stand still, but rather keep optimizing according to the
product’s current business needs.
— Aaron Levie
Task List:
Figure out your product’s current phase. Talk about it with your
Product/Business team to make sure you get the picture from their side as
well.
Try to come up with 3-4 ideas to optimize the value of your team based on
your current product’s phase. Have a conversation with some of your peers
and teammates, so you could brainstorm and prioritize. Some people will
Read Kris Gale’s post – Efficiency is not our Goal (improving company’s
throughput). Kris’s post addresses a lot of the issues we covered earlier, from a
Watch Henrik Kniberg’s Agile session (video) to learn how resource utilization
Talk about it with your teammates – share your thoughts (and Dave McClure’s
talk) about what you want to optimize for and why. Set your expectations
Motivation:
“It’s so hard to find great employees these days” – everyone, all the time.
One of the most frustrating aspects of finding a great addition to my team was
poor timing, or so I thought. It seemed that the second I started to look for
amazing people to join me, the talent pool got “unusually” empty all of a sudden.
I kept asking myself “Where do all great people hang out? ” and “How come
As a company, we’re not only chasing after our next customer. We’re also chasing
after our next employee. If we’re willing to put so much effort in product
team? ”, “Where are they working now? ”, “Which meetups do they attend? ”,
simply not available too long when they seek for a job. In a world where talent is
awesome culture visible, as they did with their Culture Code slides, made all the
Along the years, I found a few tactics that worked quite well for me. It wasn’t
always a clear win, but it made an impact. It didn’t make hiring easy or simple,
but it made us visible and people were talking. This gave us a chance to reach out
reached out to me. Sometimes, a short dialog is all you need to hire the best
employee.
This lesson is packed with ideas that could fuel your creativity in building your
today
“We’ll make time for hiring better people later. We need to build a product now!”
months from now is just not as urgent or tangible as releasing a new feature. The
When there is no sense of urgency to hire today, and working to build that brand
takes precious time, it’s really easy to put it aside. No wonder why every time we
The reality though, is that once we set our mind to invest in promoting our team
and company to attract talent, there are many ways to achieve it. Even better, it
candidates
educating, inspiring and growing the people in the company. We’re pretty
What if we could leverage that to teach and inspire people outside of our
company?
This notion of “Outbound versus Inbound” came from the marketing domain.
Put simply, Outbound Recruiting refers to a direct reach from our side to the
someone in a conference and see if we can convince them to join. We’re the
active part of this dialog. The second we stop being active is also the second we
stop getting new people into our recruitment pipeline. Or, as most of us deal
works by investing the time in content, talks and projects your future candidates
would find appealing. Or, as most of us deal with it – posting more photos to
Facebook from our last company’s trip or event. But it’s more than that. Many
people reach out to Google asking to apply for a job there. It happens because
Google built a brand of top talent, with an amazingly unique technology and
Inbound Recruiting has a long-lasting impact. Companies that built a brand over
time, still benefit from an unfair advantage of talent available to them: Google,
drawn to them like magnets, right? But these companies became successful due
Instagram talked about their unique infrastructure and lessons learned a year
before they were acquired by Facebook for 1 billion dollars. GitHub shared how
they work as a distributed team more than 2 years before raising $100M dollars
build awareness and find top engineers for their small startup (crazy eh?) many
These are just examples. Each company started to build its own unique brand
many years before anyone could attach massive success to them. If we’re lucky,
building a great brand will enable us to hire amazing people which will help us
to find and build a scalable business. The best companies out there are hugely
— Sahil Lavingia
The goal of a successful Inbound Recruiting tactic is to cause a “wow factor” for
our future candidate. Best case scenario would be that this person will sit at
home, read our content or play with our project and say “oh wow, that’s amazing!
You don’t have to rush and start a blog. Just be helpful. Pick topics you’re feeling
comfortable with and invest a full hour to help out at StackOverflow, Quora,
GrowthHackers or any other website where you can contribute your time and
expertise. One hour a week is a small portion of your time, but the value added
over time can be a game changer. Personally, I like using focus booster and set it
to an hour.
If you want to attract creative people, you have to be creative with the ways you’d
approach them. For example, if you’re building a web product you can hide geeky
humans http://site.com/jobs!’);
As a small hidden message inside of your logo: it can be by using your own
Use cornify in a secret page in your website or build your own “geekify”
concept.
Most of the people I talk with tend to hold themselves from writing guest posts
because they believe what they know is “a common knowledge by now”. You’d be
surprised how much you can teach and people want to learn. Did you recently
tried a new technology and you’ve got something to say about it? A few tips you
can share about building an amazing team? Maybe used a growth hack tactic
only to find out it doesn’t work on your type of product? Or, maybe you use Trello
Things that seem obvious to you are probably completely new and scary for
others. Sharing your experience and the lessons you’ve learned can be incredibly
valuable.
Go over the things you’ve talked about at lunchtime during the past 3 months.
Then seek out a blog you usually read (and hopefully your candidates too) and
ask to publish your content. You’d be surprised how common it is, as there is a
mutual benefit to you and the blog’s owner. They already have the audience, use
it.
Making your employees happy is important, not just for the sake of day-to-day
work, but also for marketing. After all, when someone else asks them “where do
you work? ”, you want them to be proud of it. But it’s not enough as it won’t make
Occasionally, invest some extra time to build a website (here is what we did at my
little stuff that matters most. Share it with the world to get people excited and
Instead of spending $2,000 on some referrer program, see if you can invest it in
about. If your team happens to be a huge fanatic of robotics (so what if they’re
currently developing an iOS app?), then set up a Hackathon around that theme.
The same could be applied to many other themes: nostalgic games, acts of
Using a theme could help you to attract people who don’t know you yet, but are
Then promote the site by using your employees’ networks. Hackathons are a
great way to introduce potential candidates to the team, and show them how it
feels like to work at your office. Make sure to record the event, the material –
videos, photos and products built during that day – are a great content you can
It’s time to open meetup.com and look for nearby meetups you believe your
future employees attend today. Prepare a 30-minute talk based on a guest post
you wrote or a scenario you were facing at work. Practice it internally and keep it
The real power of giving a talk is that it’s easy to reuse in multiple events, so write
down 3-4 meetups you think are relevant and send your talk to the organizers.
credibility for the company than sharing lessons learned and providing value to
your audience.
7. Use side-projects
Side-projects are a great way to create buzz around the people in the company,
as it says a lot about your passion to build. Unlike releasing code to open-source
projects, side-projects are often easier as they don’t require you to invest in
For example, you can create a simple website that helps other companies to
it will automatically generate a widget they can use in their “about” or “jobs”
page. Once it’s up, publish it to Hacker News and LinkedIn, and see if people find
made just for the sake of helping out. Just look at what AppSumo did with How I
Got My First 3 Customers or Qualaroo with GrowthHackers, even though it’s not a
Can you think of tools you developed internally to get your work a bit easier, that
you can push as an open source project? Make sure it appears in your jobs page
(this is where future candidates would go), so people will know you’re passionate
Monkey and Etsy’s deployinator (also, check Etsy’s open-source projects page).
If you believe that your best future employees are ones who love to solve puzzles
and enjoy a good hack, then prepare one for them. Quora and Dropbox released
challenges that lead to great exposure. While there is a big amount of effort to
put into this sort of challenges, you can create a relationship with the people
Building a recruiting brand takes time and effort, both mentally and physically.
The more people we can involve in making it happen, the better chance we have
to see it coming through. So while we may want to own the effort, it’s imperative
to include our teammates in it. They need to know we are willing to invest the
time in it, and that it is a part of the team’s responsibility to attract great talent.
It should start with a simple time allocation. Investing one hour to write answers
in various sites can be assigned to a different team member every week. If one of
make it easy for him to get that help from us or another teammate. Even better,
we can make a small competition (if we believe the team would enjoy it) to see
Same goes for investing the time to add some hidden gems to the product – just
come up with ideas and then make sure people could implement some of them
Once our team starts to feel comfortable with working on building a recruiting
brand, we should assign ownership to these efforts. In your next 1:1, figure out
which of the ideas above (or anything else that comes to mind) could be of
interest to them to own. Next, ask them to commit to a medium-term goal, for
give 2 talks in the next 3 months about applying Lean Startup concepts in big
companies”.
Make their commitment very specific and help them as much as possible to be
successful at it. Provide feedback: help them find the relevant meetup group and
improve their presentation; see if you could find a blog to publish their content
in; help them figure out the MVP of a side-project; get your management’s
too much on herself, then offer ways to break it into smaller steps.
Like many other aspects of building a company, it’s a marathon and not a sprint,
Consult with your teammates – what would they feel comfortable starting
with? Make commitment and track weekly time investments of 1 hour per
week to start with. Use your whiteboard to say who’s responsible this week for
Open a wiki page or use the whiteboard to brainstorm ideas the team can
invest in, to create better branding. Create some rough estimation for each
and ask the team to vote on which they believe will be the smallest to take yet
Pick one or two suggestions every month and plan time for it as part of your
schedule. The idea here is to consistently invest in it, so the team could get
used to it.
Talk with your boss and with HR (if you have one) – can you invest some of the
If you want to give a talk or help one of your teammates to come up with one,
P.S. Here are some references you can use if you need to convince your boss of
http://www.instigatorblog.com/future-recruiting-inbound/
http://mashable.com/2013/09/26/smart-moves-recruit-engineers/
http://moz.com/blog/inbound-tactics-make-hiring-easier-and-more-fun
http://blog.hubspot.com/insiders/using-inbound-recruiting-attract-hire-retain-top-talent
expectations
Motivation:
practices using well-known tools and managed to fail enough times to figure it
work, I simply changed it and tried again. My code was tolerant to my skills. It
Scaling humans is much harder. Unlike code and architecture, people have
I wanted to create a team that would be happy to work together, where people
knew what is expected of them and were challenged and engaged in what they
do. But how do we get there? Where should we start? What is it that makes
people happy to work together or being consistently engaged in what they do?
I started to look deeper. I was curious to understand every aspect of this new
“human architecture” I envisioned but couldn’t put into words. My brain was
spinning non-stop.
I started to look at things the team is doing extremely well and things we still
lack. I started to ask questions about the business so I could try to figure out how
it would affect my team. Even when I wasn’t actively interviewing people, I was
asking myself different questions about who should we hire next or what needs
Along the years, I’ve come up with a few directing questions and frameworks to
guide my thoughts and execution on growth. This lesson should help you to
prepare for scaling your own team, by setting the context and providing the tools
you can use, even before you start interviewing. Let’s get going.
Building a scalable team means we can adjust our goals to meet new challenges
as an execution unit, without losing our unique culture or our ability to deliver.
without feeling resentment: “but I’ve invested so much time in it already, there
without feeling pinned down: “I cannot get things done anymore; all I’m doing is
Just like scalable architecture – Many things need to happen under the hood to
support this growth, but the end result remains the same: a smooth transition
Before we take our first step in building a “growth plan”, it’s important to
execute our plan and make the relevant adjustment along the way.
Alignment of vision
Scalable teams understand the context in which they operate and can
emotionally connect to the grand vision of the company. They can define their
own purpose and their role as a team inside that context and measure
themselves by it.
Misalignment of vision will lead to a dysfunctional team, one that cannot create
understand the problems our company is trying to solve, it’s easy to fall in-love
with our immediate results. It’s easy to deflect or even point fingers when things
Scalable teams define and cherish core values they believe are fundamental to
why they do things in a certain way. It can be regarding the way they
communicate, the way they approach validating ideas and implementation, the
level of assertiveness and ego they are willing to deal with, what they believe is
right in terms of work/life balance, and the way they treat failures or celebrate
success.
What if some people in the team don’t share the same core values? They will
behave in contradiction to others’ “true self ”. Over time, it would trigger a conflict
which will undermine the entire team-dynamics we have been trying to build.
Just imagine a team of people who believe in honest and open feedback while
one of them believes it is not needed, and prefers quick decision making even if
it means avoiding the team when making these decisions. Combine it with some
Core values don’t have to be curved in stone. If the team feels that one of the core
values is no longer relevant, it might mean that it’s a time for a change.
Self-balanced
not only do people fully understand their own function in the team (e.g. front-
end engineer) but also their responsibility and ownership (e.g. mentoring other
encourages autonomy and mastery for each team member: it helps technical
leads to leave their comfort zone as sole executioners and challenges them to
When people are given purpose (vision), autonomy (decision making and
growth ownership) and mastery (functional ownership), they can reach decisions
based on their expertise and what would fit best to the team’s values. They won’t
Scalable teams understand that reaching an alignment with core values may
lead to losing existing talent due to personal traits rather than technical ones.
Building a team which works well together requires long-term thinking and the
patience to get there. Losing talent will always drastically hurt your short-term
time that happens the team-dynamics will change, questioning the core values
we picked as a team.
Sense of accomplishment
Scalable teams celebrate their victories as they continue to improve and tackle
there can be only burnout. Great teams do not allow themselves to get to that
point.
As managers, our job is not to solely own risks, quality and mentorship, but
How can we take these ideas and make them into a reality? The most effective
way I found out along the years, is to write things down as we currently grasp
them and involve everyone around us until we reach something we feel good
about.
I wanted to share some of my own experience in this process, from back at 2007,
social information to rank the results. The company’s vision was to create a
That made me think – How can I make it more relevant to the team’s area of
expertise? What will inspire my teammates and make them more engaged?
My team was responsible for crawling and parsing the web to build a graph of
people and their content, so that the Search Team could use it to rank the results
So I spent a few hours coming up with what I believed would best represent the
team’s vision. Once I had it written, I gathered feedback from various individuals
in the company and involved the team in it. I’ve used these two questions:
After a few rounds of feedbacks and adjustments, the team’s vision was set:
tend to appreciate many different traits, in order to really pick the core ones, we
should ask ourselves one guiding question while judging each value:
“Is it important enough for me that I’d fire someone who doesn’t agree with it? ”
Many of you reading this line can hold back and explain why diversity is crucial
for building great teams. There is no argument there. There is however, a huge
difference between defining the values we believe in and the values we cannot
operate without. Core values are non-negotiable, and yes, it may mean losing
some people along the way. It’s a better outcome than daily arguments. Just
think what it does to our teammates to see this clash, from their point of view.
Write your current thoughts on your core values and attach a reason for why it’s
Just to give you a few ideas, here are a couple of core values I’ve written in
Own it. Never let someone else fix our own mess: we understand that sometimes
it’s not really our fault, but we don’t believe in making excuses and pointing
fingers. We believe in getting things done and take full ownership of our
deliveries. Above all, we never let someone else deal with the mess we own. Shit
happens, and when it does, we’ll fix it. This is what builds trust in the
organization.
Loyalty to each other above all: we want to be proud being part of the team. That
could happen only if we would help each other to be successful, and genuinely
care for one another. If someone is falling behind, it’s our job to stick around and
help out. If someone is kicking ass, it’s our job to recognize and celebrate it
together. Most chances, we’ll see each other on a daily basis more than we see
Using these values can help you for your hiring and firing process. Learning to
ask questions during an interview to figure out if they tend to point fingers to
explain their own failures, could help you test for a culture fit. Talking about a
“crunch time” the candidate was facing in their previous work and how their
teammates behaved, can teach you a lot about their core values.
Cynical people would always look at words such as vision or values as empty
words. Every time we do not act based on these ideals, means no one will take it
seriously. This gentle team-dynamic we’ve been working so hard to create, will
vanish. After all, we are what we do, not what we say. We need to act upon these
values!
the team
implicit. We should tell our teammates what they should expect to receive from
Share why we do things, not only how we do them. I strive to change our
methodologies and tools to better fit our team: stagnation will eliminate
Make sure you’ve got the full picture: no walls between you and the Product
Getting real and honest feedback from someone who cares about your
personal growth. That means I’ll push you hard to get you out of your
A chance to learn and absorb new ideas from incredibly smart people.
A chance to teach and leave your mark on why and how we get things done.
At this point, it would be highly valuable to share it with our boss and other
more ideas regarding the value we can provide and even provide us with tools to
Just as important for the team to understand what they should expect of us, we
should explicitly say what we expect of them. This time, we’ll break it into 2 parts:
baseline expectations and personal expectations. The former will include all
general expectations we have of any team member, while the latter will be
specific for each individual in the team, according to their position, experience
Baseline expectations:
What do we expect to see from each teammate? Here are a few ideas:
Passion to learn & get better every single day - Agile state of mind –
Passion to teach others, even if it means you’ll have less time for hands-on.
Get it Done –figuring out the requirements, building the feature, making
sure we’ve got monitoring and analytics in place, making sure we can
deploy it, reducing risks along the way, communicating with all relevant
members on progress. You own your work, not just babysitting it.
Know when the work doesn’t make sense – invest time on things that move
happiness-related.
Personal expectations:
Create a list of all of the people in your team and write 2-3 specific expectations
For example, I’ve expected every Technical Lead in my team to be accountable for
technical risks and technical growth: I’ve asked them to spend a few hours and
I’ve told them that I expect them to take care of technical growth for the other
teammates. It means looking out for technical debt, conducting code reviews,
improving the team’s technical skills via lectures, sharing links to great articles
and teaching as much as possible. From them, we don’t want to hear “we have
shitty codebase”, we want them to take action to fix it. We don’t want to hear “I’m
the only one capable of doing Code Reviews”; We want them to train others to do
them too.
We’re building a team. That means everyone should have their own
responsibilities, both to deliver results while also looking around and helping
others. Our Technical Lead(s) can help us building that team, if we’ll let them.
If we don’t have anyone in our team that we can count on at this point, we should
make it our goal to train someone for that role. We cannot be responsible for
both personal and technical growth in the long run. We’ll be mediocre at best at
both.
Explicit expectations create a contract between us and our teammates. This kind
of peer pressure is a great way to make sure we are accountable for our promises.
expectations is not an easy task; it takes time to reach that quality. Have the
— Kris Gale
In order to keep tabs on our team’s progress, we can use these 4 guiding
closely on our teammates and see who’s running around to put down fires. In
terms of scalability, this phenomenon can get dangerous; the second this person
takes a vacation, the team will completely shut down. We need to set our
Next, who from our team possesses knowledge that prevents the team from
making decisions without them? Or – is there only one individual who knows
how to do a specific task? What will happen if that person decides to quit
tomorrow?
Just like before, we need to set our expectations of that person to distribute
We often forget that trust is not a given. The fact we hired someone doesn’t
believe they can. Employees who constantly share their status, keep the
deadlines and take ownership are ones who actively build trust inside and
We should ask ourselves who in our team is not building that required
confidence with us, or with other people in the organization. It’s our job, as their
managers, to set the expectations straight and help them build that confidence
and trust. Talk with these employees, explain how trust is being built and offer
On your 1:1, ask “what’s the worst thing about working here? ”
One trick to find either reasons for happiness or productivity blockers, is to ask to
point a finger on the worst part of the job. Sometimes, it may lead to an
observation on the tools and methodologies we use, while in other times it may
We should listen carefully and try to ask more questions to better understand
the problem, rather than quickly try to come up with solutions. The purpose of
this talk is to learn more about them. We can use our next 1:1 with them to raise
some suggestions and offer ways for them to experiment with different
approaches.
Task List:
Write down your team’s vision. Go over it with your boss, both to get more
ideas and to make sure you’re aligned. Then, use your 1:1 with your teammates
Write down your core values. If you need more references or ideas, you can
look at Buffer’s values (slide 5) or HubSpot’s values (slides 7-14). At the end of
the day, it’s going to be values you and your teammates truly believe in.
Write down your expectations, both what the team can expect of you and
what you expect of them. For your convenience, you can download (zip file)
Share your core values and expectations with your boss, colleagues and (if
exists) Human Resources. Get as many inputs as possible, but at the end of the
Create a short presentation and share it with the team. It may feel awkward,
but don’t sell yourself short. People should feel your honesty and willingness
to commit to it.
Who’s currently all over the place? Sit with them and figure out how you can
the knowledge and assign a task to that expert to teach at least one more
Who’s currently not able to reach your expectations? If not you, who in the
team can serve as a mentor and help them get there? Assign them both to
values.
culture.
In the last 15 years, I’ve served in the Israeli Air Force, worked for big companies
such as Mercury (acquired by HP), and small startups such as Delver (acquired by
Sears), Cleeqa and Commerce Sciences. I had the privilege of working with
As much as I enjoy building tools and products, I find myself most fascinated
with “Company DNA” - which companies in the world change the way we build
software? How do they approach it? How are they hiring people? Which process
I enjoy writing and lecturing about these subjects, hoping to provide practical
startups:
Team Lead – here is what your boss isn’t telling you, yet still expects of
you
“The Leadership Role @ the Agile era” (at Outbrain, Google and
ILTechTalks)
“12 Leadership Hacks For Building Great Teams” (at Conduit, Outbrain
and ILTechTalks)
What are the biggest lessons first-time managers learn on the job?