The desire to write grows with writing.

On the eve of the new year of 2011, I created a wordpress account with a resolution that I would write 50 blogs in 2011 which means almost a blog a week. I thought it would be a cakewalk and I would easily put 50 blogs in few months. I was wrong, my first blog took me the entire weekend. The same topic which was so easy to have a chat with friends was so difficult to put into words. My mind wandered around, thoughts and words were never coherent. When I finished the first blog I realized that it is not going to be easy, hence started putting up my thoughts whenever they occur in a sticky or draft it in wordpress blog. The thought of writing something had been lingering in my mind from the school days, so it was fairly easy for me to find the first few topics.

Every week the time taken for me to finish my blogs reduced and I found it fairly easy to finish the blogs without much distractions. I had chosen to write only in two categories – Developer related and workplace improvement related. After around 15 blogs, I started running out of topics which hinted me that I had to catch up on reading and technical experiments. It pushed me in a position to optimize my workday such a way that I can make time for reading and work on stuff not related to projects. The optimizations in turn forced me to have healthy eating habits and set into a routine which became habitual.

Old habits die hard and new habits are hard to sustain, at least when they good habits and the returns are not immediate and visible. I had second thoughts to discontinue my writing as I grew tired of the new cycle I got into. At this point I thought the best way to keep me going was to advertise out to the world that I am writing and expect me to write once in a week and publicized my blogs through twitter, facebook, linkedin, thoughtworks etc. This part worked wonders by introducing me to many new people from all over the world and people started pointing out to more reading material, provided feedback and sometimes critical feedback. The amount of exposure received provided an enjoyable tension to keep on writing. My writing improved to point that I was able to write the first draft in 30 minutes and it occupied less and less of my time every week.

You can’t change just one part of the system without affecting others.

My lifestyle has changed in the last year such that I read more than I have ever been doing, I spend quality time at home and office, I also had good amount of time to pursue my hobbies and keep myself fit. All these without a hint of burn out. I am very surprised how a seemingly simple resolution like 50 blogs in a year and doing whatever it takes to accomplish that, had a huge positive impact on my lifestyle.

Go ahead and make a resolution and stick to it to see the magic it does.

_____________________________________________________________________________________

Image: Simon Howden / FreeDigitalPhotos.net

Image: renjith krishnan / FreeDigitalPhotos.net

Kepler’s perseverance

Carl Sagan’s book Cosmos explains a bit about how some people in the 15 & 1600s have spent a good deal of time trying to find out the truths about Earth’s position in the cosmos. Kepler is one of them who have contributed significantly to our current understanding with help of years of observation about the night sky and lots of mathematics. Kepler did not have enough resources to get hold of good telescopes so he had to rely on readings from people who had access to it. Tycho was one of the few who had access to good telescopes and made detailed observations. Kepler had a great interest in Tycho’s mars observation, Tycho was impressed by Kepler’s work still guarded all his data because of the work he put in. Kepler left Tycho after it was becoming increasingly difficult to get data from Tycho to test his theory and trouble to get into a formal agreement to work with each other.

Some time later Tycho’s unexpected demise landed Kepler the task of finishing what has been left by Tycho. Kepler began testing his theory of earth going through circular orbit around the Sun and backed that with the date of Tycho’s observation of Mars. At one point he observed that his theory fit perfectly fine except a couple of reading which were off by 8 minutes of arc in angular degree. 8 minutes of arc deviation in a 90 degree observation field is just 0.15% deviation.

Kepler not only had faith in Tycho’s observations but also had the courage to question his assumptions even though the deviation was only 0.15%. Kepler felt that his fascination with the circle was a delusion and he abandoned his circular orbit theory and went for other curvy shapes. Eventually when he came up with an elliptical orbit with Sun at one of its foci, all the data from the observation and theory matched perfectly fine. He could have easily patched up 0.15% deviation and closed his work, but the trust he had on his fellow researcher’s data and his perseverance to find the right brought in a reformation in astronomy. His laws of planetary motion still hold good.

