Friday, May 19, 2006

Back to work

It has been a nostalgic experience to get back to work (though as an intern now). The first day in IBM involved completing joining procedures, getting to my cubicle, getting the desktop PC ready, installing my favourite software as soon as I can and then start chatting and web-surfing. At Netscaler, my first day did not involve a lot of joining procedures, but mentally, it was similar - in an unknown place with unknown people and most important, in an unknown work culture. And then, in both cases, followed up with reading the product documentation for the rest of the week. And thankfully now, I don't need to setup a development system - that was a major headache then !

Looking back, it is important that I not repeat the mistakes I made at my previous job, and God alone knows, I made quite a few.

I've been traditionally slow to get off the starting blocks, and in my work, that was true as well, for I went through a very difficult initial period where I was short of confidence and a sense of purpose. And most of the problems I faced were of my own creation. Given my performance and commitment in my 1st year at SJMSOM, I'm afraid I'm living in my past without learning any lessons from it. So, that means two big mistakes: the first being that I'm not living in the present; and second, that I've not learnt anything from my past.

Next, the concept of work-life balance was shot to hell. I loved my work - most of it anyway, barring the odd times where I needed to contribute material for man pages - and I loved it dearly and most of the time, I gave it my maximum. I didn't stop at just loving it, I was obsessed with it - so obsessed that I was constantly thinking about it during day and night, even in my dreams. In fact, when I quit my job and joined SJMSOM, my biggest problem was not home-sickness, it was work-sickness.

And perhaps as a consequence, my work hours started going up. Flexi-time is great if you are used to rigours of fixed lecture hours in college (and especially for a student of PESIT), but for one who is yet to understand the importance of self-discipline, it is a curse. I did not know how to efficiently make use of my time, and consequently, my work hours increased gradually and within a few months, I was regularly logging around 14 hours per day, plus a few hours on Saturdays too. I knew it was a bad habit, but at first, I didn't realize exactly why it was so. A little bit of introspection gave me a clue - I used to think that since I stayed late, I could always do work later, and this ensured that I wasted a lot of time and pushed productive work to the end of the day. And when I found I could not complete it, I postponed my departure also, and gradually, my performance and productivity detereorated. Of course, I'm simplifying a lot of things, and there were a lot of factors, but the crux of the problems I faced was in me, and the solutions had to be found within myself. Once I recognized the problem, I cut down my work-time to 10-11 hours, and eliminated all unnecessary work. I could do more work in 10 hours now than I was doing before in 14 hours :)

The next problem was quality. In college, my mentality was to pass exams and not do quality work. Therefore, I wasn't unduly perturbed by the completeness of the software, but only by the one use-case which we were sure would work, and I would rehearse the steps, and demo the exact same sequence to the lecturer. That wasn't so good at my job ... for the first time, I was expected to write code that would be complete and correct. There were no excuses for bugs. At first, in my typical arrogance, I didn't even do unit-testing - I thought that after all , I am such a good programmer, there won't be bugs anyway, so what is the point in unit-testing ? My pride went crashing down (and plunged into the depths) when I checked in my first major project, the GSLB configuration re-write. BUG10827 (how can I forget that ... ever ?) became my constant companion in my worries and ultimately, the cause for a turnaround. I initially hated the work, but then started loving it and finally, transformed my attitude so much that I wanted to give my best, and in some ways, achieve that too. It was necessary since the re-write proved unexpectedly complex, and only my sense of idealism kept me on the track during the frustrating times.

Sometimes I found I wasn't all that bad. One thing that served me well in my job was my habit of questioning everything and not accepting anything as a given. It made me come across as agressive and arrogant especially if the target was other people's code and the test cases of the DevTest(QA), but I always felt there was a better way of doing something, though not necessarily that I could do it. It also made me develop Keep Alive Scripting (KAS) as an alternate way of scriptable monitoring and check it into the repository without telling anyone :) And then, I dared to insist that it become the default way, because I was convinced that it truly was a better way.

Another, was daring to use Linux for development. I found that Windows wasn't all that great a development platform, and emacs+cscope was good enough for kernel programming and I stuck to it for 2 years. I was a pioneer in using Linux in the Bangalore office, and seeing my example, others too started using it. Linux also gave free Apache and BIND servers, lots of networking tools and iptables firewall that I used for my development.

Most importantly, I discovered a few good things within myself - my attitude and my idealism. Without that, a difficult job would have been impossible and with it, it proved to be an enlightening and transformational one.

0 Comments:

Post a Comment

Links to this post:

Create a Link

<< Home