We were recently approached by a marketing firm that was looking for a partner to skin and build Joomla sites for them. One of the questions they asked of us was what sort of quality assurance we performed on our work. This is a great question, because if you talk to developers they will tell you that all software has bugs. Writing zero error software is extremely difficult. This was also a great question for us particularly, because our dedication to quality is one of our selling points. I won't bore you with our response to the firm, instead I want you to consider how we might reliably generate solid work when software is so fraught with challenges? The answer is not that we are god-like Joomla developers (though I won't deny we're good.) I'll give you a hint, the answer is something that any business and any individual can employ. Give up? The answer is systems. You may think that you already know the what and how of systems, but I promise in this post I will provide a unique perspective into their benefit you won't find elsewhere. So keep reading!
We live in a world defined by systems, these repeating patterns that we're all embedded in. A very simple and common one: the sun rises, you eat breakfast, go to work, come home, eat dinner, veg out in front of the TV, then go to sleep and do it again. If you start looking, you'll see systems everywhere, with systems composing other systems. However, that's not really the key aspect I want you to notice. What I want you to pay attention to is that you already participate in and use many systems- you just don't pay attention to this fact. For example, you're starting work system might be: turn on your desktop, go grab a cup of coffee, come back to your desk, look at Google News, read your email, start your day's work. You would never call that a system, but you do it day after day.
Because most of the systems we do are familiar, or familiar enough that we can think about it briefly and know what to do, it's hard to see the benefits of writing the system down. This sentiment is generally accurate, but it introduces variance into what we do. For example, one day you're starting work system might be changed because you feel like looking up a YouTube video instead of reading your email. These sort of small changes are not inherently bad. The problem is that the changes means the results are not consistent. For example, if your boss walks by while you're watching your YouTube video they won't think you're a very hard worker even if on other days you're on top of things. So the first benefit of systems is that they introduce consistent results. This is the benefit that most people feel like they already understand.
However, what I'd like to point out is that only once a system becomes explicit and you write it down do you really know it and can benefit from it.
However, if it stays in your head, each improvement or problem you encounter will be lost in each iteration. Instead of a reinforcing and ever improving spiral, you just continue to meander along with the same inconsistent outcomes. Sometimes you remember problems, sometimes you don't. Sometimes you remember an improvement, sometimes you don't. It comes down to your mental alertness whenever you're executing the activity. With a system, its like the best you is executing every single time.
There is a software development principal called, Take the First Bullet. It means that whenever someone requests a change from a developer they should implement the simplest possible solution, even if it's not a best practice solution. However, and this is the important part, if they are ever asked to expand upon that change or do something similar, only then should they implement a best practice solution. This principle helps to reduce wasted time and money. You should use the same principle for choosing which systems to write down. The more often you do something, the better candidate it is for turning into a system. If you do something only once or twice and probably never again, don't waste your time.
So, to fulfill the promise of this post, this is what I recommend to you:
Easy. This is guaranteed to save you time and dramatically improve the quality of what you're trying to accomplish, whether that is scoping a project or ensuring the highest quality of software you can deliver.