Many at times in school I have succumbed to the temptations of approximating or convincing myself that others could be wrong and prematurely ended feeding my curious brain. This definitely has delayed many things which I could have understood better had I spent enough time on it. If Kepler could question 0.15% deviation and come up with a revolution, then we have ample opportunities to break paths every day.

Below is Kepler’s quote

Divine benevolence has bestowed the most diligent of observers, Tycho Brahe, from whose observations this eight-minute error of Ptolemy’s in regard to Mars is deduced, it is fitting that we accept with grateful minds this gift from God, and both acknowledge and build upon it. If I had believed that the we could ignore these eight minutes (0.15% deviation), I would have patched up my work accordingly. But, since it is not permissible to ignore, those eight minutes pointed the road to a complete reformation in astronomy.

More Kepler’s quotes here

Image: Idea go / FreeDigitalPhotos.net

Lombok & LambdaJ

Working with Java has been almost inevitable for me. Many clients who have their projects written in Java and in the near future not going in for any rewrite will stick with them. Several Java frameworks and libraries have made heavy lifting simple and made software development more predictable and easy to code.

Some frameworks mandate the use of getters and setters to work with Java beans which make the code look bloated. It was also pointless to get these getters and setters covered in tests and they end up showing as uncovered. We have to configure to avoid these methods from showing up in the coverage metrics. Also the presence of getters tempts a developer to make use of it as a backdoor and get some quick fix done.

Lombok came to the rescue, with simple annotations it inserts the necessary getters, setters, constructors, equals, hashcode. These methods are added at the compile time which make the code look clean on the editor. Eclipse and Idea have plugins to support injected methods (Though it would be great if we do not rely on hand written code to make use of these generated methods. We should leave them only for the consumption of frameworks or libraries which demand getters and setters).

The other problem I routinely faced was the frequency at which we handle and manipulate collections. LambdaJ provides a pseudo functional way to work with collections. It makes the code very terse and when used in combination with Lombok on domain objects, Java code looks super neat with few hand written necessary methods while all the boiler plating is left to the compiler.

Lombok and LamdbaJ together will make working with Java code more coder friendly.

Numbers and Metrics, what do they do?

In the movie Soldier, the soldiers are humans selected at birth and conditioned to obey orders and win battles. The antagonist comes up with genetically engineered super soldiers who are better in every single metric like long runs, fast climbs, weight lifting and many more. As a final test the protagonist is put up for a fight against a genetically engineered soldier, loses the combat. He is thrown away into another planet  along with the trash and two others who died in the combat against the mutant soldiers. He ends up in a new planet and gets taken care by the people there. The antagonist tests the mutants’ battle skills at the new planet, which brings them to fight against the hero who kills them all in a real battle field scenario and takes over the ship.

Metrics of software development and developers if not used at the right level, will start giving us an illusion on control. They are more like a guideline which can hint at the presence of a problem rather than an assertion of well being. In agile projects velocity is one metric which is very visible to the client, what was once to help in planning becomes an important metric in presentations; so are cycle times, bugs per story, lines of code etc. The illusion created by strictly following all metrics taking actions based only on that will lead to two problems.

  • It will encourage work to be based on the metrics, like legally right but wrong in principle.
  • It will shift focus away from mainstream work resulting in loss/delay of work.
As far as I have observed, when metrics are limited as tools for diagnoses and planning they have helped a lot improve the progress by allowing the individuals to reflect and retrospect; take small corrective steps. When a single person takes a strong corrective actions on the course of the project based on the metrics then success was a stretch goal.

Image: Michelle Meiklejohn / FreeDigitalPhotos.net

Why you should not have effective development practices

  • Work never stops coming to you everyday, forces visibility into everyday’s work.
  • Deployment to production is too easy and predictable, no chance of heroism.
  • No one person holds the information, every one knows every thing; no one is indispensable.
  • Complexities are sorted out earlier, it is difficult to get into a messy situation and raise like phoenix from the ashes.
  • Creates self managed teams, making the lead positions redundant unless hands on.
  • Makes you assess, try and embrace new technologies; prevents you from becoming an expert in Z platform.