Inefficiencies of software development - 2, and Reading predictions about an AI future
Common process issues that slow you down, and a critical view of latest technology predictions
(This is the 2nd part in the series on inefficiencies of software dev, you can find the 1st part here)
While skilled engineers and advanced tools are crucial for software development, the processes that teams and companies follow can significantly impact efficiency. Let’s explore common process-related inefficiencies that can hinder software engineering teams' productivity and overall performance.
Queue Buildup Due to Dependencies and Capacity Issues
If you are an Engineering Manager, your primary role is to manage “flow”. There is no other thing more important than managing flow. Not technical skills. Not people management. Not product acumen. Not domain expertise. Just manage flow and you will be managing everything else better. Same if you are a Director, VP, only the span gets wider.
Software development often involves complex workflows with multiple stages and team handoffs. Inefficiencies in this flow of work can lead to significant queue buildups. Certain stages in the development process may become bottlenecks, causing work to pile up and slowing down the entire pipeline. That can happen because:
Unresolved Cross-Team Dependencies: When work requires input or action from multiple teams, unresolved dependencies can cause delays and create a backlog of partially completed work. Not only do you need additional glue roles to solve such issues, but often the smartest people in a team are assigned to internal planning problems rather than customer problems.
Capacity Imbalances: Lack of capacity in certain teams or roles can create backlogs. For example, if there aren't enough QA engineers, tested features may pile up waiting for final approval, and TTM goes through the roof.
Uneven Workload Distribution: Inefficient distribution of work across the value stream can lead to some teams being overloaded while others are underutilised. One team is ready with output while the others are unable to take up that work is classic time-waste for everyone involved.
Inefficient Handoffs: Poor communication or lack of clear well-known processes during handoffs between teams or stages can lead to delays, misunderstandings, and rework.
Work in Progress (WIP) Overload: When too many items are in progress simultaneously, it can lead to context switching, reduced focus, and overall decreased efficiency. If it is hard to imagine this while you are “in” an overload situation, just think of a traffic jam.
Photo by Iqro Rinaldi on Unsplash Lack of Visibility: Without clear visibility into the entire value stream, it becomes difficult to identify and address bottlenecks or capacity issues proactively. This could happen for multiple reasons related to org structure as discussed before. One classic issue is that teams monitor local metrics, like dev velocity and have no visibility of overall outcome. More often than not, as the visualisation below shows, teams and managers focus on improving a small step in the whole process, instead of improving the whole process.
These issues are so prevalent especially in mid-sized firms that even when they have the best engineers, their release cycles are terribly inflated, and often they see high attrition of top talent. More people leave companies out of frustration around process than even lack of competitive compensation.
Inefficient Engineering Processes
While flow focuses on the entire value stream, engineering processes also have a way of creeping in inefficiencies. I will pick up one major part of the development process which can be a big source of time waste for an engineering team. (More on this topic under “Dev Practices”, later)
Code Reviews
Many teams follow a PR based code review process for maintaining code quality, an inefficient review process can become a major bottleneck for them:
Long Wait Times: Engineers often face extended periods waiting for their code to be reviewed. This delay can lead to context switching as developers move on to other tasks while waiting, reducing overall productivity.
Review Fatigue: When reviews are not timely, large amounts of code can accumulate, leading to rushed or superficial reviews as reviewers struggle with the volume.
Workflow Disruption: Delayed reviews can cause merge conflicts as the codebase continues to evolve, requiring additional work to resolve these conflicts.
Delayed Feedback: Long review cycles mean that developers receive feedback long after writing the code, making it more challenging and time-consuming to address issues and learning from mistakes.
Generally, the easiest way to deal with such bottlenecks is to shift left. If code reviews are important for you, pair programming is the simplest and most efficient solution. Pairing not only solves reviews, it also helps seniors train juniors on the job thus improving onboarding times.
Ineffective meetings and useless rituals
most meetings: few contribute, most just occupy chairs
Back when I was a rookie engineer, I used to be excited about meetings. Since I was rarely invited, that scarcity lead me to feel quite good when I did get an invite. It didn’t matter whether I was learning or contributing in that meeting or not. Just felt good to be in a meeting room with the big folks. I believe this is what many new engineers go through. But very soon, we realise that while meetings are sometimes necessary for collaboration, in most workplaces meetings add more to inefficiencies than to progress. Makers dislike meetings1. Ineffective meeting driven decision making hurts teams because :
Productivity Drain: Too many meetings can severely cut into productive coding time, reducing overall team output. Often times, hour long meetings could be done in 10 minutes, with most of the participants informed about the decision over a standup or an email. An hour long meeting for a 10 member team is a whole day and more for an engineer - losing that time is quite costly.
Context Switching: Not only reducing work time, frequent meetings throughout the day can disrupt focus and flow, making it difficult for engineers to engage in deep work.
Meeting Fatigue: An excess of meetings in a day, or over days on a topic leads to mental exhaustion, reducing creativity and problem-solving capabilities. Bored, disinterested people do not contribute to discussions actively, so even when there’s something important being discussed, there’s no certainty that the right decision was made.
Poor scheduling : When meetings have a lot of participants, it often leads to excessive time spent trying the find when people should meet, sometimes even more time is wasted finding the right time when everyone is available.
Delayed Decision Making: Paradoxically, too many meetings can slow down decision-making processes as issues are continually discussed without resolution. “Let’s discuss this in the next meeting” “which is when ?” “Next week ?” “Oh you are on leave next week, let’s do it the Tuesday after.” 10 days wasted.
Inefficiencies aren’t just limited to decision-making meetings. Many times teams end up following rituals that they don’t get benefits from. But they keep following them because someone high up said so, or because someone read about it in a book. Status check meetings that could be emails, long meetings that could be shortened, or better, could just be asynchronous updates over email or chat room.
During covid lockdowns, people did pick up some good asynchronous collaboration habits, yet most decisions today in workplaces get made in synchronous meetings. And that means a lot of people get locked-in on a thread synchronously, fixing this problem gives back a lot of time to creators to focus on creating instead of idling.
(there’s a lot written about how to make meetings effective, i will keep my hacks for another post)
Lengthy Onboarding for New Team Members
An important part of team management is effective onboarding of new team members. A good start for a new team member can dramatically improve the chances of them and the whole team becoming productive faster. Poor onboarding processes can delay new team members from becoming productive contributors:
Productivity Loss: New hires take longer to reach full productivity, impacting team velocity and project timelines.
Increased Burden on Existing Team: Without a structured onboarding program, existing team members have to spend more time helping new hires, reducing their own productivity.
Inconsistent Knowledge Transfer: Ad-hoc onboarding can lead to gaps in knowledge or inconsistent practices among new team members. This bubbles up to be a major problem with graduate hires, and also when a lot of new people join a team.
Lack of consistency in onboarding: It takes longer for teams to identify performance issues with individuals, that in turn delays corrective actions.
Higher Turnover Risk: Poor onboarding experiences lead to decreased job satisfaction and higher turnover rates among new hires.
(Part 3 in the series would talk about how systems under development and technology practices followed by teams affect their productivity.)
Readings from recent predictions about an AI future
I love reading science fiction and fantasy books, or as marketing people at publishers call them these days - Speculative fiction2. In general, most of the dozens of sci-fi books I have read, and I could be biased here, predict a future with AI or humanoids or some sort of super-intelligence in a computer. Even a couple of years back, such stories looked far off, centuries if not millennia away. But these days, we see so much tangible growth in the artificial intelligence field that it feels we are a decade or two away from Banks’ Culture3, or at least a proto-Culture. (Banks conveniently avoids near term speculation by taking us 9000 years after powerful AIs take over, but we don’t have the luxury to do this today, we have to fill in the blanks).
Now, while speculating about the future has become more mainstream, we often read only technologists painting it. Last week, Irfan shared a fascinating essay by Dario Amodei (CEO at Anthropic), Machines of Loving Grace4. I can safely say this is the most informed, intelligent view presented by a technologist that I have read about the near term consequences of powerful AI (borrowing from Amodei, I much prefer to say powerful AI, and dislike the term AGI). This is a long essay and I would suggest you keep an hour aside to read it. If figuring out the next 5-10 years is important for you, read it critically.
The essay starts off with predictions, about tech and then medicine, then goes into socio-economic topics. It is a roller coaster ride. At first, I felt immediate danger, but excitement. The first few predictions are almost manifesting in front of us. As a programmer I feel that there’s a good chance that making money from this skill is going to get harder and harder as AIs become better. At the same time, I also feel excited about the immense creative power that AIs can give me - so many times I have an idea I want to implement, and I haven’t for the lack of time. Or even with writing, to express an idea on paper, visually. Now anyone who has seen my drawings can tell you, they are crap. With powerful AI tools, I feel that I will be a better writer. So yes, this is a future more tangible and not too far away.
The predictions on biological and medical advances fills me with hope. But very soon, the author starts speculating into social topics - of poverty alleviation, governance and future of work. I could not but feel the naivety or overoptimism in the words. Such optimism fails to recognise how humans behave when they encounter a significantly powerful weapon. And yes, powerful AI is a weapon, even if it isn’t, it will be used as one. I have a much darker view, pessimistic even. Lest you take me for a luddite, I am only talking about my immediate thoughts, and not what I hope. Here’s the dark reality of today -
Western liberal democracy, what many of us have believed to be the best form and solution to governance, is under clear threat. It looks like we are nearing a 2nd cold war.
We are also seeing humanity degrade in the middle east - evil begets more evil. What the Germans and the British did in the 1940s is yielding another tragedy. The victims of then claim moral correctness for their actions because of the past. The victims of today will claim moral correctness for their actions in future. Mankind will keep digging its grave.
Given the above, I sometimes wonder whether this is how people felt during the period of what we call WW1 or WW2, are we in WW3 already ? Given the above, will powerful AI not be used as a weapon ?
Now, of course you may think that I am presenting yet another uninformed, naive view of things. But that’s exactly what I am trying to say. When I read this article, for the 1st half of it, I felt the words written by an expert in the field telling us the directions powerful AI will take us. While the author adds caveats galore, speculate he does on topics that are far more complex to predict on. And the 2nd half of the article feels like written with a well formed dream in mind, not based on knowledge but on hope. Taking stock, Amodei says this vision depends on everything going on right with AI. Will it ? What if it doesn’t ? He says it’s a world worth fighting for. One nods vigorously, yet is filled with anxiety.
I wish we could get to read the thoughts of smart people in social-economic fields about AI. Till then, we can only bank on sci-fi books, and read Banks, Le Guin, Asimov, Heinlein, Gibson, Clarke, Simmons, to name a few and find out what happens to us.
We are all getting more and more directly affected by every advancement in science and computing, as well as every degeneration of humanity around us, and every rise of decimal of a degree (celsius) because of climate change. We are at the cusp of something.
Maker’s schedule, Manager’s schedule - Paul Graham
Machines of Loving Grace - Dario Amodei