I listened to an excellent audio book in the car recently called The Spirit of Kaizen: Creating Lasting Excellence One Small Step at a Time by Bob Maurer and Leigh Ann Hirschman. Kaizen is Japanese for small changes. I have found over the last couple of weeks that not only is this a good way to improve processes and efficiency but also a good way to work closer with colleagues and improve happiness.
I'm not one of those developers that draws a box round themselves and sticks to doing "my thing and my thing only". I can't stand it when someone says "it's not my problem" or "I don't care what are doing". My view is that if there's a problem and I have the ability to help sort it, then why not? Not only is this helpful to the company but it keeps work interesting and a strong team bond.
Back in the office we've been getting more business, yet staff turnover is increasing and engagement is decreasing. This is due to the flux and changes that have been happening since a takeover by a large corporate. People don't like change, especially big changes, so it's understandable. The team bond had been seriously eroded and people were withdrawing into their metaphorical shells. To try and break out of this cycle of negativity I felt that I should try and help others outside of my department more instead of just doing "my job". In the past I have attempted this and found certain people got upset by this attitude which at the time I didn't really understand. Overtime though I found these people just like to hide behind their job titles and are generally "no men". They are a barrier to positivity and productivity. I might upset them again, but screw them! My boss is the opposite. He's always open to suggestions, so he gave me the green light to prove Kaizen can work.
After the meeting I encountered our legendary support guy Keith. He happened to be working the late shift so was the only person left in the office. I said "Keith, what's your problem?" he looked a bit perplexed at first but after I told him about my plan, he replied "I find it hard to search for old cases and error numbers in the support system without actually logging on to the server and running some SQL".
Yes, you did read that! He needs to remote desktop onto the server, start up SQL management studio, load up T-SQL, alter it for the search terms and then execute it, just to find results because the support system doesn't do it.
So what did I do about it? Well, a few years ago we knocked up a product in a hackathon that searched the web, our support system (or any databases) and indexed files across the network (a bit like the defunct Google Desktop, but better of course). This then aggregated the results on a Google style webpage. It was awesome but never put to good use.
I had the code for the support/database search in TFS which was just a webservice and then knocked up a quick MVC UI using all the CSS from the built in Visual Studio project template. It looked awesome and only took about 4 hours from start to finish. A few tweaks and suggestions later we have a fully working, awesome support search system that saves several minutes per case. Over time this will really pay for itself and has made Keith and his colleagues happy. (Sidenote: There is a reason why we didn't fix the search feature itself but it is long winded so that is all I will say!)
Kaizen 1 - apathy 0
What could I tackle next? Well, one of the guys who goes out on site to roll-out our product found various things didn't work. He calls up one of the senior developers in the office. To cut a long story short, the call was 3 hours long so nearly a whole man day of productivity was lost! It turned out the customer hadn't built their infrastructure correctly. This is pretty basic stuff, yet when humans get involved you have to assume they'll make mistakes!
We are unable to use automation such as Chefto roll-out and build infrastructure as they are very locked down and generally don't like outsiders to tinker. There must still have been a way to discover if the servers were correctly configured? With permission, we could just run the powershell command:
get-windowsfeature | where installed > c:\roles.txt
and then upload the file (roles.txt) to a website that would parse the results and say what was missing and anything risky that shouldn't be installed. So that's what I did. Another quick MVC site, job done.
Boom! Kaizen 2 - apathy 0
....and the small changes keep coming. Whenever I ask someone "what's your problem" there's always something we (the tech team) can help with. Ultimately, all these small changes will add up. Even in the two I've mentioned in this post will save (1) several minutes per support case and (2) wasting hours or days when customer infrastructure isn't correct. I spent a day writing code, yet the company gains will be far, far larger and has made everyone happier, less stressed, and with more time so they can get on with what they should be doing. You should try it - Kaizen!