Patterns and anti-patterns
You may be unaware of architectural patterns and anti-patterns. Again, this relates back to the first point. If all you have is on-the-job training, how can a manager expect that you will be following best practices for system administration? After all, these best practices evolved through study and analysis of system administration tasks over years. Without training, even the sharpest knife in the drawer is going to make mistakes, simply because no one can think of everything.
Architectural patterns are ways of doing things that have proven to work well in most cases. An example of this is two-factor authentication (e.g. something you have, and something you know). Many different approaches have been tried to authenticate a user, and two-factor authentication is a successful pattern. Think of your ATM card; it involves something you have (the ATM card) and something you know (the PIN). There are many successful architectural patterns for system administrators, and books have been written on best practices.
As you might expect, anti-patterns are designs that do not work well. They are designs where you might say, “Given the opportunity, I would never do that again!” An example of an anti-pattern, although you see it all the time, is a watch folder. Watch folders — folders that are watched by an application such as a transcoder — are frequently used as a way to tell a downstream device to do something with a piece of content. For example, drop content into a folder, and magically, a transcoder will pick up the content, transcode it to another format and drop it in a pre-determined location. What’s not to love? They are easy to configure, easy to understand and easy to change.
The big problem with watch folders is that you are using a file system as a messaging system. I could write an entire article on this topic (and maybe sometime soon I will), but this is a bad practice. If you want to tell a transcoder to do something, wouldn’t it be better just to send it a message? Then it could acknowledge the message, and you would have an audit trail. What if someone puts a file in a watch folder, and then deletes it after the transcoder has started the job? How does the transcoder know you are done writing the file into the watch folder?
Getting back to issue number one, training may help you learn about patterns and anti-patterns without incurring the scars of practical experience.