I'm an intern software developer and in my career I've occasionally heard the term 'silo' being used. I've looked into it myself and tried to nail down exactly what it means, but I seem to be getting mixed results. By my understanding, in a general context it means keeping something separated and abstracted away from something or someone else, usually due to access or understanding constraints (not sure if understanding is really the right word to use here.) I've encountered it in two more specific cases:

  • Software: in which a developer or team of developers has complete control over the functionality of a piece of code which no one else can (or will) interact with beyond its I/O interface. I've also heard it used to describe a situation where one person or team works on the frontend of an application and the another works on the backend, completely separating the functionality.

  • Data or Information: this one I'm not as sure of. From what I can tell it refers to data itself being completely disconnected from any application architecture. This confuses me a little because I can't really think of a situation where you wouldn't do this, but as stated I am only an intern and could be a little naive to some software development practices.

So are both of those right? Can the term 'silo' be used to describe both software and data? How would you describe a 'silo', and in what context would you use the term?

closed as primarily opinion-based by gnat, Doc Brown, David Arno, Robert Harvey, Tulains Córdova Jul 12 '17 at 19:37

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 3
    It's generally a "knowledge silo" in my experience, and isn't specific to software engineering. – jonrsharpe Jul 12 '17 at 11:16
  • 3
    Sorry, but the term Silo has AFAIK no widely accepted, specific meaning in software engineering. So better ask those people who use this term what they mean, not us. On this site, this just leads to "guessing games", which are not welcomed by the community here. – Doc Brown Jul 12 '17 at 11:30
  • 4
    There, and everywhere else I've encountered it, silo is an organisational term. It refers to knowledge, responsibility, control or whatever being restricted to a particular group or unit in an organisation. It'll only be reflected in software the same way any other organisational structure is reflected in software. – Useless Jul 12 '17 at 12:07
  • 1
    @JackParkinson: Useless is right, the term "Silo" (besides its original meaning) is sometimes used to compare a small organisational group inside a bigger one with a "house without windows", which means they do not share their knowledge with others. This is in no way specific to software engineering, as I already wrote - there is no specific meaning in software engineering, at least not in a widely accepted manner. – Doc Brown Jul 12 '17 at 12:12
  • 1
    You put rockets it it to look dangerous and your competition doesn't make aggressive business moves. No seriously i have never heard of it. Your best bet is to ask the people you heard it from. – BlueWizard Jul 15 '17 at 22:17

silo: a tall tower or pit on a farm used to store grain.

The vertical orientation is key. It means you have a stack of sub-systems/components that are interdependent, that communicate with each other, that deliver to each other or have some other up-down relationship with one another. That is one silo.

Using the term implies there are multiple silos, each of which is independent of any of the other silos, from a technical or organisational perspective.

So you use the term to denote isolation between several complex systems.

Not the answer you're looking for? Browse other questions tagged or ask your own question.