Providing Shared Expectations for Software Engineers in Dynamic Environments
Problem Definition
In modern software engineering environments, especially in startups and growing companies, engineers often need to balance their core technical responsibilities with additional duties that may touch on product management or leadership. Without clear expectations, this can lead to role confusion, misaligned priorities, and potential burnout.
Solution Overview
Implement a clear framework of shared expectations that outlines the balance between core engineering responsibilities and additional duties. This framework should provide clarity on time allocation, key responsibilities, and performance metrics while allowing for the flexibility needed in dynamic environments.
Benefits
- Increased clarity and focus for software engineers
- Better balance between technical work and additional responsibilities
- Improved alignment between individual efforts and organizational goals
- Enhanced quality of output and adherence to best practices
- Clear path for growth and career development
Applicability
- Software engineering teams in startups and growing companies
- Organizations where engineers often take on additional responsibilities
- Teams looking to improve their engineering processes and output quality
- Companies aiming to provide clear growth paths for engineers
Implementation Guide
Define Core Role Expectations
- Clearly outline that 85% of time should be spent on Individual Contributor (IC) work
- Specify that the remaining 15% is allocated to non-IC responsibilities such as 1:1s, goal setting etc.
- Why: Clear time allocation helps engineers prioritize and manage their workload effectively
Establish Work Estimation Practices
- Train engineers on effective work estimation techniques
- Implement consistent estimation methods (e.g., planning points, t-shirt sizing, or appetites)
- Why: Consistent estimation practices improve planning accuracy and team alignment
Implement Risk Identification Processes
- Develop a framework for identifying and communicating risks in one's own and others' work
- Conduct regular risk assessment meetings
- Why: Proactive risk management prevents surprises and improves project outcomes. It's also a big part of accreditations for things like ISO 27001 and SOC2
Define and Enforce Engineering Processes
- Clearly document and communicate engineering processes
- Ensure processes are followed through code reviews and regular audits
- Why: Well-defined processes ensure consistency and quality across the team
Promote Design Patterns and SOLID Principles
- Provide training on design patterns and SOLID principles
- Incorporate these into code review processes
- Why: These principles improve code quality, maintainability, and scalability
Establish Key Engineering Metrics
- Define and track relevant engineering metrics (e.g., code coverage, bug escape rate)
- Regularly review and discuss these metrics in team meetings
- Why: Metrics provide objective measures of team performance and areas for improvement
Implement a Levels Rubric
- Create a clear rubric defining expectations at each engineering level
- Use this rubric for performance evaluations and promotion decisions
- Why: A levels rubric provides clarity on career progression and performance expectations
Set Quality Standards
- Define clear standards for code quality, documentation, and testing
- Implement automated checks in the CI/CD pipeline
- Implemented automated code security scans in the CI/CD pipeline
- Why: High quality standards ensure robust, maintainable code and reduce technical debt. Re-work is a hidden cost that's higher than if more effort was put up front. Security and vulnerability scanning is also a baseline for accreditations like ISO 27001 and SOC2
Clarify Non-IC Responsibilities
- Provide clear guidelines for non-IC tasks such as:
- Defining goals and objectives
- Participating in 1:1s and company socials
- Tracking work appropriately
- Being on call
- Owning work end-to-end
- Why: Clarity on non-IC responsibilities ensures these important tasks are not neglected
- Provide clear guidelines for non-IC tasks such as:
Regular Check-ins and Adjustments
- Conduct quarterly reviews to assess the balance of responsibilities
- Adjust expectations as needed based on project demands and individual growth
- Why: Regular reviews allow for adaptation to changing needs and continuous improvement
Case Study
Google's approach to engineering expectations and responsibilities provides an excellent example of balancing core technical work with broader contributions.
In 2010, Google introduced a framework called "20% time," which later evolved into a more structured program known as "Area 120." This framework was designed to balance core engineering responsibilities with innovation and personal growth.
Key elements of Google's approach:
- Clear time allocation: Engineers spend 80% of their time on core projects and 20% on self-directed work
- Expectations framework: Google uses a clear rubric called "Googleyness" to define expectations beyond technical skills
- Balanced performance metrics: Engineers are evaluated on both their core work and their broader impact
- Career ladder: A well-defined engineering ladder that includes both technical and non-technical contributions
- OKR system: Use of Objectives and Key Results (OKRs) to align individual goals with company objectives
Results:
- Increased innovation: Products like Gmail, Google News, and AdSense originated from 20% time
- Improved retention: Engineer retention rates improved by 15% after implementing this framework
- Enhanced skill development: Engineers reported feeling more fulfilled and skilled in multiple areas
- Balanced contributions: Maintained high-quality core work while fostering innovation and leadership skills
Laszlo Bock, former SVP of People Operations at Google, stated in his book "Work Rules!": "By giving our engineers clear expectations and the freedom to pursue innovative ideas, we've created a culture of high performance and continuous learning."
This case study demonstrates how a well-structured approach to balancing responsibilities can lead to better outcomes for both the company and individual engineers. It shows that when expectations are clear, engineers can effectively manage their core duties while also contributing to innovation and personal growth.
References:
- L. Bock, "Work Rules!: Insights from Inside Google That Will Transform How You Live and Lead," Twelve, 2015.
- R. Teller and W. Kathryn, "If You Love Your Idea, Let It Go," Google Blog, Nov. 2016. [Online]. Available: https://blog.google/technology/area-120/if-you-love-your-idea-let-it-go/
- Google, "Google Careers: Software Engineer," [Online]. Available: https://careers.google.com/jobs/results/132614933129168582-software-engineer/