@jgallimore I go through cycles. Right now Iโm in a big cycle. Iโm reading/listening to several concurrent books. I listen in the car, on walks, at the grocery store, etcโฆI sneak it in.
Today's the release day for Wiring the Winning Organization! Kudos to @RealGeneKim and the team at @ITRevBooks for another incredible book. I was fortunate to get an early preview the last few weeks. I've put an initial review on my Substack. Enjoy!
https://t.co/enX03sJFpB
The Product Operations book is finally available for purchase on Amazon! @dtilles and I have been working on this baby for over two years. You can purchase now on Amazon (kindle will download on Thurs!) /1
https://t.co/dcDnvimpEa
#productops
๐๐ฒ๐ณ๐ถ๐ป๐ถ๐ป๐ด, ๐ ๐ฒ๐ฎ๐๐๐ฟ๐ถ๐ป๐ด, ๐ฎ๐ป๐ฑ ๐ ๐ฎ๐ป๐ฎ๐ด๐ถ๐ป๐ด ๐ง๐ฒ๐ฐ๐ต๐ป๐ถ๐ฐ๐ฎ๐น ๐๐ฒ๐ฏ๐ ๐ฏ๐ ๐๐ผ๐ผ๐ด๐น๐ฒ
In the latest paper by Google Engineers, they researched how to define, measure and manage Technical Debt. They use quarterly engineering satisfaction surveys to analyze the results.
๐ญ. ๐๐ฒ๐ณ๐ถ๐ป๐ถ๐๐ถ๐ผ๐ป ๐ผ๐ณ ๐ง๐ฒ๐ฐ๐ต๐ป๐ถ๐ฐ๐ฎ๐น ๐๐ฒ๐ฏ๐
Google took an empirical approach to defining technical debt. They asked engineers about the types of technical debt they encountered and what mitigations would be appropriate to fix this debt. This resulted in a collectively exhaustive and mutually exclusive list of 10 categories of technical debt, including:
๐น Migration is needed or in progress: This may be motivated by the need for code or systems to be updated, migrated, or maintained.
๐น Code degradation: The codebase has degraded or not kept up with changing standards over time. The code may be in maintenance mode, needing updates or migrations.
๐น Documentation on project and application programming interfaces (APIs): Information on how your project works is hard to find, missing, or incomplete.
๐น Testing: Poor test quality or coverage, such as missing tests or poor test data, results in fragility and flaky tests.
๐น Code quality: Product architecture or project code must be better designed. It may have been rushed or a prototype/demo.
๐น Dead and abandoned code: Code/features/projects were replaced or superseded but still need removal.
๐น Team needs more expertise: This may be due to staffing gaps, turnover, or inherited orphaned code/projects.
๐น Dependencies: Dependencies are unstable, rapidly changing, or trigger rollbacks.
๐น Migration could have been better executed or abandoned: This may have resulted in maintaining two versions.
๐น Release process: The rollout and monitoring of production need to be updated, migrated, or maintained.
๐ฎ. ๐ ๐ฒ๐ฎ๐๐๐ฟ๐ถ๐ป๐ด ๐ง๐ฒ๐ฐ๐ต๐ป๐ถ๐ฐ๐ฎ๐น ๐๐ฒ๐ฏ๐
Google measures technical debt through a quarterly engineering survey. They ask engineers about which of these categories of technical debt have hindered their work. The responses to these surveys help Google identify teams that struggle with managing different types of technical debt. E.g., they found that engineers working on machine learning systems face different types of technical debt compared to engineers who build and maintain back-end services.
They focused on code degradation, teams needing more expertise, and migrations being required or in progress. Then, they explored 117 metrics proposed as indicators of one of these forms of technical debtโthe results were that no single metric predicted reports of technical debt from engineers.
๐ฏ. ๐ ๐ฎ๐ป๐ฎ๐ด๐ถ๐ป๐ด ๐ง๐ฒ๐ฐ๐ต๐ป๐ถ๐ฐ๐ฎ๐น ๐๐ฒ๐ฏ๐
Over the last four years, Google has made a concerted effort to define better, measure, and manage technical debt. Some of the steps taken include:
๐ธ Creating a technical debt management framework to help teams establish good practices
๐ธ Creating a technical debt management maturity model and accompanying technical debt maturity assessment that
evaluates and characterizes an organization's technical debt management process
๐ธ Organizing classroom instruction and self-guided courses to evangelize best practices and community forums to drive continual engagement and sharing of resources.
๐ธ Tooling that supports the identification and management of technical debt (for example, indicators of poor test coverage, stale documentation, and deprecated dependencies)
It's important to note that zero technical debt is not the goal at Google. The presence of deliberate, prudent technical debt reflects the practicality of developing systems in the real world. The key is to manage it thoughtfully and responsibly.
Check the full link in the comments.
_______
If you like my posts, please follow me, @milan_milanovic, and hit the ๐ on my profile to get a notification for all my new posts.
Grow with me ๐!
#technology #softwareengineering #programming #techworldwithmilan #development
Two week observation in the new roleโฆitโs worth taking the time to celebrate and recognize when folks go above the call of duty to help you and your team.