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?