If you’re good (or lucky), you actually know — and have documented — what your system looks like.Then again, do you? Really? For example, what happens when you’re on-boarding somebody — is there a process by which they’re brought up to speed? If “throw them in the deep end” is what you do, well, I guarantee you that there are vast swathes of the systems that are equally “deep-end”-ish to you!
Let’s take this a bit further, and think about the different ways in which you probably don’t know your system well (or well-enough. Either can be a killer!)
Complexity as an Excuse: If I had a nickel for every time I heard “It’s too complex to document”, well, I’d have a lot nickels. This is a classic code-smell, and one frequently deployed by #CowboyDevelopers. Seriously, if it’s that complex, then either• It needs to be refactored into something simpler• It needs to be broken up into less complex components• It’s being done wrong• It’s just lazinessThat’s it. No other excuses.
system vs System: It’s so easy to think of systems as the software components of the product, when it’s actually much greater. Systems (capital-S) include the software, as well as the people, processes, internal and external dependencies, timing and timeframes, and a whole bunch more. • If it takes a new developer 6 months to come up to speed on your product, you better have hired them 6 months before you need them, no?• Your distributor only ships when you have a positive account balance, and takes 3 days to process payments. You better stay on top of your supply-chain, no?I could go on, but the point should be obvious — the items above, such as people, timeframes, supply-chains, etc. are as integral to your System as the code that you write. It behooves you to know this, eh?
So yeah, “Do You Know What Your System *Actually* Looks Like?” — so much nuance packed into such a simple question, eh?My accursed paranoia around all of the above is pretty much why I get accused, all too frequently, of having a Documentation Fetish. And frankly, it’s worth it, I far prefer to add that load, as compared to being beholden to Murphy’s Law all the time.