Engineering practices @ Meta: #6 Better engineering and focus weeks
Meta encourages engineers to spend time on work that improves engineering efficiency and also take time to huddle for a week to focus on creative problem solving.
One of the 4 axes that software engineers at Meta are evaluated upon during performance reviews is called Engineering excellence (previously and still referred to as Better engineering by many)
What does better engineering mean in practice?
Typically engineers can account for 20% of their bandwidth working on engineering improvement tasks.
These could range from fixing bugs, improving documentation, making tooling or infra improvements, refactoring code, or even working on a project outside immediate team boundaries that could potentially have a larger impact (of course with manager alignment 😉).
Some obvious benefits of encouraging this practice are:
- Improved reliability of tools and infra
- Improved codebase health with frequent refactoring exercises
- Opportunity to pursue work outside direct project impact. Often times this could lead to the creation of new and interesting tools.
Including this as a core pillar in the performance review cycle does help give it due importance among engineers and encourages a thriving culture of continuously improving code, infra, and practices.
I observed while the expectation is there, it’s also pretty unstructured and engineers can work on this in whatever manner suits them best. 20% could mean an hour daily or even a full day in a week. There is a lot of flexibility and autonomy for the engineers on how exactly to go about it.
Another engineering practice in line with the above theme of better engineering is called Focus Week
Typically, what this means in practice is that Engineers get an entire week of focused work to work on specific themes that map to either the team’s charter or make progress toward resolving some important problem area.
How is this generally organized?
During this week, regular meetings are postponed. 🙌
An engineering rotation is put in place where engineers take turns as primary organizers and help to facilitate the focus week. Usually done by sharing a Google doc in advance wherein all the other engineers on the team can draft their ideas along with a priority and mention what could be the tangible impact of working on this task.
Below is what a sample template could look like:
[Item] Improve dashboarding for framework X to include flakiness scores
[Description] A somewhat detailed writeup of what the above task entails
[Owner] Engineer X
[Impact] Improved visibility of test flakiness scores for framework
[Estimated time] 1 week
There are either meeting rooms booked for the entire week or even team spaces that could be used. This also helps bring a sense of excitement and creative problem-solving since you are out of your usual workspace.
A standup in the afternoon serves to provide an opportunity to share progress but besides that, there is no commitment to attend any other meetings. You can also think of this like a no-meetings week wherein you could work on something that you just have not been able to find sufficient focussed time for. Engineers often pair on these tasks and priorities as well.
At the end of this week, the facilitator collects updates from the team members and then publishes a workplace post with details of what was worked upon, any impact that was created, and also any ideas that could be tried in a future focus week or even initiatives in the team roadmap.
All work and no play?
The week is not all about work; These days are filled with friendly team banter and engineers collaborate on similar priorities. There are short social breaks baked in for even playing some team games
Usually travels for remote team members and team lunches are also planned during these days to encourage a greater sense of team belonging and bonding. Overall, I’ve seen wonderful outcomes from these weeks and it’s a practice I feel should happen more often in other companies as well.
Thanks for the time you spent reading this 🙌. If you found this post helpful, please share it with your friends and follow me (@automationhacks) for more such insights in Software Testing and Automation. Until next time, Happy Testing 🕵🏻 and Learning! 🌱