When beginning to work out for the first time, the first exercise I tried to do was to use the dumbbells to build up my arms. That is when the instructor caught hold of what I am doing and explained the difference between useful core strength and body building. I should first look to build my core strength before I could bulk up the muscles and flex it, also there is a risk of muscle detachment or broken bones if done wrong. My idea of building up muscles to flex was wrong and counter productive if taken the most obvious and easy route.

The scenario is also similar when I look at the choice of technologies when choosing to implement a new software project. The technology choices are often a trade off after considering so many concerns, some of the concerns may not even be technical in nature. If we chose a technology only because it is cutting edge or the latest one, then once the development hands over to maintenance; they may face lots of trouble because of the choice made.

The choice of technology should never be something that is analogous to flexing the muscles. It is always context specific, if the project’s main goal is to show case technical prowess and the software may be replaced within a short period of time with another one written from scratch; then there is no problem to use the latest and state of the art technologies so that we can flex our muscles.

There are too many questions to ask ourselves and consider the trade offs before we settle on technology decision. We have to consider maintenance team’s capability, fault tolerance, performance, life time of the software, scaling, frequency of maintenance and enhancement releases, which country and kind of internet connections will users use. There is no one size fits all or new kid in the block to address all the concerns at once, the choice is always a trade off.

Image courtesy of clker.com | Clipart

Are we going in circles? We first had a single large computer, then we had multiple terminals connected to it and used it. Later personal computers helped breakaway from large ones and dumb terminals. We were able to work in our computers all day without internet, now computers without internet is like fish without water. People worked in large open floors then cubicles gained popularity and again open plan offices were used; now people are debating whether open plan offices are beneficial or not.

Vacillate

Why do we vacillate? If you have heard or read the “The retrospective prime directive“, the answer lies there. We are dealing with increasingly large systems with a cause and effect so interlinked and having delayed feedback that we will only be able to realize in hindsight. As times change so do the environment and the abilities, so what worked well few years back is questionable for a current situation. So the best is to keep looking for the right fit for the given condition and it is not vacillation, it is just we are getting tuned to current state of the system.

The adjustment to the current state looks like we keep vacillating between the choices, but we are not vacillating. We are just adapting.

Image courtesy of cooldesign / FreeDigitalPhotos.net

Michael Crichton in his novel Timeline sets the tone for a science fiction by illustrating the difference between the years 1999 to 1899. Definitely people would have laughed if we had mentioned in 1899 that we could cure typhoid by pills, send photographs through air, go halfway across the world in less than a day. It has been more than 10 years since I read that book and now I see that there is a drastic difference in the technology available between 1999 and now. My mobile phone now has far more computing power, memory and screen resolution than the desktop computer I had in 1999.

Engine

Technology advances at such a pace that now we can consider a new generation is available within a few years. Which means that if I am doing something one way now, a few years later I have to change my opinion and find a another way that can make my life easy. What I regard as impractical and expensive now may turn out to be economical and practical. A very simple example is how a smart phone has changed the way I push my day, many recent advancements have gotten into the phone that I hardly need my computer other than programming or creating content. I was thinking it was expensive and impractical to own such a phone few years ago, but that changed completely after I had started using one and the amount of time I was able to save as a result of that.

Many of the advancements in technology are not disruptive, so people don’t easily notice that something new can help them ease their work. Also we tend to stick into our comfort zone and resort to micro optimisations than look outside of that zone frequently for new. One such thing is the level of automation that can go into software development irrespective of the platform/language/tools used. Gone are the days when the automation tools were unreliable, fragile, way too many false positives or needs too much time & effort investment. Ways to automate repetitive tasks have increased in number a great deal. Name the technology and platform, you get the appropriate tools to do that. Most of us who would have evaluated automation at some point of time and would have discarded options as expensive or infeasible but failed to revisit the decision in the next 6-12 months. This will lead to a preconceived notion that we have to live with lots of manual work while in reality it is not, often an external person would be needed to point us to the possibilities the new changing world is to offer. 

The things that are positively impacted by technology are throughput and cycle times. We should have a strong mechanism to periodically question the throughput and cycle times and keep looking for alternatives. Inputs could come from anywhere, any domain, any technology. I recently happened to watch Bret Victor’s talk, it can be found here. He says that when people were not certain on how to do something then they come up with many ways of doing things, but when they find something works then they stick to it without looking for further alternatives.

If we use only tried and tested methods, then may be we would still be using only horse and bullock carts.

Image courtesy of [olovedog] / FreeDigitalPhotos.net.