Change conservative but be not an conservative – or how to update your software library or doing an migration

Hello,

today I updated one of my projects to the next bigger Rails version 4.1 and the newest stable Ruby version as well. My unit tests are now 20% faster and I am happy that I could done the update with only minor code modifications. Now it was paying out that I replaced functions that are marked as deprecated in the past. A quite big coverage of the unit tests are giving some security that there are no big issues I missed. Also a functional testing was showing no problems. This is the point where I was thinking about frequent changes and be up-to-date. I am quite a conservative thinker when it comes to software. There are many new languages showing up and new frameworks. Ever day a new plugin is provided for this and that. But stop. Let us skip this party. What really worked out for me is not to use the newest stuff and here is why and what I want to recommend to you.

Stick to your language…

…for now until you really need to switch to another one.

A lot of new languages are promising that everything is much easier. Reality is that it is always a question of complexity. How complex is the task you want to use software for and how much complexity is the language having? I want say multiply booth complexities and make a call. The static factor in this equation is the task. Because of this only the complexity of the language is responsible how big the total complexity is. I would recommend to stick to your language if the complexity of it is less smaller then the language you are thinking of trying. That is why I really like Rails, the complexity is not very high and it is fast enough as well for webpages.

 

Use common extensions…

… and ask yourself how many new plugins and small extensions we see coming out. I experienced that especially younger developers tend to like all the new stuff that is coming out. Most of the time they just like to do fancy things. At the end of the day what counts is to get things done and new extensions are a trap. Of course you can tell your boss: “Hey I use the newest thing out there.”   Fine for you and your ego and now show me that I can use it…silence. When there is a DJ contest you can easily say what Dj is a youngster: The one that plays only records that are new. Most of the time they will not win. Same with software. Do not be afraid to stick to a stable system without huge changes everytime. Update, upgrade or migrate only if there is a reason!

Make jumps not steps…

…and have a mid-term vision of your product. What is good today will be still good in one day and the one after. Most of the time you are not forced to update all the time. Your software should be written and designed in a way that is not using all edge cases of the language if it is not necessary. Because of this updates are most of the time not resulting in full week re-factoring.  Especially web languages, frameworks and extensions having fast iteration cycles for software updates. If you do not miss functionalities or there are major bugs and security issues use what you have and create things. If you update there is more than one place to apply changes in new API’s or function parameters. Impacts can much easier being detected if you skip some updates. As example you can think of an issue that occurs only in rare conditions because of a library update. If you stick to a limited amount of extensions you will use the same functionalities of this library over and over again. Because of this the chances are higher to have a big impact but the risk of not seeing it is much smaller. This is of course an trade off. If you have an minor issue with less impact in and production system that stays hidden, it can be much worse then an bigger one you will most probably catch in your development environment. Minor issues can lead to let us call it strange side effects you will never be able to reproduce.

Conservitive…

…or not. Decide on your own what way to go.The software industry looks like changing fast, but if you have the bigger picture in mind you see that things have not being changed sooo much. There are other industries right now where is much more motion going on.  Also please do not label yourself as a conservative only because you stick to thinks. More expirienced people used to call it clarity. René