Friday, January 23, 2015

Last Day at Global Scholar

Many people do not believe chaos theory, which says that, there is a relation between the sound of the wings of a butterfly and an earthquake. Many people think Twitter messages like "Bought a TT table at office. Have to practice now. #Something" are useless. But, that message by Manikandan Sundaram has changed the direction of my life (and others indirectly). Only difference was, #Something was #Globalscholar. Had he not posted those messages, I would not have known about this company, and I might not even have come to Chennai.

It was nice to have half an hour of discussion on spirituality and Krishna Consciousness in 1.5 hours interview with Muru Subramani.

After studying Computer Science for 5 years and having experience in the software industry for little less than 8 years, when somebody proves that, I cannot code and I don't even know how to read spec, obviously, I lose my temper. When Balaji Dhinakaran and Subha Anand were proving me that, I cannot code, I lost my temper many times. With the help of Guruprasath Krishnamurthy, Hariprasad Vasudevan and Arvindh Kumar, I finished that feature somehow, which nobody used ever since. [Two years later, I realized that nobody is using, after seeing a hard coded connection string (by a great developer) which points to a server which is accessible only from that building.]

After that Kiran Kumar guided me and designed every feature that I had developed since then (till he left).

When I was working on Exam Reports, Saurabh Sarda developed UI, Subburaman and Prince Samuel wrote SQL, and Ganesh Selvaraj, Venkatramani and Venkatesh developed RDLs. Till now, I did not know what I did during the development phase of that feature.

During testing phase, When Revathi Manohar said, I fix bugs very fast, immediately, I climbed drumstick tree (to fall and never to recover). When Sudha Ganeshan, who had blind faith on me, started testing my code, my work became little easy.

Premkumar Palya used to ask me to join QA during the stabilization of every release (when I work from QA area).

During Performance Optimization, when the Vice President (Subajyothi Sanyal) was sitting infront of the system, and investigating with the inputs from then Director, why the queries were taking long time, the only thing that I did was, staring at them.

When couple of people thanked me with little emotion for the help that I had done in their work, I could not understand why they were so much emotional. Later, I thought, probably, I was the only one who did not have any work.

I was very fortunate to work with goddess Sridevi Ramasamy, about whom I will try to write separately. If she ever becomes god woman, I will seriously consider retiring and joining her ashram.

Till I started working with Deiva Shanmugam, there was hardly any time when I talked to a full time employee for more than 5 mins on non-work related topics (barring the introductory period).

Ramnath Krishnamurthy, who wrote code faster than the speed at which I could review the same, wrote lot of code, gave me the shelveset and went on leave. I simply checked in the code with my name. ;)

Once, when I was reviewing Srividhya Srinivasan's code, I seriously felt like asking whether this code was written by Guru. But, I felt it would seriously offend her and did not ask. Later, I thought, if she has a big heart, she can take it as a compliment. [By the way, this was after both got married to each other.]

Till I started sitting next to Balakrishna Jammula, there was hardly any news that I came to know before it was announced officially. After he left, Srikanth Eadara took his place and role.

For those who say that, I am soft-spoken or silent, should have listened to my discussions with Rajesh Kannan on non-work related topics. Of course, for work related topics, we both are dead silent.

Whenever I discuss with Jeevanram Kasiviswanathan, I feel happy that, my experience is of some use to someone.

When we were starting Automation Testing with Selenium, Balakrishnan Soundararajan told me that, he was happy that, he was going to learn Selenium. I told him that, I would make sure that, he won't learn anything in Selenium. Eventhough, I was not successful in that, I had done my best in that direction.

I learnt from Lakshmi Satish that, interview is not about saying yes/no for a given role, but, it is about understanding how can we use that person, if we are going to recruit.

Great offers found by Albert Selvaraj saved me lot of money, especially on food.

Thanks to Mahesh Tangella and Janani Vijayan for the laptops, and Vasudevan Murugesan for the Wireless Adapter.

It was professionally very embarrassing, when Vamsidhara Reddy, with whom I worked for very brief time, told about my work more than me in an interview. Of course, personally, it was not at all embarrassing.

Being a hard core fan of S.P.Balasubrahmanyam, I generally don't listen to others' songs. But, I want M.K.Balaji to become a great singer, so that I can tell others that I fixed three bugs raised by the top singer.

It was nice working with Dale Bronk, Senthilrajan Egarajan, Mustafa Husain, Sateesh Naramsetti, Rajaji Kare, Manivannan Murugesan, Suresh Goduguluru Lakshmi, Charulatha Shankar, Harikishore Reddy, Uday Kumar Pogula, Kiran Duvvuru, Balaji TB and many others whom I missed to mention.

I would have been more happy, if people were little more professional. Of course, I might have topped the list of unprofessionals. If I had done any mistake, I am ready to do almost anything to make it as if that mistake did not happen in the first place. But, if it is not my mistake, but if it is (extreme) difference of opinion, then there is nothing much that I can do in this life.

Tuesday, January 20, 2015

Software Performance Improvement

Whenever anybody asks me to improve performance of any software, typically, I say I cannot do it.

But, what I do is,

Clean the dirty code.
Remove the redundant code.
Refactor at method level to make it more clean and simple.
Refactor at class level to make it more clean and simple.
Make the design more clean and simple.
Change the design to make it more simple.

If this improves the performance, then well and good. After all this, if the performance is still not improved to the expectation, then I would say, this is the limit. If you want better performance, get better hardware or get more servers.

For performance improvement, if anybody does any of the following, I try my best to stop them from doing it.

Any change to the code/design which reduces the simplicity of the code/design. This is one of the biggest grey areas and it is mainly trade-off. How much are we ready to sacrifice the simplicity/cleanliness of the code for how much performance. Typically, I am always on the extreme side of clean code/design.

To improve the performance of some functionality, which is there in the performance test suite, reducing the performance of other features which are not there in the test suite.

Not caring about the functionality which is having very bad performance, since it is not there in the performance suite, and caring about only the features that are there in the performance suite to improve the numbers.


If anybody gives me clean code with clean design, and asks me to improve the performance, then they would say that, I am the most incompetent developer that they have ever seen.