Google is a prime example of a company that has mastered countless software development practices. In the IEEE newsletter, Google recently outlined their practices for setting developer goals – but what makes their approach to goal-setting so effective, and how can you apply these principles to your team? In this article, we’ll explore Google's methodology, showcasing their insights from recent research, and provide actionable recommendations on setting practical goals for your developers.
The Essence of Durable Goals
At the core of Google’s process is the concept of durable goals. Google defines durable goals as goals that stand the test of time because goals should remain relevant and motivating even as projects evolve, challenges arise, and priorities shift. They should focus on hitting milestones and fostering continuous growth and improvement. A key aspect of durable goals is alignment with long-term business objectives and flexibility to adapt to changing circumstances.
According to Google, durable goals provide a clear direction without stifling innovation so teams can navigate the complexities of software development with agility. This approach is necessary in a field where the only constant is change.
Goal-Setting at Google
To define their list of goals, Google started with a group of subject matter experts who defined a list of goals and priorities across each phase of the software development lifecycle. They then compared this list to historical data from past engineering satisfaction surveys and refined it through a series of sessions with developer teams to refine them further. This led to goals that are durable, relatable, and mappable to observable behaviors in pursuit of improving developer productivity and experience.
- Specificity and measurability: Goals must be clear and quantifiable so teams understand the expectations and how success is measured. Starting with a durable goal to improve code quality enables developers to set specific goals related to it. For example, reducing the number of code defects by 20% in the next quarter.
- Ambitious yet achievable: Goals should stretch the team’s capabilities but remain achievable. This balance prevents burnout while fostering a culture of excellence.
- Alignment with organizational objectives: Every goal must relate to broader company objectives. This alignment guarantees that each team is driving the organization forward in a unified direction. Google's goals are often tied directly to its mission of organizing the world’s information, making it universally accessible and helpful for its users.
- Focus on outcomes, not activities: Effective goals are comprehensive to outcomes. Google emphasizes things like better collaboration, improved documentation, and better code quality rather than individual activities. This approach encourages creative problem-solving and innovation.
Practical Recommendations for Setting Effective Developer Goals
Based on Google's approach and insights from their research article, here are practical recommendations on how you can set effective goals for your developer team:
- Incorporate OKRs: Implement an OKR framework to allow for precise progress tracking, while encouraging teams to aim high.
- Leverage data for goal setting: Use data-driven insights to set goals. Platforms like LinearB can help you track key DevEx metrics, which are essential for measuring the impact of your goals on developer productivity and software delivery performance. For example, you should monitor DORA metrics such as deployment frequency or lead time for changes can provide valuable data points for setting and adjusting team goals.
- Create goals that foster growth: Focus on goals that drive immediate performance and contribute to the long-term professional growth of your team members. Setting goals around learning new technologies or improving code review practices can enhance your team's skills and foster a culture of continuous improvement.
- Promote cross-functional collaboration: Encourage goals that require collaboration across different teams or departments. This can lead to more innovative solutions and more robust team unity. Google attributes a lot of its success to its collaborative culture, where cross-functional goals are pivotal.
- Regularly review and adjust goals: Periodically review and adjust goals when needed to remain relevant and achievable. Doing so helps drive momentum and avoid goal fatigue.
Applying These Principles to Your Organization
Implementing durable and effective goals in your organization is more than just setting targets. It involves strategically aligning these goals with your team’s capabilities, your organization’s objectives, and the broader industry context. Here’s how you can apply the principles outlined above:
Customize OKRs for Your Teams
OKRs are powerful, but they need to be tailored to fit your team. Start with clear objectives aligning your company’s strategic goals and your team's specific strengths and challenges. If your organization is focused on scaling products, an objective could be to "Enhance the scalability of the core platform." Your key results could include "Reduce system latency by 15%" or "Increase the number of concurrent users supported by 20%."
For your OKRs to resonate with your team, you need to involve them in the goal-setting process early. This both increases buy-in, and also helps uncover potential roadblocks or opportunities that you might not have considered yet. According to the Engineering Leader’s Guide to Goals and Reporting, involving team members in goal-setting fosters a sense of ownership and accountability, which is crucial for successfully executing these goals.
Utilize Data for Continuous Improvement
Leveraging data is essential for setting, monitoring, and refining goals. Software Engineering Intelligence platforms offer advanced analytics and reporting tools that provide real-time insights into team performance. These tools can help you identify patterns, such as bottlenecks in the development process or areas where team members excel.
For instance, if your data indicates that code review times are consistently high, you might set a goal to "Reduce PR review time by 25% within the next quarter." Implementing this goal could involve introducing workflow automations like gitStream to route reviews more efficiently or providing additional context to quickly unblock reviews.
Balance Short-Term Wins with Long-Term Growth
While setting goals that drive immediate results is important, don’t lose sight of long-term team development. Goals focusing on skill acquisition, leadership development, or process improvement can pay dividends in the long run. For example, setting a goal for your team to adopt a new technology stack might not yield immediate productivity gains. Still, it can position your team for future success as industry trends evolve.
Google’s research highlights this balance, stating that effective goal-setting in software engineering is not just about meeting deadlines but about fostering an environment where continuous learning and innovation are prioritized. This philosophy aligns well with the broader industry trend of sustainable engineering practices.
Facilitate Team Collaboration and Communication
Cross-functional goals that require collaboration between teams or departments break down silos and promote a more integrated approach to problem-solving. However, they require an emphasis of clear communication channels, and each team must understand their role in achieving the shared objective.
For example, a durable goal to improve cross-functional collaboration would impact a project to improve an integration with a third-party service. This might involve collaboration between the development, quality assurance, and customer support teams, and cross-functional goals can lead to more robust solutions and greater cohesion within the organization. Team working agreements can be instrumental in setting expectations and facilitating smooth collaboration.
Embrace Flexibility and Adaptability
The best goals are those you can adapt when necessary. Regularly review the progress towards your goals and be willing to adjust them when needed. Whether you need to shift your deadlines, alter key results, or even rethink the objective entirely, flexibility is how you can ensure goals remain relevant and the team stays motivated.
Google’s approach to goal-setting emphasizes this adaptability, allowing teams to pivot when necessary without losing sight of the broader mission. This approach is critical in software engineering, where unexpected challenges and rapid changes are the norm.
Conclusion
Setting practical goals for your developer team is a multifaceted challenge. You need to carefully consider both immediate needs and long-term objectives. Adopting strategies used by industry leaders like Google in tandem with tools and insights from platforms like LinearB, you can create goals that drive performance, inspire innovation, foster collaboration, and promote continuous growth.
The ultimate goal of goal-setting is not only to achieve targets but to create an environment where your team can thrive and drive the broader success of the organization. For more detailed guidance on modern practices for goal-setting in software engineering, consider reading the Engineering Leader’s Guide to Goals and Reporting.
By thoughtfully applying these principles, you can set your team on a path to sustained success and ensure that your goals are not just met but exceeded.