by Leon Rosenshein

Silos

They're not just places to store your grain. Information gets into silos. Processing gets into silos. And we all know that silos are a bad thing, right?

Duplication of effort. How many configuration management/payment/SWN systems does Uber need anyway? Everyone should be using thrift, and custom thrift over TChannel, not Apache thrift, unless you're working with gRPC, or over Muttley, or with Yarpc, or maybe even hyperbhan.

Working at cross purposes. Ever hear of NetDocs? Microsoft once tried to build an alternative/replacement for the Office suite. Staffed it big. Got some great ideas, then collapsed the team and brought the ideas into Office. Or maybe Kin. At that same time there were folks working on Windows Phone there was a team building the MS Kin, a feature phone for the smartphone era.

On the other hand, there are concepts like separation of concerns, DRY, IDLs, and the core Unix philosophy of do one thing and do it well ( then chain them together into a pipeline). We think of these things as good. And they are. But they're also all silos. So maybe silos aren't all bad. Being able focus on one thing and having clear, well defined boundaries and interfaces with your neighbors makes you more productive.

Like most things, silos, in and of themselves, aren't bad. Focused responsibility is good. To use Dara's term, "Who's got the D?" What is bad is when required information, plans, and goals get stuck in one place and don't make it to where they're needed. And that's the hard part. How do you balance providing enough information without wasting people's time? How do you get enough info to make the decisions you're responsible for without getting buried in the deluge? I've found that the best approach is to make as much info as possible available in a well known place (email group, file memos, architectural decision records, etc) and let those who need it consume it at their pace. On the other hand I like to see lots of information fly by and pick out the relevant nuggets and know where to go for more detail. YMMV. Share your best practices (and anti-patterns) in the comments.