Being a software engineer is a lot like being a butcher
I was a butcher for roughly four years before I became a software engineer. (And nowadays, I’m a vegetarian.) And while one of the jobs doesn’t require you to work inside a refrigerator half the time, there are actually quite some similarities in how we keep our work environment clean.
Keeping your work environment clean
Both as a butcher and as a software engineer I see four different cleaning times/types.
The first type is the cleaning as you’re working. As a butcher things will get dirty when you’re working on your workbench, so you keep it clean by throwing out some trash, removing marinade, putting things back where they belong etc. As a software engineer this is kind of the same as the boyscout rule. Where you work on a piece of code, and you add some types, document a function, maybe refactor something to make it more readable etc.
The second one is unplanned cleaning when there is some time to spare during the day. In the butchery I worked they called this a “tussendtijdse opruming or T.T.O.” which is Dutch for an intermittent cleaning. If we had some extra time to spare we would do a bit more thorough cleanup of either a specific workbench, or of the entire place. Where we clean it up a bit better, to make sure we stay in line with health and safety regulation. This would also allow us to work faster again after the cleanup, as we had more space to work, everything was where it was supposed to be etc.
As a software engineer we have this as well. Sometimes you have a litte bit of time to spare during a sprint, where you can do a bit of a larger refactor, maybe replace a deprecated library with a new one etc. While not necessarily planned, these clean ups are a bit larger than just touching a few things while you’re working on it.
The third type of clean up as a butcher was the end of day cleaning. Here we would do a thorough clean of the place, using water and soap to clean up all the workbenches. We would hose down everything (twice), and get everything set up again for the next day.
As a software engineer we don’t have a “closing” hour, but we do have the end of a sprint or a period. You should always reserve some time at the end (or start) of a sprint, to do some cleaning. You can create tickets as you’re working on something for potential clean ups. Maybe a business critical piece of software is extremly confusing to read. So if you have some time you can create good tests for it and rewrite it to be more readable. This is the type of work that is planned, but shouldn’t take more than a few days to complete.
The last type of cleanup as a butcher was the type of cleaning we would do once or twice a year. During the time of year when it was less busy, we’d take time to maybe clean the freezer. We could scrape off all the ice, do a full clean, and throw out anything that looked suspicious. We’d also clean parts you normally couldn’t reach, like the wall behind a storage rack.
In software engineering, this is the type of cleanup that takes a longer time, and is planned in advance. This can be things like replacing a library that is at the core of your business, which has a large impact to replace. Things like these can take an entire sprint, but are needed to keep your codebase up to date, and keep it functioning for years to come.
If you want to get notified of my next blog post, join the newsletter