
"Site reliability engineers shall predict the behavior of complex systems."
This sentence, which I recently came across in a job description, is fascinating because it is one that, depending on your background, could seem either reasonable enough or an utter glaring contradiction in terms. Most people use the word complex as a synonym of complicated or intricate—something with a lot of parts that's hard to fully grasp. Understanding something complicated may be hard,but make the effort and you can, at least potentially, do it.
However, both software engineers and systems engineers use the word complex as a specific term of art. Software engineers in fact use it in several different ways, distinct from the systems meaning. Software engineers and systems engineers (please read that term throughout this article to mean SREs, production engineers, systems administrators, DevOps practitioners, etc.) are overlapping groups of people who work together. We all need to understand which meaning is in use at any given time so we can communicate clearly.