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.

Often I come across questions like

  • Will agile help me to reduce bugs?
  • Will agile help me to reduce costs?
  • If I use agile will I be able to improve predictability?
  • Is it agile to have unit tests?

The list is endless, these questions come from the teams which undergoes transformation from waterfall and they like to have a term for their new way of working. The very first project in my career, our team delivered to production every week. Everyone in the team were developers but wore different hats on different days. Each of us learnt to write unit tests, build and release to different environments, monitor production systems, automate functional tests in a team of 10. People coming in and out of the team was always breezy, there were no dependencies on one single person. I would say that was one of the ideal projects I have ever worked.

What process or methodology did we follow? “Do what makes sense!” Yes, that was the only thing which was told to me the first day I joined the team. No process, no compliance; only sensible things. Now if I replace “Agile” with “Common sense” will I get the answers to the questions?

  • Will agile common sense help me to reduce bugs?
  • Will agile common sense help me to reduce costs?
  • If I use agile common sense will I be able to improve predictability?
  • Is it agile common sense to have unit tests?

We got so much used to having process and methods as a safety net and rely on work instructions created out of those to execute day to day work. In my observation it is only some sensible practices which are fine tuned to the present scenario works. There is no substitute for common sense.