In short
Dev Interrupted Podcast Episode Notes
Episode Title
Labs: The Magic of Compound Efficiencies in Engineering
Episode Description This episode explores the concept of compound efficiencies in software engineering, akin to the principles discussed in James Clear's book *Atomic Habits*. By layering efficiencies, development teams can significantly enhance their productivity and deliverables. Yishai Beeri, CTO of LinearB, shares insights drawn from real-world data on how these efficiencies manifest within dev teams.
---
Key Themes and Discussions
Compounding Efficiencies
- Concept Overview:
- Just as in habit formation, adopting one efficiency leads to the potential for others to build upon it, resulting in greater overall efficiency.
- Example cited: Dev teams have achieved a 60% reduction in cycle time after implementing multiple efficiencies.
Importance of Awareness and Visibility
- Awareness for Developers:
- Developers need day-to-day awareness of productivity metrics, not just managers.
- Example: If VPs identify inefficiencies but developers are unaware, attempts to rectify issues will struggle.
- Types of Metrics:
- DORA metrics: Focus on process rather than individual performance.
- SPACE metrics: Another framework gaining traction, focusing on process improvement.
Effective Measurement Strategies
- It's crucial to measure the right things to promote improvement:
- Avoid measuring trivial metrics (e.g., lines of code).
- Focus on process metrics that highlight where bottlenecks are occurring.
- PR (Pull Request) Sizes:
- Smaller PRs lead to quicker reviews and faster cycle times.
- Example: Reducing PR size from 200 to 100 lines can significantly decrease overall cycle time.
Enhancing the PR Process
- Bottlenecks:
- The PR process is identified as a major contributor to cycle time due to human dependencies.
- Developers can waste time waiting for reviews, which leads to costly context switches.
- Technological Solutions:
- Tools like LinearB and GitStream can help automate and streamline PR processes.
- Enhanced visibility into PR status and context helps reviewers assess and prioritize effectively.
- Automating Context:
- Providing context for PRs, such as estimated review time and urgency, helps reviewers prioritize tasks.
Focus Time for Developers
- The Need for Uninterrupted Time:
- Developers should be afforded blocks of uninterrupted time to focus on coding.
- Fragmented calendars and excessive meetings erode this focus.
- Best Practices:
- Aggregate meetings to create larger blocks of uninterrupted time for coding.
- Managers must be proactive in protecting developers' focus time.
Implementing Compound Efficiencies
- Start with Visibility:
- Leverage metrics to identify problems and opportunities for improvement.
- Introduce Micro-Automations:
- Use tools to reduce manual processes and improve workflows.
- Programmable Workflows:
- Implement systems like GitStream to automate parts of the PR process based on specific requirements.
- Continuous Improvement:
- Measure the impact of changes and iterate on processes to drive further efficiencies.
---
Key Takeaways
- Compound efficiencies can drastically improve software development productivity.
- Awareness of metrics is essential for both developers and management.
- Smaller PRs enhance review speed and reduce cycle time significantly.
- Uninterrupted focus time is critical for developers to maximize productivity.
- Automation of PR processes can alleviate common bottlenecks and improve developer experience.
---
Additional Resources
- LinearB Resources:
- [Engineering Benchmarks Report](https://linearb.io/engineering-benchmarks/?utm_source=DI-Podcast&utm_medium=Native-Ad&utm_campaign=DI-podcast-NativeAd-EngineeringBenchmarks)
- [GitStream](https://linearb.io/start-free-trial?utm_source=podcast&utm_medium=referral&utm_campaign=devint-shownotes&utm_content=shownotes) - Automation for PR processes.
---
Conclusion The insights shared in this episode underscore the importance of integrating efficiencies into the software development lifecycle. By fostering a culture of awareness, utilizing effective measurement tools, and embracing automation, teams can fundamentally transform their productivity and output.
Written by AI. May contain mistakes. Listen to the episode to check what was said.
Transcript
Automatic transcript. May contain errors.0:00But day to day, if you're not in the loop, and you're not the one that has the ongoing awareness, that's not going to work. And with developers, it's the same. If the VP or a senior manager is looking at reports and looking at metrics saying there are inefficiencies, the problem is here, they could try to move the needle by saying, hey, let's fix this. That's a long process. And if the developers are not aware day-to-day of the same problem in a way that they can also react to, that's not going to work. Have you ever wondered how your dev team ranks in terms of productivity, speed, and business impact?
0:36With Linear B's new engineering benchmarks report, you can find out. The product of comprehensively analyzing the work of almost 2 ,000 dev teams to close to 1 million branches, it's the first ever look at what performance metrics make engineering orgs elite, average, or underperforming. Best of all, if you want your dev team's number to go from average to elite on any of the benchmarks, the report also provides concrete guidance on the behaviors, tools, and processes you need to get there. To explore the report in full, Visit LinearB.io slash benchmarks or click the link in the show notes of this episode.
1:10Welcome to another Labs episode of Dev Interrupted. In these episodes, we dive into the most impactful research and insights about engineering, and most importantly, how to apply them to your organization. I'm your host, Conor Bronston, and today's topic is one the data team at LinearB has a unique authority to speak on. Because they've spent all of their time providing visibility into the development workflow process, they've unearthed parts of the software development pipeline that seem to be taking way too long, and they've experimented with tools and ideas that have helped dev teams program workflows and make these problem areas more efficient.
1:44In this episode, we're going to be talking about what these efficiencies are and the compounding effect they can have on your entire organization when you implement them together. For example, we'll be discussing a way dev teams have cut cycle time by 60%, but only after they implemented another efficiency that previously cut cycle time almost 47%. In short, this episode is all about the power of compounding efficiencies and engineering. For those of you who've read Atomic Habits, you may be familiar with the concept building these habits within teams or your personal life to compound efficiencies.
2:19And we're going to run through these efficiencies so that you can layer them on top of one another to completely change the way your organization works and improve productivity. So walk me through the places we found room for improvements in dev pipelines, ways to create efficiencies, and their overall impact. I've got LinearBees CTO, Yashai Berry with me. Yashai, welcome to the show. Hey, it's great to be here. It's great to have you back. I really enjoyed our last episode we did together around the best programming languages for dev workflow. I'd love to start by diving into where all this research comes from.
2:53Yashai, can you tell us a bit about where all the information that we're to talk about today with Source from? Sure. So yeah, in Linerby, we're fortunate to have access to the workflows and the data coming from thousands of dev teams on our free offering, on our paid offerings. And we have a unique window into understanding what's happening in the PR process, what's happening throughout the development process, where the bottlenecks are. So yeah, we can see millions of PRs, thousands or tens of thousands of developers and thousands of teams, a lot of data that helps us understand how this looks in smaller teams, large orgs, different behaviors, like you mentioned, programming languages.
3:33So a wealth of data in my data team is spending its time picking through that to surface insights about the things we care about. This is about how to improve the developer experience and how to improve productivity by removing those bottlenecks. And there's a great analogy for how you're improving the efficiency for dev teams and something we can all understand, food. If you ask a nutritionist what is most effective as a diet for losing weight, they might tell you that all diets are effective in helping you lose weight because they give you the visibility into what you're eating. They make you think about it and how much you should be eating.
4:10By being conscious of what you're eating and knowing the right amount of food to consume for your activity level, you'll start to move towards your natural balance and you'll see those opportunities for improvement. And I know you've said that this can apply to engineering as well. Can you tell me a bit more about that? A lot of the change that we want to create, and this could be about our personal lives or about the death process, a lot of it is down to human behavior. So changing human behavior is about changing habits. You mentioned the food analogy, like being aware of what I'm eating or not eating, that's a behavior change.
4:45Not like just the awareness, just being not eating automatically, emotionally, whatever. There are tons of reasons why being aware helps me control and helps me improve my behavior. The same thing happens with development and dev teams and their processes. By being aware of the productivity, the inefficiencies, the bottlenecks, by talking about them, by measuring them, by surfacing them, by making them important. And part of what we are striving to improve, that alone starts to move the needle. because if my focus is only on writing the code and I'm not aware of those inefficiencies, those wait times, those idle times, then I may be able to create a great code, but at a level of efficiency that is not optimal.
5:33If I'm starting to think about and live the pain and give it a name, give it a number, like the contact switches, everything that is blocking the team from moving faster, now I can begin to focus and change behaviors around. So awareness is the first level, the first layer of behavior change, and that begins to move the needle. And is this awareness and visibility component mostly crucial for leaders within the org, or do you see it as something that should cascade throughout the org so that every dev has access to? So if you compare this to food, if your nutritionist or consultant consultant had, like, is aware of what you're eating, but you are not, that would probably not move the needle, right?
6:20If you meet every three weeks and look together at a report, then they may have insights and they may say, oh, you're eating too much of that or too, like, you need to change. But day to day, if you're not in the loop and you're not the one that has the ongoing awareness, that's not going to work. And with developers, it's the same. If the VP or a senior manager is looking at reports and looking at metrics saying there are inefficiencies, the problem is here, they could try to move the needle by saying, hey, let's fix this. That's a long process. And if the developers are not aware day to day of the same problem in a way that they can also react to, that's not going to work.
7:03And we've seen that with dev orgs that are focusing just on visibility. Show me the metrics. I'm going to visit the dashboard every three weeks, every month, I'm going to do a retro with my teams. That's nice. That's not enough. That's not really changing the behaviors. So how do you think teams should go about implementing this initial layer of visibility for both leaders and individuals so that they have the right amounts of information? Because I think the concern you're hearing me kind of allude to is, okay, I know most devs do want to know what they're eating, so to speak, and the different impacts that their decisions are having on the broader organization, but also their focus is typically on delivering their project.
7:46It's not necessarily looking elsewhere. How can you start setting up this program so that everyone is getting the visibility they need? So I think it begins with understanding what to measure and what metrics are going to be conductive to improvement, to the culture, and so on. This can go wrong if you're measuring the wrong things. If you're, I don't know, if you're counting lines of code, and we've all seen those public examples, that can go wrong in so many ways. So begin by understanding what to measure. What are the metrics you should be focusing on, which really represent the problem you're trying to solve?
8:18Dora metrics is a good example, a well-known example in our space of a set of metrics that our team focus. They're focused on the process, not on individuals, and are a good place to start. So we have Dora. There is another set of metrics called space, which is also becoming popular. But the key is to measure the process, not people. You're not measuring or stack ranking developers. You're looking at where the process is broken or can be improved. You're measuring and helping the teams. And I think the final step here, and this is where I mentioned, not just a manager looking at metrics, you want to use metrics that also lend to an immediate response.
9:02Something I can do right now to fix a micro change in my behavior that changes those metrics or that problem in a small way for a single pull request or a single piece of work, instead of looking at the metrics and saying, I had a problem last month. So this would be something like breaking PRs down into smaller chunks to enable easier review and cut down on context switch. Right. That's a great example. Small PRs are like a leading indicator. of good Dorometrics and good short cycle times, quick time to delivery. So by measuring the leading indicators, things that you can actually start changing to change the picture, you get a chance of doing a little better next time or a little better in this PR.
9:52If I'm aware that PR size matters, if I'm aware of what is the size of the PRs that I'm creating and the team is creating, and we also talk about what is the desired state. We can set a goal or decide that we want to have our PRs typically lower than, I don't know, 100 lines of code, 200 lines of code, whatever. Now my awareness as a developer of the importance of breaking down PRs is not just a theoretical thing I learned in school or had the manager tell me, this is a live thing. And if I can now, when I'm working on this new item, new bug fix, new ticket, and I've broken down this to two PRs, which are independent and smaller, I've started fixing the problem.
10:35So this is a good metric that lends to immediate behavior change. And in small amounts, this single PR that I broke down into two is not going to change the overall metric for the team over a month, that alone. But every dev doing this every day. Every dev doing this for even some of their PRs and starting to shave off the PRs to become smaller, that is the behavior change. Now, it's not just for the metric. The metric having that number on the wall, if you like, helps move that behavior. But the real reason why the developers will stick to that new behavior is because they see the benefits. Those smaller PRs get reviewed much faster.
11:19They get merged faster. They create less risk in the code base. so I don't have to roll back or fix a bad release. All these things are things that developers feel in their gut. Having the number on one side, having awareness that is important, but also seeing the immediate impact of my small changes. Oh, it's so much fun. My PR got reviewed like this. I'm going to do more of that. That behavior change will now persist. And it's no longer dependent on the metric. So great. Let's put metrics into place. Let's get visibility for both. you know, leadership, but also the entire team, that has a certain impact.
11:57But now it becomes time to say, okay, how do we apply that visibility and knowledge into your actual software development pipeline? And it sounds like code reviews, something we've talked about quite about in the show, is the key area where you think teams can make an impact based on your research. Yes. So first of all, while there are some alternative methods of collaborating as a team to create value through software. There's trunk-based development and other modes. The vast majority of the industry uses pull requests. That has become a standard, carries a lot of benefits. And almost everyone uses PRs or MRs as a way to manage how the team collaborates on creating new code.
12:41Given that, we now have a stage in the development process that is very human-centric and relies on like asynchronous interaction between people. I put up a PR. I asked some people to take a look. They need to know that I'm waiting for them. They need to find time. They're reviewing, giving me some async comments. Back and forth, eventually we'll get to a place where the PR is ready to merge. This is a very different dynamic than the rest of the pipeline. Like when I'm coding for a new PR, typically it's one person or collaboration on, But typically it's just me with a problem with the code. I may have some interaction with the requirements and the product side of things to understand what I need to do.
13:24But it's more like this is creator time. I need to be in the zone. I need to be uninterrupted to be very productive there. But I'm not dependent on other people in a material way. After the PR is merged, typically this is now machine time. There are going to be automatic tests. Sometimes there's a manual testing, a QA process that happens before or after merge. But in many ways, what happens after merge is already automated or semi-automated. And it's, again, less dependent on frequent interaction between humans to get to an agreement. So the PR process, from my suggestion to add to the code dates all the way until it's approved and merged, has a different timescale.
14:10It dominates the time it takes to create value because it is human dependent. We humans do not respond in seconds in our jobs. Like reviewing a PR takes time. It's not a 30 second run of a CI job. It's where dependencies start to come into the process. Yes. And there are dependencies of humans rather than machine or code or automations. So those two specific behaviors cause the PR process to be very important. And if we are spending time there, we are waiting for the review or the response for a review. We are now creating contact switches which are expensive and painful for the developers. I have to respond to comments on a pull request I finished three days ago.
14:56I've already moved on. I'm working on the next thing. I have to reset my brain to what I was doing before and what this review means. And this back and forth can take a while. So that is why the PR process is a very lucrative place to find and remove dependencies in bottlenecks. And also those kinds of improvements really help the developer experience. Everyone wants to get their job done to push value, to fix the bug and move on. and if I have to wait for someone else to review my stuff and eventually to convince them that it's okay and we can merge, that is holding me back. And typically developers like to be in teams that respond fast, that help each other quickly, get things done, small steps through small PRs.
15:45That all creates a feeling of achievement that is ongoing. Yeah, the statistics I'm seeing here in your research are fascinating. I mean, the average cycle time across BNRB's research is a full seven days, but half of that is spent in the PR lifespan. So there's clearly this huge stumbling block here, even though when we break it down, cycle time, in fact, will go down significantly if you cut a PR from, to your point, like 200 lines of code to 100 lines of code. And conversely, it'll double when going the other direction. So I guess my question is, if we know there are these sticking points, this is like a problematic area for dev production, what benefits do you get simply from adding visibility so that teams are aware of this?
16:32Yeah, so if we identify that this is a key area of the process that has a lot of inefficiencies and creates friction, then you want the metrics and your visibility to focus on that. It's not the only thing to measure, but cycle time, one of the important metrics, a good place to start if you're not measuring anything, really gives you visibility into how long does it take me as a team to move value from beginning of coding a new piece of value or fix or whatever, all the way until it's in production. And a large part of that is going to be the PR process. Typically, you want to break cycle time down to its different segments or behaviors, because when I'm coding, the behaviors and the bottlenecks are different than when I'm doing the PR process, waiting for a review, waiting for someone to even take a look.
17:18And eventually when the PR is merged, there is like deployment time, which is, could be automated, could wait on external signals, could be another team's problem. So because of the dynamics inside CycleDimerDifference, you want to segment them out and have different measurements for each part of this, each phase of the process. So measuring that area and getting some detail on the different steps and behaviors is crucial. As I mentioned, also adding some of the leading indicators and PR size is a great leading indicator. We've seen, like you mentioned, smaller PRs will get reviewed faster, will get merged faster, will be deployed faster and safer.
17:56The data is very strong around, as you mentioned, like going from a hundred lines of code to 200 lines of code typically tends to double the cycle time. 200 lines is still pretty small as an average is a great place to be. Moving up the PR size makes everything slow down. So because we know it's such a important leading indicator, let's measure that and let's start behaving, start changing the behavior around that, not just around the final cycle time metrics, which are the result. So that is a good example of measure the important thing, which is the cycle time, and then add measurements of what is going to predict and impact cycle time, like the PR size.
18:39and giving the developers visibility ongoing on the PR side, not just a total retro kind of view. Do I have a problem with my current PR? Is it waiting too long? Is it too large? Is it within the boundaries of what the team wants to have as its best behavior? That allows me as a developer to start shifting my behavior. So a nation of metrics that measure the right problem and ongoing awareness and ability to respond to those metrics, not just to retrospect you. So that first level of visibility where you can break down your cycle time into segments, understand your metrics, and start to respond as a team or as an individual.
19:23When someone does that with Linear B and starts to manage their software development life cycle in that way, what is that first compounding efficiency impact? What do you see in the numbers when people do that? Right. So what we see is that you should be expecting a very sizable change and a very noticeable change in the size of PRs in cycle time. And it's parts like how long does it take to pick up or review a PR? I'm talking about 30, 40, 50 % improvement over across a quarter, maybe four months of using letter B or a similar system to measure. and if the context is provided, like I said, to developers ongoing, not just a retrospect, then we see across the board, cycle time gets slashed by a half.
20:13That's a very typical and very immediate improvement that you see. A lot of that comes from the PR size. Like PR sizes go down by a third and that causes a lot of the improvement because again, smaller PRs get picked up faster. But also awareness to the other, to the actual cycle time and it's segments. If I'm looking at pickup time, which is how we define how long does it take a reviewer to begin reviewing a PR that's waiting for them? This is all about communication, all about how do I let them know that they need to review a PR? Getting the email from GitHub is not good enough. No one sees that.
20:51We used to be able to shout to each other in the room, hey, I just have a new PR. Can I take a look? Or Slack each other. But these are all manual, broken methods. So having some automation, having some solution around the communication between people to help people know that something's waiting for them, that creates stuff like, you know, you can slash pickup time by half. A very difficult case where I can get responses to my PRs very quickly. And if they're small, even more quickly. And that really creates those double digit, 30, 40, 50 % improvements across the board. So as you move from non-formal processes and begin to streamline them for pull requests, things like assigning reviewers, standardizing PR size, like you mentioned, maybe adding context through tooling, how can you attempt to resolve these issues in the PR process?
21:48So yeah, you mentioned tooling, I think, and context is key. So we talked about the metrics and understanding why the behavior change is needed. But additional things like context, I'm going to give some examples, are also crucial to start moving faster. We analyzed some data and we talked with customers and we understood that people that are now reviewing a PR, people that are basically getting pulled in from what they're doing to help you get your job done, besides sometimes being interrupted and sometimes having overload of reviews, on the surface, all of these review requests look the same.
22:28Like someone needs a review. Okay, what is this? Is it urgent? Is it a bug fix, like an urgent bug fix for production? Is it a new feature? How long is it going to take me? Is this a big thing? Is this a small effort? Can I do this in the five minutes I have left before a meeting? or do I need to set aside an hour to do this? Many, many context pieces that are typically not available. You just get the link or an email to a PR. You have to go into it and start looking to understand what's going on. You open the PR, you get this big wall of red and green and you say, oh, I don't have time for this.
23:06This is complex. The more context you're able to push as a developer towards your reviewer, the more upfront work you can save them, the discovery work and the orientation work. So great PRs also describe what they're doing in terms of the code. If you as a developer can spend some time to add context, that will get you a better review and it'll get it faster because the reviewer can make an intelligent choice about when to do it. And am I the right person to do it? And the more context, the better their process will be. So some of that is on the developer to improve how the PR looks and how the PR describes itself.
23:45But also there's tooling that can help you with some of that context. Surface information about the JIRA ticket this is assigned to or related with. Is this a bug? Is this a story? Is this a P0? Tell me how long it's going to take me to review. So we have implemented a machine learning model for estimated review time. And we can tell you when a reviewer gets a request to review a PR, this is going to take you two minutes. This is going to take you 30 minutes. okay now I can make based on the area of the code base and the number lines of code or what inputs yeah it's based on like a multitude of features or parameters like which files what types of files the size of the change area of the code base who is who is the the reviewer and who is the the coder and again we have a great data set to train this with and we see the reviewers respond to those cues and to those that additional context and change their behavior so now when they know this is a small PR and it's a quick win or like this is going to take me two, three minutes, they jump on it quickly.
24:48And when they see this is going to take me 30 minutes or an hour, they allocate time, they schedule this for later. So they can now manage their contact switches better. And this means they respond faster, overall faster, faster for the small PRs for the easy wins. And instead of, oh, everything looks the same, I have to guess or spend my time taking a look and stepping back. So context is very, very important. And it's part of solving the human communication problem, which is inherent to the PR process. So it's about letting people know and about letting them have enough context so they can make a smart decision.
25:29So once teams have this visibility into their metrics, and maybe they've benchmarked it against industry standards with some of the research you've done, and they go into the PR process and they start to fix things. They go, hey, maybe we need to move from 250 lines of code to 150 or 200 to 100 and provide some context with tooling, programmable workflows like GitStream, which I know you have your team experimenting with a lot. What are the effects that you're seeing once those efficiencies are being introduced into the code review process on top of the visibility work that's already been done?
26:01We can talk about three layers. There's the visibility and awareness. Then there's micro-automations of the human process. In Liner B, this lives inside our Worker B. SmartBot lives in Slack and Teams. And this is about nudges for delayed PRs. This is about the additional context that I mentioned, like estimate review time. it's about letting the reviewer know that they have some work to do and letting the coder know that the review is waiting for them to respond to all of these micro-optimizations move you from the 30 % improvement to the 50 % or 60 % improvement that's I would say the first line visibility and some automations the second line you mentioned get streamed that's going even deeper into automation and this is about not just the human interaction problem, but it goes deeper into understanding my process for doing PRs and for like approving code.
27:02Today is pretty uniform. Almost all companies have a policy. If someone has to review like four eyes and we're good. This is very typical. Everything needs to get a review. It doesn't matter what kind of review, as long as it's approved by someone with authority. We're done. Some companies or some orgs with higher regulation or requirements have a blanket policy of I need two reviewers, six eyes. But typically the process is very rigid, very uniform, and cannot take into account the differences between a PR that changes the line in the documentation or replaces an image for a website from a PR that changes a logic, like code logic or touches sensitive areas, changes an API, handles tokens, whatever.
27:49And a lot of that artificial uniformity in the PRs is because of lack of tooling. There's no easy way to make those distinctions and to codify what's the required behavior across different types of code changes. So teams just default to a very blanket approach. And that is not efficient. So GitStream, this is our way of codifying a process and starting to tease apart what actually should be done. What is our desired process as a team or as an org for getting some code approved? And now you can automate things like deciding whether this needs one review or two reviewers, maybe pull in a security expert for this PR because it touches relevant areas in the code or relevant.
Read the full transcript
28:37The change is such that you need a security expert to approve this. But being able to do that only on the 5 % of PRs, which really need it, instead of having a blanket policy saying security has to approve everything is a huge gain. If your default policy is having two reviewers for every piece of code, but you can extract some of your load, maybe 20 % of your PRs that can live with just one reviewer because they're simple. There are only changes in static files or other, you know, you can carve out whatever you need. You've now gained a huge improvement. You're not, you're just not doing work that you've done before, which is not really needed.
29:16So the review burden is much smaller for the reviewers. Their precious time is spent on where it really is needed and it matters. And those kinds of automations and codifications of a smart process now can really push the needle, you know, again, in double digit numbers. So with our research, what we've seen is when Gistrim is employed and doing automations on PRs, we are seeing another 50 or 60 % reduction in cycle time. So these programmable workflows are enabling this next layer of saying, okay, we've got visibility, we've got benchmarks maybe of what success looks like. We can gain 47 % improvement in cycle time, and now we're going to do it again, get 50, 60 % improvement once again by helping ensure that every PR is being treated differently the way it should be instead of being treated with a uniform process.
30:12Right. And the nice thing about this automation is that you can begin, you can slow roll this by, let's add some visibility. Let's start to add labels on PRs. This is a PR that could be approved without a review, could be automatically approved. That's a label. And the team can now simulate the rules that they would have. If I'm saying documentation changes do not need a reviewer, I can start by just adding a label saying, this could be automatically approved. Once the team is confident, they can now turn on an automation switch and say, now it's actually automatically approved. Or look at the flip side.
30:57We have teams that are using this to say, if your PR is using a deprecated API, automatically reject the PR with a comment. So this is like an automated reviewer doing the obvious thing instead of a human doing, hey, don't use this separate API. So you have now saved some time. You've saved a review process. You haven't risked anything because you're not even automating. You're not letting the machine decide what to accept, but you've removed work. And so you can start by more visibility, labels, pulling in reviewers to the PR. Selecting the right reviewer becomes a problem with larger organizations.
31:38It's not always clear who should be reviewing my PR. People onboarding new people in the codebase, hey, I don't really know who to pull in. And GitHub code owners is very rigid. It's hard to maintain. it doesn't really give me the flexibility of knowing who is the right person to pull in right now. So we have code experts in GitStream, which uses the actual data in history. And you continue to say, give me the best expert, the one who knows this code base. Or you continue to say, pull in people so that my knowledge gets spread across the team and the org. Maybe pull in not the best expert, but someone who, by reviewing the PR, will now create some spread of the knowledge.
32:22So having that flexibility is a game changer for eventually faster process, better experience. I don't have to hunt around for the right reviewer. And I can also start serving complex, you know, security and compliance use cases, make the both practitioners happy because they can get pulled in at the right moment. If the PR is touching a sensitive area or a security tool is complaining, again anything that is blacked and uniform all prs have to the exact same procedure and control is a losing proposition so once you layer this programmable workflow tooling like get stream onto your visibility and start improving the pr process you're seeing these incredible gains which which is fantastic but there are still efficiencies to be had in improving the quality amount of focus time and building habits that can help limit disruption for devs and yes programmable workflows will help with some of that.
33:19But it also goes beyond tooling. As most people who listen to this podcast know, we're adamant that developers need to be treated as knowledge workers who have time they need to problem solve, think, create. They're not robots on a production line. I know from personal experience, that doesn't work very well when you're asked to treat work that way. And you can't be productive on a whim necessarily. So that's why in addition to providing this visibility to metrics, we, I think, typically evangelize providing devs with core blocks of uninterrupted time to code, create, and think. Yashai, I know you and your team have also done research on this topic.
33:54What have you found to be effective? It could sound like an oxymoron where we're saying, add some automation to the process. Does that not move me towards treating my developers as cogs in a machine? Oh, everything's automated. I'm just being called on like an API. But in reality, those automations actually help the developers because, again, they provide them with more autonomy and context so they can choose what to do when. They remove toil, which is work that could be avoided, all those reviews which I mentioned. So the first thing I want to say is like automations in the PR process do not mean or do not entail the developers are like working in a more automatic mode.
34:41It's actually removing some of the of the toilet and letting them spend more time creating. But as you say, there are very common behaviors and issues with what's needed to be a productive coder, productive developer. And for example, uninterrupted focus time to actually code my stuff is crucial. And we've seen that, you know, a context switch, if I'm in a focus and I need to move to another problem or respond to someone, respond to a review or review someone else's code, those are expensive. It takes 20, 25 minutes on average to get back to what I was focusing on. This is lost time. We all feel it in our gut.
35:24It makes us more tired. it makes us more irritable but it's also lost time and if I'm always interrupted throughout my day, the day is gone and I've done nothing, that's the feeling I've never very very little, I may be helping others, I may be interacting those are important things too but I have made very little progress in my creation which is I need focus time to write my code, to test it correctly, to wrap my head around a problem so context switches and interruptions are really an efficiency and productivity killer. This becomes a bigger issue as organizations scale as well, correct? Yeah, so with larger and larger orgs and development teams and orgs, there are more people, more stakeholders, more people affected and interacting with what you're doing.
36:15And developers tend to fight themselves on poor meetings, sometimes meetings that could be avoided or should be avoided. So if you're looking at, I don't know, around 17 hours of focus time left for me in a week, or how long am I spending in meetings that could range from 17 hours to 22, 23 hours, the larger the org gets and the more communication is needed to keep the org functioning, developers are finding this very taxing. And even by applying very simple methods like grouping the meetings together, obviously avoid meetings that are avoidable. That's always like an uphill battle. But grouping them so that the rest of the time is uninterrupted, focus time needs to be long.
37:03You can't go into the zone and like, oh, there's a 30 minute hole with me in my meetings. I'm not going to get anything done as a developer there. So having consecutive aggregated time, which is free from meetings, a very basic step, it's hard. It's not easy to do with large organizations and many moving parts, many stakeholders. There are some automation tools out there like smart agents or helpers that live in your calendar and help you move that. But it's also a challenge for the team leaders and for the managers to constantly look at that and make sure that we're not... Because it's easy to schedule a recurring meeting with 15 people.
37:40Like two clicks and you're done. So being aware of that and pressing back and allowing the developers to have that consecutive free time for focus is crucial. And the pulling from managers to devs, it seems everyone agrees this is crucial. 76 % of managers say more focus time for developers leads to more revenue. 90 % of leaders say more focus time leads to more productivity. 80 % of engineers say more focus time leads to faster production. So what can we do to make sure dev teams are using their time to code and not to fragment it with meetings? I think this is a place where developers need help.
38:22It's very hard for the ICs, the developers to protect themselves from the ongoing pull to have more meetings and more interruptions. So this is mostly on the team leaders and on the managers to make sure that the calendars are not fragmented. to help fight off these recurrings or again, aggregate them so that there's enough consecutive unfragmented focus time. Try to remove the mandatory meetings or make meetings optional, move things to async. And we have a constant dilemma. As managers, we want to push context down. In my view, the only way developers can be successful is by having context. They need to know the why.
39:07They need to understand the business. They need to understand the customer pains. even if they're just fixing this widget. And typically the way to deliver that context is through meetings. So it's a challenge. You don't want to lose any area. If the developer is left alone and has no context, they're not going to do the right thing. So this is an ongoing challenge, but by being aware of how fragmented the calendar is, the ongoing tax of mandatory meetings, and consistently backing your developers and fencing off their time, I think it's a crucial part of being a team leader and an engineering manager.
39:42This should be top of mind because of that cost, the very expensive cost of fragmentation in my time. Makes total sense. And I know that as you continue to layer these together and automate meeting blocks, try to support programmable workflows, have visibility for teams, you start to see these major impacts. So to recap, you need to improve and increase your team's focus time. Average devs get way less than they should. And when I say average, I just mean any dev. You need to provide them with blocks of unripped time to code. You need visibility into metrics of how your team is performing so that you can understand not only what's happening with your org, but then benchmark it against other teams through research like what you've done.
40:24And that way you can make decisions on how and what to improve. And then you also need to reduce this number one inefficiency you talked about in cycle time, code reviews and pull requests. So by layering these three elements together, your team has more time to code, makes smarter decisions about how to code, what to work on, and turns around code reviews faster, this big sticking point. If listeners are interested in using these compound efficiencies, what can they do to get started? Obviously, invite users like listeners to take a look at Literary B's offering. We have GitStream, which is the automation engine for the pull requests.
41:00This is where you can get started with removing toil and adding context automatically. It lives in the PR, very easy to get started, completely free. Liner B also have like, we have this full suite of metrics visibility. Worker B, which I mentioned, this is like nudges and helping the human communication parts. So really end-to-end approach to measuring, to improving and allowing the developers to improve through automation and through helping their ongoing awareness of what matters. And on the manager side, connection with a business, understanding investment versus business priorities, things that are important to keep all that improved and more efficient effort aligned with what we should be building.
41:47because you can be extremely efficient in your work, reduce all the friction, remove contact switches, and be building the wrong things, right? So the final piece is understanding what you should be building and what to focus on. So that is all available in our solution for engineering managers and for dev works, but really easy to get started with some automations using GetStream. You can get this in your repo in five minutes and start getting the benefits. Fantastic. Well, Shai, thank you so much for coming on the show. really appreciate you walking us through this. And hopefully this will help other engineering leaders to apply not just one efficiency, but multiple in order to compound these impacts.
42:25Because it's awesome to see the impacts of this research as you get that initial 47 % improvement cycle time and you add 61 % for programmable workflows. The results are just so astounding. So thank you for sharing the research with us. And if folks want to learn more about the research, it's the right place to go to linearb.io slash benchmarks. Yep. Thanks, Connor. Yeah, always great chatting with you. For those listening, if you want more content from the lab like this, make sure to let us know. We love hearing from our listeners, whether that's in a review form, tweet, LinkedIn, whatever else.
42:54We want to know if this is the kind of topic you want us to cover. And again, Yashai, thanks so much for coming on the show. Thank you.
43:15Bye.
From the publisher
As the milestone book Atomic Habits laid out, the key to life-changing habits is adopting one effectively and then layering another desirable habit on top of it.
The same is true for efficiencies in software engineering.
When your team adopts one efficiency, sees it bear fruit, then adds the next efficiency habit on top of it, the result is compounding efficiencies.
In this conversation, LinearB’s CTO Yishai Beeri reveals the data on compound efficiencies as experienced by real dev teams out in the wild.
Show Notes:
- Learn more at linearb.io/benchmarks
- Register for our summer series!
OFFERS
- Start Free Trial: Get started with LinearB's AI productivity platform for free.
- Book a Demo: Learn how you can ship faster, improve DevEx, and lead with confidence in the AI era.
LEARN ABOUT LINEARB
- AI Code Reviews: Automate reviews to catch bugs, security risks, and performance issues before they hit production.
- AI & Productivity Insights: Go beyond DORA with AI-powered recommendations and dashboards to measure and improve performance.
- AI-Powered Workflow Automations: Use AI-generated PR descriptions, smart routing, and other automations to reduce developer toil.
- MCP Server: Interact with your engineering data using natural language to build custom reports and get answers on the fly.
