Rules to Better Bench Management - 3 Rules
When developers are not on client work, they can be working on internal projects to improve the company. These are our best practices to ensuring that internal projects are run well.
In any organization that juggles multiple projects, having clear coordination and allocation of resources is essential. The role of a "Bench Master" is critical in ensuring a smooth transition for developers between client projects, minimizing downtime, and promoting ongoing learning and development.
A Bench Master's primary responsibility is to ensure that all developers know what they are working on when they are not on client projects. In order to accomplish this, the Bench Master has these responsibilities:
- Responsibility - This role is a Bench Masters number 1 responsibility
Responsibility - Allocating new employees or employees finished on a project to a Scrum team
- The Bench Master should make the internal booking for the developer
- Tip: Starting on a new project is costly, try not move developers too frequently
- Customer bookings override any internal projects
- Customer bookings should not be last minute, they should ideally be 1 day in advance
- Responsibility - Maintaining a list of internal projects in priority order
- Responsibility - Scrum Master for the Small Projects Team
- Professional development - Allocating people projects based on what they want to learn
- Coaching - The Bench Master should coach Product Champions around the Scrum ceremonies
- Process - Across all internal projects at a high level
- Process - Knowing the priority of internal projects
- Process - Knowing what skills are required for each project
- Process - Bench Backup - Keep someone in the loop for when Bench Master is unavailable
- Process - Weekly meeting with important stakeholders to talk about priorities
Process - Morning meeting for anyone not on client work
- This is for people not already assigned to an internal project or have finished work on an internal project
- You should make sure this happens across all timezones
Some other terms that are commonly used for this type of role are:
- Bench Coordinator
- Resource Coordinator
- Operations Manager
- Allocation Manager
- Capacity Manager
- Scheduling Manager
Developers love certainty, it's important for them to know what projects they'll be working on in-between client projects. Knowing in advance what projects they'll be working on minimizes the time it takes to get up to speed on a project as they could be looped into communications for the project before they start so they have some recent context when they join.
As you can imagine there is a lot of information that would be required for a Bench Master to be effective. The following would be useful for a Bench Master to have:
Developers and their skills - Your CRM likely has this information already
Developer client bookings - You can get this information from your staffing report,
Internal projects - It's important to know their priorities as well as tech stacks, if it's a big project, knowing the actively developed portions tech stack would be helpful
- Developer bench bookings - Your staffing should be able to tell you which developers are working on which internal projects
This covers the basics of what a Bench Master would need to know, there is other factors that would influence the Bench Master's decisions such as developer personal goals. For example, if a developer wants to learn React, the Bench Master could try place the developer on a project that uses React.
Here are some considerations the Bench Master would keep in mind for every developer:
- Client needs - Is there any client work that tentatively needs the developer?
- Time between now and next client?
- Current skillset
Personal Development Time
- Check Long Term goal tracker e.g. Trello board, anything important? Anything doable in the time between now and next client?
- Are there any languages you want to learn? "I want to learn Blazor please" (Bench Master puts person on Blazor project)
- Internal Projects - What is most important?
- Internal Projects - What teams are looking for a Dev?
Ensuring seamless continuity of operations in the absence of the Bench Master is essential for streamlining approvals.
- The backup Bench Master should be someone who is familiar with the internal projects and the skills of the developers.
- A semi-regular catchup between the Bench Master and the backup Bench Master would be a good idea to ensure that the backup Bench Master is up to date with the current state of the bench.
- Always CC a distribution list that has the Bench Master and backup Bench Master on any emails regarding the bench.
- If the Bench Master knows they will be unavailable for a period of time they should ask the backup Bench Master to monitor the distribution list for any emails regarding the bench.
Tip: If you have multiple offices, consider having a backup Bench Master that covers each timezone you have an office location
Projects should be broken down according to size and scope:
- Long projects (>4 weeks) with >3 active developers should be run as a separate team. Every standalone project should have a Product Champion.
- Other projects should form a single team. This team is Scrum Mastered by the Bench Master. This allows the developers to maintain adapted process ceremonies and while still working on different products, see Do you ensure your client projects who don't use full Scrum, at least have a "Mini-Review"?. This team should adapt the standard Scrum emails (Do you create a Sprint Review/Retro email?) to send a collective email to internal stakeholders after every Sprint. This team should still do a retro as the nature of their more ad-hoc environment will help them be more effective.
Ensuring that clients see and receive value from work is one of the top jobs of a consultant or employee. Thus, as a manager and team member you should make sure that each day you:
- Ensure you know which client each staff member is working on
- If they are not working on client work, they should be working for a manager or internal client
- Make sure that your team are booked into new work by sending calendar invites to staff, CC the client contact. This way staff know where to go and when, and also have a contact name they can reach out to with questions.
- Make any changes to existing client bookings as required.
Daily Scrum is an important part of operations, and making sure that your staff has participated in Daily Scrum activities helps to keep projects and team operations on track.
Daily Scrum meetings can be conducted in person or virtually (by email or tools like Microsoft Teams), and should be completed every day to make sure Product Owners are stakeholders are up to date on what is happening. See Do you do Daily Scrums (aka stand up meetings)?
- If you participate in any Daily Scrum meetings, ensure you are prepared to discuss your planned work, your prior period’s work, and any blockers you need help with.
- If you are the Scrum Master, ensure that you are responding to any team blockers or taking action on individual matters as they impact your Scrum team.
- If sending a Daily Scrum update by email or other virtual communication, ensure that it's done by noon. This allows your Scrum Master or Product Owner to be fully informed of what's going on in a timely manner.
- Ensure your staff sends their Daily Scrum to their Product Owners as per specifications. Make sure to check that all staff have participated in or submitted their Daily Scrum activities so that Product Owners are kept up-to-date. If staff is sending in Daily Scrum emails, consider sending them to a company Daily Scrum inbox where you can check quickly to see who has sent their Daily Scrum email.
- If your staff is sending a Daily Scrum email, ensure you use a consistent format from day to day to prevent any confusion.