Culture of Modernization
So, the cloud movement has been in full swing for a few solid years now. Companies are leveraging the big three public clouds. With that they are looking at private and hybrid solutions as well. One of the sticking points for moving to the cloud has been modernization. Unless you are picking up your VM’s and moving them as is to the cloud, you are going to have to modernize to some degree.
Where I hear a lot of resistance is from executives. Comments like “why do we have to do this much modernization?“. Or “Why wasn’t this done before?”. And they are right to a point. Modernization efforts to the cloud are not worth it until you go to the cloud. Breaking a monolith up in to microservices and deploying that to VM’s would be a nightmare.
So, if we take cloud out of the picture. Can our apps stay modern as we move forward? Simple answer is yes. Let’s take one’s home. Do we never paint it? No, we paint as often as needed. Sometimes we have to do touch ups. If there is a leaky pipe that causes ceiling damage, do we leave it? No, we fix the leaky pipe and repair the ceiling. The idea in investing into home ownership without keeping up with it is silly. In fact, we promote the idea of keep up with your home. We have stores dedicated to it. I cannot walk into Lowes without spending at least 100$. My house is less than a few years old. I recently added a new plug for my wife’s new Dyson.
We have a culture of upkeep when we invest money into home ownership. We need to have a culture of modernization when it comes to software development. With home ownership we rarely come in and say, “let’s slap on new roof”. But when the back door needs to be replaced, we tend to upgrade it. I know I did, I replaced mine with one that is more energy efficient. Cost me a few more dollars, but it looks better and is less drafty. When it comes to apps, we generally invest more money into them than our personal homes. Yet we see more outdated technology than not.
So, what does it mean to have a culture of modernization? Well, first like one’s home we can start small. Simple process improvements in how you deliver software. Take unit test coverage. Let’s be honest and say the vast majority of us have little or poor coverage. But with any new feature enforcing unit tests is a huge step. Changing a feature that has no unit tests? Guess what you could and should add them. But if we look at why there isn’t unit test? One of the biggest reasons was there needs to be a little refactoring to add them. Bake this time into a new feature. If we go back to my backdoor example. Sure, I could have waited a few years to replace it. But I knew taking care of it now would be a lot cheaper. It didn’t feel that way when buying the new door. But it was a new door not replacing anything else the water was rotting away.
Frameworks are another easy way to keep up with your apps. Know what you use. Is it the latest? If not, why? I worked for a company as a build coordinator, what you would call DevOps today. Besides being a total asshole on code reviews and unit test coverage. I kept up with dependencies in our app. I had releases dedicated on updating to the latest .NET Framework. To a point where it was part of what we delivered on a release.
Where this becomes difficult at times in full on refactoring of an application. This is hard for any team or company for that matter to swallow. But if we keep small pushes going through this is easier than a full on refactor. Let’s take something like logging. Is it all centralize to one framework? If not, what would it take to do so? Is it too much to do in one sprint? Then how can we break it up to smaller chunks for us to add this in for the next five sprints? If your team is taking on 5 user stories of enhancements make one of them modernization focused.
This culture change isn’t something that needs to start with either side. So, management or developers can start it but both sides have to be bought in to the idea. If one person isn’t bought in, then this isn’t going to work. A single product owner not wanting to give up some time for unit test causes friction. Kind of like my wife asking me why we need a new back door. All in all, taking small steps to modernize is a lot easier for companies to address. Creating a culture of modernization is much harder. You don’t need to be moving to the cloud to start this, you can start this now. Again, starting small and getting buy in, can instill a culture of modernization. Enable developer to take small steps to modernize. Realize the cost is about the same but you start seeing the value out of it now rather than after a huge refactor.