The need for Slack

So this is not a post about Slack(IRC/Chat application) - there is nothing about instant group messaging here. Slack also means LOOSE which is the opposite of tight. We all know Debit as bad. We all know Debit slows down execution and increases maintained cost. So why do we still suffer too much about it? IMHO there are several reasons that go from Bad management, Lack of Vision, Poor Tech Talent Pool, Lack of Software Ownership and Culture. Recently I finish Upstream from Dan Heath, which is an amazing book about product discovery but also about Software Architecture and Team Organization(Because both are the same :-) ). Dan has other amazing books like Switch. Which I highly recommend it. 

Tunneling Effect

Dan's theory is that under scarcity(like in this COVID-19 times we are) everything is more stressful and complicated. Scarcity of time might make you neglect or even ignore problems. IF that happens for a long time it results in a system/culture that never learns.  Tunneling is tricky because it can be very emotional rewording(I'm sure you heard about heroes who saved the release or a particular project). Focus is a double edge sword that also can blind you pretty deeply. In the book, Dan talks about an episode of Reply All(Which I hear time to time - it's a good podcast). So on this episode, they talk about crime in NY were was easy to not report a crime or make it in different categories so promotion could happen on the police, and then the next guy does the same thing and so on and on until the Mayer have to ignore and not report the crime as well because it can hurt real-state. So the crime becomes the boss. 

Tunneling can also be seeing as Inertia. These kinds of problems are common and hard because they require vision to see them and boldness to fix them. The issue is we have specific teams for everything and often there are blank spaces and nobody fixes problems on blank spaces since there is no team looking to that. 

At the beginning of the book, there is an example about Expedia with 20M support calls per year. So the question was why that was not fixed before like when was 7M. Well, there was no team looking for that. Yes, folks metrics and be dangerous. Support metrics often have short calls. But what if we could fix this problem upstream? before the problem happens? Tunneling blinds us from doing that. 

Complex and hard problems cannot be fixed with simply isolated answers. IMHO thats the issue with short term thinking, we lose light for the war and just focus on one battle. Project thinking instead of Product thinking makes it much harder for sure. 

The Need for Slack

It's 100% sure different structures need to be considered and also better integration and colarbotation between teams and for sure different metrics but would that be enough? No. We also need Slack. Slack means have time to do other things than features. You might see my code is good and I have nothing to do now. That might be true but would that be always true? 

So the Slack time could 20-30% of you sprint time. If you still dont know what to do with this time, considering the following opportunities for improvement, first let's consider if a thing goes different than you think(Planing is one thing - execution is completely different because there are variability and things we dont control) such as:

 * Bugs - Why dont you time to fix bugs? 

 * Tests - Could we create more tests?   

 * Documentation - dont we need to document better? 

 * New People - Don't you have anything to improve in your onboard process? 

 * Observability: Are we missing dashboards and alerts? Could we improve them? 

 * Libraries: Dont we need to update any libs(internal and external)? 

For sure there is the classical Bad code, Tech debt but I just want to point out that are several other important things to do. Kent back said "Make it work, make it right, make it better" and we are just on repeat for "Make it, make it, make it". Slack time can be also used to REFLECT and Learn what is not working both in product terms but also in engineering teams. 

Slack does not need to be BIG(50% or more). Actually sometimes small and frequent is much better than in batches(It's the kanban reduce batch size philosophy, one piece-flow, and DevOps/CICD rolling update philosophy). Critical Chain talked about buffers a long time ago.

We need to be careful with short term thinking. Sometimes I feel like Technology is like Global Warming or the Frog Boiling in the water(Like we say a lot in Brazil). We might realize the issues when is too late and there is no remediation at that point 3-5 years of re-write projects might not be possible and might need to go longer.  

Cheers,

Diego Pacheco

Popular posts from this blog

Kafka Streams with Java 15

Rust and Java Interoperability

HMAC in Java