Reverse Engineer Your Manager
End of 2020 I gave a talk at DroidCon APAC 2020 titled “Reverse Engineer Your Manager” . The title is a bit tongue in cheek (how else will conference organizers notice your talk?), a more honest title would be: How to work successfully in a large (tech) organization. In the talk I give 5 directives for career success.
Everything is based on my experience at Rakuten, moving through engineering ranks from application developer to principal application architect. An attendee gave me this testimonial:
Lots of good advice.
Rather well-distilled content from hundred of hours of podcasts, blogs and books.
So I thought I’ll write it up for y’all! If you prefer to listen rather than read checkout the recording & slides.
This if for you!
… if you are an individual contributor or a manager of ICs in a medium-large sized tech organization.
Individual contributor includes developers, QA, designers, product / project managers, data scientist, … and all the people that actually build stuff.
M-L sized organization means your company has middle management structures (i.e. devs don’t directly report to the CTO, product managers don’t directly report to the CEO) and a dedicated HR department that lays down the law.
If that’s you - read on! If not your milage may vary 😉.
Let’s ignore “hard” skills for a minute
Individual contributors are makers. So, as an IC, you need an undeniable hard skill, otherwise you can’t make stuff. Like coding, designing, writing, etc.
Improving that “hard” skill is good for your career. But it’s table stakes. We expect you to get good at your thing. Instead I’ll focus on all the stuff outside your IC skill that determines your success.
Compare it to competitive (e-)sports. Players get good at the game, but they need to master the metagame. That is: how other teams play, league mechanisms, rule changes etc., to win the league.
At this stage in your career the metagame boils down to making your manager successful. You make them successful, they make you successful. Everyone get’s a big bonus, yeay 🎉.
So how do you make that easy for your manager?
First of all: What kind of work do you enjoy?
Work comes in all shapes and forms, irrespective of your specialization. Take inventory of what you are good at and what you enjoy doing:
- Is it collaborative discussions?
- Or is it facilitation?
- Or Is it directing others?
- Or is it visualizing progress?
- Or is it coming up with visionary ideas?
- Or is it executing on ideas, not necessarily your own?
There’s no right or wrong here. Just figure out what kind of work suits you best.
Next let’s talk about work style.
I love remote work. I love asynchronous communication. Sitting at home, listening to jazz, thinking deeply about a problem or an argument in a discussion, writing a well structured idea in a wiki or an email - that’s my jam.
A coworker of mine is the opposite. He misses the office dearly - the bustle, the serendipity, the energy. He also loves open ended conversations on slack and ad hoc Zoom calls.
Neither one is universally right, that’s just our preference in work style. There’s other aspects to work style like:
- Strict hours vs. flexible hours
- Variety of work vs. the same work
- Predictable work vs. fire fighting
- Learning new stuff vs. applying “old” knowledge
- Depth vs. Breadth
And probably more. So what’s your preferred work style?
Lastly, your motivators.
What gets you really going? Money? Free time? Impact on organization / community / society / humanity / next generation… ? Challenges? Status?
This is a tougher question for 2 reasons:
There’s a sense of moral judgement over some of these (depending on your cultural context). For example, among young “valley-type” devs conquering hard challenges and disrupting the economy is idolized. In that context admitting that challenges leave you… indifferent - that may be daunting. Or admitting that you really love money may be an uncomfortable truth to admit to yourself (again: depending on cultural context).
It’s not straightforward to discern which are the important motivators. They all sound kinda right, don’t they? But saying “all of the 11 motivators motivate me” is like saying “all food is my favorite food” - it’s not saying much.
Luckily Attuned.ai will help you determine your top motivators with a snappy 10 minute survey. No moral judgement, no hassle. The result looks something like this 👇
Ok, now you’ve determined what kind of work you like, the work style that you thrive in and what motivates. You can use this knowledge just for yourself, for example with Apoorva Govind’s “Am I Growing Complacent Currently” framework or with Shaan Puri’s new years resolution framework.
The next step is to educate your manager! That’s the first directive
Once your manager knows how you work best and what kind of work suits you they can make better use of you - put you on the right project, protect you from things that undermine your productivity (e.g. allow you to remote).
The same goes for motivators: If you manager knows that money matters they’ll fight harder to make it happen. Conversely if autonomy fuels you they’ll find a role, team or project that gives you more autonomy.
The result: they get better player on the team, you get to have more fun playing, y’all be happy.
Understand Your Manager
Did anybody ever explain to you what your manager does? “Manager” is such a generic term, every organization interprets it a little different, and then individuals within an org deviate ever so slightly.
On a high level managers do a couple of things: oversee progress, staffing, talent development and performance evaluation. Notice that managers don’t build stuff, by definition they are not individual contributors (anymore). Moreover, your manager is not a technical expert (anymore). So don’t expect them to be your teacher or task master. You are the expert (developer, designer, tester, etc.).
While they don’t have the detail depth, they typically have more breadth and experience. Managers use that to search for solutions, point out problems, ask difficult questions and hold you accountable. They have a mission & goals, after all - successful product / project and successful people.
Here is where you can make it easy for you manager. Help your manager achieve their goals, so they help you become successful in your career.
Build trust by communicating the technical problems you encounter - remember, you’re the expert. And don’t just stop at the technical detail, “we have a code quality problem” is too abstract. Why does that matter for the product or business? If it has no impact on that, it’s not really a problem… Go one step further, present solutions and the associated trade-offs. Enable you manager to make informed decisions, to leverage your deep technical expertise - that’s how you make it easy for your manager. That’s how you build trust. And that’s the second directive.
That’s understanding your manager’s role and your resulting relationship in the abstract. Beyond that, your manager is also just one of your coworkers, who has a preferred work style (just like you do). Understanding the preferred work style, in particular the communication style of your manager, is crucial.
Are they a listener, who likes to be told in synchronous conversation and interject with questions? Or are they a reader, who likes to asynchronously understand the situation and reflect on it before they react?
What communication does your manager expect? In terms of content, level of detail, frequency, medium and what are the rules of escalating problems?
If you can’t answer these questions with confidence go ask your manager. In your next 1 on 1 or in an email (depending on whether they are a listener or reader 😉).
Figuring out communication is fairly easy, but other skills that your manager has or lacks are harder to assess. Especially if you haven’t worked together yet. Those skills can include:
- Ability to navigate & sway political conflicts
- Product development expertise (relics from their days as individual contributor)
- Using process to facilitate team productivity (vs. inhibiting productivity).
- People development skills, e.g. performance goal setting within the rules of the HR regime, in a way that allows you to make career progress swiftly
- Trust / trust issues
Just like the skill diagram of an athlete!
If you figure out a weakness… maybe you can make up for it. Say your manager is mediocre at goal setting, that will hinder your career progression. You can take time to take a deep dive into the HR rules and take over the heavy lifting. That frees up your manager to do what they do best and you have better goals (→ better evaluation → better career).
Conversely you can and should use your manager’s strengths to your advantage whenever you can. Some examples: If they were an excellent UX designer in the past get them to help you build a slick app. If they maneuver politics like the lovechild of Tyrion Lannister and Otto von Bismarck ask them to coerce that other team to cooperate with your team.
Again: You make your manager successful. Your manager makes you successful.
The last piece of understanding your manager is understanding their mission and goals. They have some OKRs to deliver by the end of the quarter and have an underlying strategy for the next years or so. That’s what is in their performance review. Ask them, they’ll be happy to tell you. Sometimes those OKRs and organizational strategies shape how we build software or vice versa (e.g. Conway’s law). As individual contributors we make many decisions every day, about user flows, about database schemas, about integration architecture, about cloud providers… Use your understanding of your manager’s goals & the organization’s strategy to make the right decisions. That’s what they call alignment.
We put it all together into the third directive.
Understand your Business
Business is pretty simple, really. It’s all about making money. Growing revenue / profit, building moats… all that good jazz. So if you help increase revenue / profit and build good moats you should be golden, right?
Well, it’s more subtle than that. Nikhyl Singhal describes 4 stages of companies:
Depending on your company's stage you have do behave differently. In wartime you need to act quickly and take short cuts to scale suddenly. In peacetime you build in quality from the start, rely process and build for scale. In large organizations some parts of the company may be at war while others are at peace, all at the same time.
The operating mode of your company (war or peace) tells you what matters and what doesn’t. For example, if you drive processes & tools to improve quality and reduce risk you’ll be successful in a peacetime organization. But in a wartime organization you’ll be seen as an impediment to shipping or scaling. Conversely,
ssh-ing into production servers to edit hot code will be seen as reckless and hacky in a peacetime organization. But in wartime this might be the feat that just saved the company (still hacky af if you ask me).
In both scenarios we have behavior that’s perfectly appropriate for one mode of operation while it is unacceptable in the other. Figure out what’s right for your organization and stick to that. At the end of the day you’ll be successful if you help build a successful business.
Understand the Evaluation System
…and then there’s HR. HR are the guardians of culture, in the sense that it is HR’s mission to instill company culture into the company’s people. And HR makes the rules for evaluation / performance review.
In Rakuten we have encoded our culture in Rakuten Shugi. It’s on posters, the back of our ID badges, in booklets around the office… all around everywhere, really. When I first joined Rakuten I didn’t like that very much. It seemed like propaganda.
THOSE DAMN POSTERS AND PLAQUES
These motivational accessories [..] are a triumph of form over substance.
But I realized that the evaluation system is shaped by that same culture. Every goal we set maps to one of the principles in Rakuten Shugi. So I had to pick aspects of Rakuten Shugi that resonate with me and ignoring the others. To win in the evaluation game you don’t have to drink the kool-aid. At least not all of it.
Another important realization was that impact & scope directly correspond to evaluation / salary levels. Let’s say impact on yourself is level 1, e.g. “normal” individual contribution. Then impact on a handful of people is level 2, e.g. team lead or tech lead. Following that path, impact on a whole department is level 3 and impact on multiple departments level 4. Finally, impact on the whole organization level 5.
- level 1 - individual
- level 2 - team / group
- level 3 - section / department
- level 4 - multiple departments
- level 5 - whole company
Levels of impact don’t necessarily correspond to experience, tenure or role. It is a lot easier for a general manager to have impact on level 3 or 4 than, say, for an application developer. But an application developer can take a shortcut towards greater levels of impact in order to achieve higher levels of compensation quickly.
Here’s one shortcuts I took: I enabled developers to open source internal code and/or to contribute to open source projects. The impact went way beyond my project scope at the time (level 1-2). This empowers all members of Rakuten’s Tech division, that is thousands of people. It was a shortcut to level 4 impact.
The shortcuts available to you depend on your organization and personal skillset, I can’t give you a recipe. But shortcuts to high impact share one characteristic: they are high leverage activities.
Writing code to fix a bug is low leverage - you have to invest roughly 100x effort to fix 100 more bugs. Setting up static analysis that detects classes of bugs before they reach production - that is a 1 time effort to avoid 100 bugs. That’s 1-to-100 leverage.
Another example: you build an internal software library. Every developer that uses the library needs to learn how to use it. So they talk to you. That’s low leverage. Writing good documentation is ~5x effort of explaining it once. But that documentation serves all developers using your library. That’s high leverage. Going further: Teaching 10 developers to write good documentation solves the same problem for 10 libraries. That’s even higher leverage.
Typically you don’t have a lot of time outside of your assigned project to work on your career shortcuts. High leverage activities allow you to have great impact with relatively little effort. They make for great shortcuts.
Combine understanding of the business, understanding the HR regime and using high leverage activities to beat the evaluation system.
Become a Leader
The easiest way to get promoted into a new role is to do that job already, that is to say: the promotion catches up with reality. So, the fastest way to become tech lead is by acting like a tech lead now. You become a recognized leader by stepping up and taking on responsibilities. Before anybody assigns that role to you. Once you are a de-facto leader your promotion will follow.
Main role of leaders is that of a catalyst, not a director.
Leaders make it possible for the magic to happen.
Step #1: Step up to the Task | Take on Responsibility
Find a valuable task that is not getting the attention it deserves. For example neglected jobs like documentation, development tools, communication or the onboarding processes. Pay attention to the team, what are the issues that your team members complain about repeatedly? (But stay away from bike-shedding). Or ask other leaders what they think are problems that need more attention.
Step #2: Be evidently fit for the Task | Become Visible
Most likely you’ll have to do a little learning: about tools, processes, team/project history etc. Once you feel confident in your newfound domain: show it! Speak up in discussions & meetings. Report your work and progress to your manager and your team, for example in weekly report emails. Generate awareness for the problem and buy-in for the solution by presenting why the issue is important & valuable for the team.
For example, imagine you are in a team without continuous integration practices & tools. You decide to improve the team’s practices and introduce some tools to run automated builds & tests for every code change. You’ll have to explain why this is a problem, maybe like this:
“We had to rollback & hotfix the last 3 releases because we found bugs after release. The bugs were caused by faulty integration of different features that were developed by different developers. Right now we can’t detect such integration problems because we don’t integrate our work frequently. I’ve researched how other teams deal with this problem, based on that I suggest we do [your suggestion].”
Step #3: Prepare for the task ahead of time | Educate Yourself
How you prepare is up to you. The only factor that everybody needs in order to prepare is time. Take the time necessary to educate yourself about your new thing. The team will look to you for guidance.
Step #4: Be a Problem Solver | Maximize value to everyone
The most important step: actually solve a problem for other people. Alleviating pain for team members, e.g. less frequent & less painful merge conflicts, goes a long way. So does delivering wins for the business, e.g. more reliable releases, less defects, more agile delivery. If you have to spend 8 hours to save the other 5 developers on the team 10 minutes of pain / week - do it. At first that seems like a net-loss. But the effort will pay off soon enough. And you’ll be recognized as the problem solver, the leader.
Step #5: Do it all with humor and obvious goodwill | Ignore Politics
“Nobody goes to work intending to do a bad job”
I get frustrated at work a lot. In Nemo on Software #13 I told story about how “I burst into a flames of pure, black rage and burnt everything to the ground” because of abysmal documentation. But if I pass on that frustration to co-workers I just contribute to a self-reinforcing cycle. Frustration begets regret, regret begets frustration. A generous amount of humor and obvious goodwill breaks that cycle. Most of the time that infuriating thing, like that piece of abysmal documentation, was not created out of ill will. Somebody tried the best they could, with the knowledge and resources they had.
…and about politics: politics are boring and stupid. Don’t waste your time on politics.
I followed these 5 steps (without knowing about them) and I have seen others follow the same path. Those are the technical leaders in my organization now. Nobody got assigned to become the next tech lead, or manager, or architect. Everybody stepped up. As a matter of fact, I’ve seen situations where we had a promising candidate join the team, we expected them to grow into a tech lead role - but they never did. It’s all a matter of initiative.
Own your Learning
Don't expect your manager to push learning new things onto you. They might. But most likely they won't. You are in charge of…
- 📉 Going to conferences
- 💪 Attending trainings
- 🖥 Getting software licenses
- 📚 Getting books
- 📖 Taking time to study
If you don’t do it, it won’t happen.
Write a Career Plan
Set the high level goals with you manager and figure out what you need to deliver to reach that goal - you can do that in a 1-on-1. For example:
Dev: “I want to become tech lead of the Android team within a year”
Manager: “Ok, in order to get you there you need to demonstrate:
- technical depth in Android development
- technical leadership
- substantial individual contribution to our project”
Dev: “Got it!”
The next step is to fill in the details how you plan to demonstrate those competencies. It could be:
- App Crash-free rate is at 98% → target 99%
- App Launch time is at 2 seconds → target 1.5 seconds
- Nobody on the team understands our navigation logic → understand, document, (redesign) our navigation logic
- Our quality practices are lacking → lead testing & static analysis efforts
- We don't have CI → setup infra, help team adjust to the process
- Our CI takes 30 mins → profile & optimize CI, target 3 mins
- We're starting a new initiative → become driving force
- Attend a conference / present at a conference
Breaking it down into these smaller, measurable goals makes it easy for your manager to help you. Help you with the support you need: with social capital to convince the team, with money to buy infrastructure & tools, with money to go to conferences, with opportunities to lead initiatives. Help you get that promotion and that 💰.
#1 Educate Your Manager About Yourself: Find the right work style, kind of work and motivators for you & educate your manager about that.
#2 Explain Problems & Offer Solutions: You are the expert, your manager needs you. Help them understand problems & solutions, enable them to make informed decisions.
#3 Support & Enable Your Manager: Get aligned with the mission & strategy, make up for your managers weaknesses, make use of their strengths. Adjust to them (if you can).
#4 Beat the Evaluation System: Understand what your company rewards and how the evaluation system works. Armed with that knowledge uncover shortcuts to career progress.
#5 Ask for Help: Own your learning, own your career plan and become a leader. To be successful you’ll need help - ask your manager for help and be specific about it.
That’s the 5 directives of my “Reverse Engineer Your Manager” talk, here’s a recording of the talk.
Q & A
After the talk I got questions from the audience. A lot about working with… not good managers. I ended up recommending to look for a new team repeatedly. That’s what I’ve done and what friends of mine have done. In all cases that was a change for the better. There’s no shame in walking away from a bad situation. Here are the the questions and my (unprepared) answers:
Question: What if we follow all the advice, like taking responsibility, being visible, being a leader etc. and still the manager gives us less hike and more hike to someone else?
Maybe your manager is a bad manager.
Regardless, I would try to understand their reasoning. Why did they take this decision? If you can’t find a satisfactory answer by yourself go ask them. If your manager can’t give you good answers - maybe you need to find a new manager.
Or you could go up the hierarchy. Depending on your relationships in your organization and the overall climate “in the office” you could talk to your manager’s manager. This can be… a bit dicy. If you suspect that your manager will feel betrayed by that then you should not do it. You don't want to turn your manager into an enemy. But if you have a good relationship with your manager and with your manager's manager - go for it.
Question: You focus on making it easy for your manager. But shouldn’t we focus on making the whole company better instead of enabling a manager? What a manager wants is not always good for the company.
That's a good point. Ideally every manager is aligned with company goals, so that your manager’s success contributes to company success. I had eight managers. Seven out of those eight managers were aligned with company goals, what they wanted was good for the company. When that wasn't the case I left that team.
Again, I would start with trying to understand your manager. Maybe they see something that you don't see. But if there's nothing to be understood, if they are just plain wrong the only advice I can give you is: get out! Your best work will go to waste if it won't be recognized. Don’t waste your energy on a horrible manager. Move to another team, a different department or a different company.
Question: There are gender biases which managers have. They think women can't do it. Any suggestion how to change their thinking?
That's a big problem.
To be honest, I don't know how to change your manager's behavior. I've tried to change my own behavior in hiring interviews, by using techniques to correct from my bias. And that is really hard, many biases are unconscious. How do you correct biases that you are not aware of? Now try that, but on other people. It’s like multiplying super-hard with impossible.
One way to effect change in your manager, in a big organization, is going through HR. If your company has an equality or diversity group / department / hotline talk to them. Ask them for advice, they know better than me.
Of course, if you were objectively wronged then file an HR complaint.
And, my staple advice: if you have a shitty, sexist manager - go find a better manager.
Question: What if I want to step up and become a leader, like you suggest, but I already have team lead? How should I collaborate with my team lead?
You might think “oh there's already someone in charge of that and I don't want to step on their toes”. That’s a valid concerns. Becoming a leader doesn’t mean steamrolling others, quite the opposite. There a several options: You can be a lead in a different area. Or you can become right hand of the current lead. Or you become a lead in a new team. In large organizations there is always room for more leaders.
For example, you see a problem, say, static analysis is lacking and you really want to set up more static analysis tools for the team. Talk to the team lead about it, say “I noticed this situation, I think it’s a problem, and I think I can fix it”. Chances are they already know about it and it’s in the backlog. Or maybe there's historical reasons. Probably they’ll be happy to delegate that work to you or to do it with you. You will become the the leader of that initiative while the team lead focuses on other things.
And to re-iterate what’s on the slides: it's not about positional authority, where people are assigned roles. It's about the de facto leadership, who gets shit done - that's what matters.
Question: What if I'm in a company where overtime, self-development and taking responsibility for important stuff is expected, normal behavior. How can I stand out?
I'm not sure that you need to stand out. If you do those things and get recognized for it that's already very good. It’s not a zero-sum game, you don't need to be better than somebody else. You just need to have positive impact.
It all depends on company culture, right? I can speak for my background and my opinions, your company likely works differently. The expected overtime is red flag to me. I am very careful about spending time outside of work hours. Even if coworkers do that, you don’t have to follow suit. It’s a slippery slope towards getting exploited via peer pressure, working double the hours for the same pay.