Gedankenexperiment

Einstein explained special relativity to the masses using thought experiments called Gedankenexperiment in German, few examples are here. The kind of explanations given through that experiment was quite easy to understand and relate to. The key point in the experiment was the absurd and almost impossible situations imagined. He revealed that time is just a difference between observed sequence of events and space is the distance between two events that are observed to occur at the same time. Nothing is uniform or static, everything is relative to something.

The reason I brought up Gedankenexperiment is that it should be a key skill developed in every individual right from the childhood. The laboratory experiments are too expensive, needs caution and sometimes impossible to perform. This applies to every field of learning, that is the reason people teach object oriented programming with inanimate objects but give a behavior to it as if it was a living thing. These experiments help grasp the theory much faster and explore the entire lengths of possibilities which in turn helps to apply well when it comes to implementation.

I have observed that many of my trainers were content centric and relied on effective brain dumps. Few of the exceptional trainers really kindled the curiosity and made me explore the roots of a topic and then the thought experiments on the way to the college did the rest. Some of my key learnings were strongly supported by the thought experiments.

Below are some of the points I found useful while learning and teaching

  • Create a picture in the listener’s mind. Visualizations are key to imagination, have a look at a very simple animation done by ‘The Inconvenient truth’ team. A kid can so easily get the idea about greenhouse gases.
  • Kindle the curiosity by planting an unfinished thought experiment in the learner’s mind. I received a lesson in chemistry where there was clear depiction of  how covalent bonds occur between atoms (after explaining the shells and inert gases) such that they enter a steadier state and then the teacher pressed the class to find out another way for atoms to steadier state. We found it and all the teacher had to do was to mention what that kind of bond is called.
  • Encourage silly questions, they trigger the best imaginations.
  • Times change, visualization tools change, keep adapting. Prezi, GoAnimate, Visual Thesaurus  are some of the few which can help in the modern classroom.
  • Time to think, this is as important as the time to teach. Crunching in more sessions and home work can eat away the time without providing enough value.
If you get a chance to teach, try it more visually such a way that it promotes Gedankenexperiment and check the results it brings.

Image: Worakit Sirijinda / FreeDigitalPhotos.net

Hardware inflation

Just a decade ago the amount of memory for a typical desktop was in the lower 3 digits of MB. 15 years before it was in 2 digits of MB. Yet we had email clients, browsers, word processors, spread sheets, image processors. I read about one financial analyst’s perspective about the inflation and taxation in America. It is such that the purchasing power of money in your hand after taxes is significantly lower than the inflation adjusted money’s purchasing power in 1950. For example; if someone sells her house for in 1950 and then the amount of purchasing power that money had after the tax was significantly higher than what it could do in 2012. The direct and indirect taxes have risen and the inflation has masked the effects of it.

While writing this, I am doing so in a machine which has 8GB RAM, 500GB hard disk and i7 processor. That is a 250 times increase in my computing power than 15 years ago. Though the frequency of the crashes I encounter has reduced to a great deal, there are still crashes and non responding apps which annoys at times. I have observed that the thought “memory has become cheaper than efficient programs” is prevalent for most of the applications barring a few which demand performance. Take a look at the hardware of the Apollo Guidance Computer. We were able to land on the moon with that piece of hardware, but right now even with such excellent hardware we many times end up with non responsive websites. With a workload of just above 1000 concurrent users some web sites can easily choke the best hardware they are running in.

Is there a way that the generous doses of memory and computing power could be used effectively or will be waiting for something like water scarcity or environment pollution to happen to learn to use the hardwares efficiently?

Is software development only about translation of requirements into working software?

Malcolm Gladwell’s talk on Norden Bombsight shows how anyone can get obsessed with technology and accuracy but miss achieving the objective. The bombsight was invented to accurately drop the bomb on target so that lesser amount of people are killed and war comes to end quicker. The military spent a lot of money to develop and use it, and went to the extent of using the technology even to bomb hiroshima where accuracy was not necessary due to the destructive power. Wars lasted longer and the objective (bring the war to end with less loss of life) of bombsight was never achieved even though billions were spent on its development.

Software technology choices are similar, there are lots of new tools and many platforms that help us rapidly develop applications. The obsession to use the latest, cutting edge technology is so great that people take pride in showcasing their tool list once the project is delivered. The illusion created by the power of the tools is such that it gives a sense of great ability that we will be able to translate any requirement from the client into software in no time. Someone somewhere said that the computer can speed up the errors committed by humans, it is true especially when we concentrate on technology and automation more and more into every day’s work with less and less effort to question the requirements.

Subconsciously every one is concentrating on getting things done. Definition of done is often not put in the right way, if success of the software project in every one’s mind is to release before New year then people the actions and choices will be purely on getting out before New year. The emphasis on getting the project out faster would have eventually masked why the software was needed in the first place. Information technology which is supposed to help process information might merely be helpful in creating data capture tools because no technology can effectively capture requirements, anything which is captured often end up being lost in the translation.

Getting the definition of done right involves people in every discipline to work closely together. A project’s definition of done would be to help each individual get more work done with less exertion through the new software but instead of defining that the business owner might give a laundry list of things for the developers. A wannabe marathon runner training for strong legs is different from training for marathon runs. Training for strong legs alone will not help in running a marathon but it is one of the by-product of marathon training. Often requirements are just by-products or snapshots of a what an end product is going to be in a complex system. As far as I have observed successful developers are the ones who get as much information as possible about the system and put in an equal effort in getting a working software out without translation loss.

A helpful link given to me by one of the peers http://taotwit.posterous.com/vpec-t-a-thinking-framework-presented-to-scio

Image: jscreationzs / FreeDigitalPhotos.net