Hi, the 15th day's post of Mercari Advent Calendar 2019 is brought to you by @tuttiq from the Engineering Office team at Mercari. Our Engineering Office is not a traditional product development team. In fact, we are nothing like a product development team. We work on projects focused on organizational development and people growth across the Engineering division, such as improving the hiring and on-boarding experience for engineers, providing learning opportunities, creating an engaging work environment, and implementing better processes to enable and inspire our people to reach their full potential inside Mercari.
Of course, that's all easier said than done. In the past 3 years, Mercari has grown rapidly, the company's total headcount quintupled, and a large portion of the growth was in the engineering division.
Although the number of employees grew quickly, the organization did not evolve at the same pace. That left us with the big challenge of updating and adapting our processes and culture to this new era at Mercari. And while updating processes may sound straight-forward and simple, we are not only updating documents and guidelines and expecting that people will follow them (chances are that most people won't anyways)‚ — we are trying to define an inspiring culture which people will embrace and foster in their daily work. But...
How do you define culture in a large and diverse organization?
That was one of our biggest challenges. We noticed that the diversity which makes our engineering organization remarkable also brought several challenges. There were lots of disagreements on how things should be done, what should be considered a priority (from an engineering point of view), and how to evaluate people and their contributions.
It became clear to us that we needed to define more precisely what we wanted as an engineering organization. What are the competencies that we value and the expectations for each level of engineer? To figure them out, our CTO, Suguru Namura, started building an internal Engineering Ladder, a project which I led with the help of a committee of managers and senior engineers.
After tons of research and discussions, we started writing down the competencies that we considered the most important for software engineers at Mercari. But having a diverse and large organization like ours, we were afraid that, if we defined everything behind closed doors, many people would not agree with or feel included in the expectations that we were setting.
So we decided to make this an open process and involve as many members of the engineering division as possible (engineers, tech leads, engineering managers, etc), by working on the whole project in public channels on Slack, having town-hall meetings where anyone could give feedback and comments directly to the CTO and VPoE, announcing about the project progress and sending feedback surveys at every "Engineering All Hands", and also having bi-weekly open-door sessions that anyone could join to ask questions or give opinions on what we were doing.
Yes, it was really challenging to gather that many opinions and feedback while we were trying to move the project forward. But we figured that it was the only way that we could bring most people on-board with us while making a huge change to the way engineers work. After a while, we were able to build trust among many engineers, and it was really nice to see the shift in the way they approached us, from questioning and worrying to actually looking forward to the next steps of the project and mentioning it in discussions with their peers ("this problem will be solved when we start using the Engineering Ladder").
One step back: from Competencies to Principles
While we were trying to gather the attributes that we considered really important to define great software engineers at Mercari, we created a list that included broad personality attributes (like "challenging with curiosity" and "continuous learning") and also specific skill-based competencies (like "building reliable systems" and "solving problems at the root"). Our list already had 22 items and, the more feedback we received, the more we heard something else was missing.
That's when we realized we had to take a step back, and distinguish between principles (defining our mindset and culture) and competencies (which are skill-based expectations that would vary with each level of engineer).
After more analysis, discussion, writing and rewriting, we finally reached a consensus on our new Mercari Engineering Principles, which are 9 principles to define our culture and guide our decisions.
We decided to map our engineering principles to our three company values: "Go Bold", "All For One" and "Be A Pro", to strengthen the sentiment of alignment. We also chose to phrase them with action verbs in an encouraging tense (like Seek, Focus and Strive). We wrote short descriptions for each one of them and also provided a more detailed version for further clarification.
After we decided on the principles, it was time to dive back into defining specific competencies (now guided by these principles) and to write the expectations for each level of engineer.
Mercari Engineering Ladder (and the future)
We define our ladder steps based on the Engineering Principles mentioned above. Actually, our ladder is more like a matrix (maybe we should change the name? :)).
As you can imagine, defining skills and expectations for all levels of engineers (we currently have 5), following each of the 9 engineering principles is not an easy task. We have been through several drafts and three Release Candidate versions, and the final v1.0 of the Mercari Engineering Ladder is planned to be finalized this month (almost there, team!).
Once the ladder is released, we will start using it as a guideline for many of our operations: hiring, on-boarding, in-house training, evaluation and promotion. This will not only give a clear path for engineers to plan their career progression, but it will also help us achieve more consistency, alignment and fairness as an organization.
This is only Chapter One of our story defining and shaping our engineering culture at Mercari. We know that we cannot change culture by only writing guidelines and processes. Culture is defined by values, and our actions and decisions (what we reward and what we discourage) have to reflect our values. That's why we believe that defining our principles and applying them to our hiring and evaluation process is so important. In the future we will write about these following steps as well.
Thanks for reading and let us know if you have any comments :)
Tomorrow's blog —the 16th in the Advent Calendar— will be written by @kagemiku. Hope you are looking forward to it!