If you are not familiar with lean manufacturing and the associated methodologies, 5S might be a bit of a mystery to you. Before I dive into explaining it in detail, and how it can be applied with great results to software development, it is worth seeing where it came from. As you probably know, Toyota’s processes and ideas have become famous for a reason. They managed to achieve stunning results in a very competitive industry, with far fewer resources than their competition. As a result, people wanted to know how they did it. One of Toyota’s secret weapons was 5S, which they adopted from Hirano in Japan and made their own. Nowadays, it is a key part of lean methodologies and helps businesses around the world. With such a powerful tool you might think there would be a lot of complexity. However, 5S is actually quite simple.
What Do The 5Ss Mean?
5S comprises of 5 words, each beginning with S – Sort, Straighten/Set In Order, Shine, Standardize and Sustain. Yes, there were originally Japanese words (Seiri, Seiton, Seiso, Seiketsu and Shitsuke), but let’s work with the English versions. It’s far easier!
Each of these words comes with an idea of how to improve the work that we are doing in order to increase our efficiency and effectiveness. Sounds promising, right? But, how can these ideas be applied to software development? Let’s take a look in more detail.
The 5S For Software
Sort – The first step in 5S is to remove any unwanted elements from the work area. In an engineering environment this would mean tools and other workplace objects. For software, this is more likely to apply to your computer workspace.
For example, you can clean up your desktop and file system, removing any unwanted items so that you can find what you are looking for more easily. Removing clutter in any way possible, always leads to a more efficient result in any kind of work. I am sure you have experienced this at work or at home.
You could also apply this idea to your coding IDE or other tools you use in software development, either as a developer or project manager.
- Remove unwanted projects or files that are no longer needed or relevant
- Delete any dead code that was not used in a project (was not committed to the versioning system for example)
- Remove commented code that is no longer used (old versions are stored anyway)
As you can see, the idea is quite simple, but the results can be powerful. After all, keeping everything clear, clean and well ordered always leads to better work.
Straighten – This refers to the ordering of items so that they are easier to find and faster to work with. The original idea was meant to apply to the alignment and arrangement of tools at a work place, but we can apply them to our virtual computer world too.
You could start with keeping your most important and commonly used tools on your computer desktop or create shortcuts to save you time when completing your tasks.
Digging a little deeper, files and code should be organised in such a way as to be easy to “reach”. Don’t lump all your documentation into one folder labelled “Documentation”, divide it into relevant projects and topics. Order leads to efficiency in anything we do.
The same goes for code of course with things like namespaces, and the logical placement and ordering of code (methods, objects, hierarchy etc).
These little things may take time to become habit in the beginning, but when you go back to find something some days, weeks or even years later you will be happy that you took the time to straighten out your workspace.
Shine – Keeping your tools in working order and removing any rust or dirt was a smart thing to do in an Engineering workshop. But how can you apply that in software development?
The biggest area this applies to is in code clean-up and refactoring. Of course, refactoring can be applied to documentation and processes as well, if you think about it.
Code refactoring is something we never want to do in software, but we know is good for us. Kind of like eating our vegetables as a kid.
As the number of files and objects increases in a project or piece of software, so too does the complexity and inefficiency of that legacy code.
So, instead of ignoring it, you should always leave yourself a little time in each project to improve your code through refactoring. Add an interface to that commonly used code, or create a new object to store often used actions. You know how to do your job, but are you keeping these ideas in mind during the hectic pace of agile software development?
Standardize – This is step four of the 5S process, and in many ways takes all of the previous 3 into account. The idea here is to standardise everything you do through common procedures.
So, rather than just doing the first 3 Ss once, you should have a process that describes how these tasks should be done and maintained on a regular basis. Otherwise, as we all know, the decay will set in again and you will have wasted your time.
This means someone should document the processes you are using
- to organise your code structure
- to refactor the code
- to write comments in the code
It could also mean writing an introductory document on which tools are used by development or project teams, how to set them up and where to store them on your desktop (for maximum efficiency).
Documentation and processes are the key to always achieving efficient and repeatable results in any business.
Sustain – The last S is perhaps the most important. It is the idea of ensuring that the whole 5S methodology does not get forgotten in the daily grind.
This means that audits need to be in place to check that processes, procedures and quality are being maintained at all times. To also check that the previous 4Ss are actually being carried out with the expected diligence.
It is always the case that these kinds of tasks (documentation, processes, reviews, audits) appear too time-consuming and irrelevant so they are easily ignored or forgotten. That is why this last piece is so critical. Without it, you can forget about even starting on the 5S approach to begin with.
As you can now see many of the approaches used in the Engineering world are easily applicable in any business scenario including the world of software. The ideas are simple, but the results can be incredible. So, why not take these ideas and see how you can apply them to your software development today. You might be surprised how quickly you and your team embrace them, especially once you see the results!
About the author
Reese Bourgeois is the Managing Director of Flow Consulting, a consortium of experienced consultants with proven expertise in helping organizations make dramatic improvements in their leadership and business processes.