5/16/2006

Teamwork

Go Mavs!! You are kicking some ass now! Dallas is surely proud of you :)

Dirk, Nash, Finley, Walker were all a part of Mavs not long ago. All of them, champions in their own right! The way they are playing now gives one a feeling that they would make an invincible combination if they were all in one team. But well, that is surely not true as history is evidence for this fact! They worked well, but were never invincible. Nash is creating history with Phoenix, Dirk with Dallas. Finley and Walker are playing excellently for Spurs and Heat respectively and all these guys apart from Finley are a part of the conference finals (Finley came very close too :)). Dallas never reached the finals with all of them together!
If you look at the current Dallas team, except for Dirk and Van Excel, there is hardly any other known face (this is IMHO)!, but success speaks for itself. Everybody surely knows them now...One fact stared at me when I saw this transformation of a not so excellent team to an extraordinary one!

INDIVIDUAL BRILLIANCE DOESN't win tournaments. It can surely win quite a few games, but never the whole tournament. Same holds true for a war or our own project teams. We might have a bunch of 'excellent individuals' in a team, but that team need not be the most successful one. In fact, in most of the cases it is not. A team is successful when there is teamwork, when the teamplayers are not selfish and when there is good camaraderie, and this is despite the fact that most/all of the team members might be just ordinary...Normal individuals become brilliant in a good team too ...

Teamwork makes normal individuals blossom into stars and makes a team work :). So, why not strive for the team rather than for ourselves!

5/14/2006

V - lead !

My mind wandered today thinking about managers, leadership and how it applies to our world and particularly the world of software I am associated with.
I read about the Hitler's, Mussolini's, Stalins, Lenins, Gandhis and learnt that some time in total isolation could do wonders for a person. (Many of these leaders were incarcerated..I want to be a good leader, but well can avoid being jailed :)). All these leaders had different ideologies, but what tied them together was their conviction and their unadulterated dedication towards the goal they set out for themselves and the people following them. They had the goal and the vision to take them there (The path leading to the goal)!

But, leadership although it emanates from an individual is a collective effort. Leaders cannot follow through with their committments if the followers do not show diligence and diligence can only built by collective ownership. You do it when you own it! Responsibility is something that can motivate people think about great things and responsibility with power makes them do it. When leaders share their burden with the others on their team, the journey is effortless..

Leaders always learn from things big and small and nature I feel is one of our biggest teachers! Ever looked at flocks of birds flying in the sky? I am sure that is a common sight every evening. There is something else that always happens. They always fly in a "V-pattern"! And this is because of a reason.


Scientists discovered that the heart rates of the birds were lower when flying in a V than when flying solo. Migrating birds use the "squadron" formation because it allows them to glide more often, conserving energy. The aerodynamic V shape reduces the air resistance, allowing the geese to cover longer distances. In fact, a flock of geese can fly 70 percent farther by adopting the V shape rather than flying in isolation.

The V formation may offer other benefits as well. Each bird has an unobstructed field of vision, allowing flock members to see each other and communicate while in flight.
The goose at the head of the V is not necessarily the leader of the flock. Apparently, geese take turns leading. As one bird tires, it drops to the back of the formation and another takes its place. Now that's what we call teamwork with a vision in sight and collective ownership!

Humans, like geese, were created to work together and to support one another. When we encourage each other and support our leaders we can accomplish amazing things — much more than trying to work alone. Learn from nature and contribute towards it! I am off for my cup of tea :)

5/09/2006

Software Development, an Art!

I still remember a few days during my childhood when I was at the crossroads of my life , standing at a place where I could take one of two streams of education, SCIENCE or ART. Art in my sense was the more gifted and I had a lot of admiration for the artisans. But, my parents pushed me into SCIENCE, I didn't have a big opinion myself so gave into it, but there was this one feeling within that always said, "Maybe I want Art?" . That lingering feeling haunted me till like a few days back when I visited a museum. A feeling dawned upon me that day and my perspective changed.

As I went from one magnificent masterpiece of painting, sculpture, or architecture to another, I began to feel that I was looking at something very familiar. Their structure, surroundings, presentation, just about everything reminded me of something. It dawned on me that there is a strong connection between these great accomplishments of the past and the few great software systems we have today. I'm talking about masterpieces of coding that you can't help admiring for their style, structure, and concise expression of a solution to a complex problem. We've all seen such systems; some of us may be lucky enough to have written one or more.

I'm not the first person to relate our craft to that of past masters. In his excellent book, Software Craftsmanship: The New Imperative, Pete McBreen compares developers to craftsmen of the great Medieval guilds, classifying them as either master craftsmen, journeymen, or apprentices, each with a unique role to play in creating an artifact. This analogy is a great one, as far as it goes but surely there is more to it!

Art can be of many forms - beautiful, structurally brilliant, clever, cleverly useful. Code is the same way too! I remember pieces of code that were so well-arranged/orchestrated, almost like poetry. I know pieces of codes that could do a 100 lines worth of code in 1 and I know pieces of code that are very clever (for instance Java!, can run anywhere)! My heart felt the same way when I looked at these marvels in software. A software developer is an artist !
There are many other analogies that we can see .. We have "architects" in both software and art. Both artists and software technicians require tools to work with. Both art and software start off with a blue print/ spec. Comments make things clearer in both art and science (:) :) :)) and as in a great work of art, the parts interact subtly to form an impressive whole -- in this case, an amazing portrait of effective software development.

Btw, there is one last funny thing that I observed. The reason why Indians make such good software technicians might be the rich art and cultural heritage that comes along with them !!!

5/07/2006

AJAX'ed

AJAX is one of those concepts that turned into a rage after people started giving it a name. It was there in the 90's, people used it in different forms, but it's visibility and recognition as an "all encompassing" solution has been very recent(Well, in 2005 :)). It is funny to see it rise to such heavenly standards because it has always been there in the form of invisible i-Frames, right from the 90's. Popularity can really do wonders. It earned a million dollars to the guy that came up with themilliondollarhomepage.com. People really bought a pixel of web space for a dollar! Nothing can beat that! Acceptance, Adoption and Benefit Realisation can make a concept into a rage!

Btw, I just finished adopting the Ajaxian philosophy/ideology for a project of mine. We have a web page (a reports page) that scours our database that has millions and millions of records that comes up with a "summary" report. A summary report for that many transactions is bound to take some time! For us, it was indeed taking a lot of time, almost an hour. Marketing was running the report and they were ok with the response time as this task was only done "once in a month". The problem was that the "web request" timed out irrespective of whatever configuration you had for the web application. I can only blame our webserver for not being able to handle these "big requests"!
However, we found a cure for the ailment :) ...AJAXian philosophy came to the rescue..When the user initiates the "report request", we spawn a thread that goes and runs the query to retrieve the results from the database(ofcourse, the thread takes a long time), but in the meanwhile we forwarded the user to a web page with some graphics asking him to wait while this webpage displayed his wait time! This webpage checked with the background thread every now and then to see if the query was done and if done forwarded the user back to the web page where he started from "with" the results! This solved two problems for us, it kept our users and our website constantly engaged and that was the solution. I am quite content to be a part of the Ajaxian world and am looking forward towards adding a few rubies of wisdom to my world.

5/06/2006

Industrious ANT

Apache Ant is a Java-based build tool. In theory, it operates the same way as a make file does, but it doesn't contain the baggage of Make. It also has the added advantage of encapsulation. Everything in ANT is configured using an XML file. All the details are hidden in jar files. You would hardly have to tweak with the sources for the jar files unless you have a compelling reason to do so. One reason I can think of is an incompatible operating system (I have personally experienced it and had to tweak some libraries for FTP/Telnet for Himalaya/NSK (a non-standard OS IMHO. Almost legacy :)).

The best part about ANT is it's easily configurable, easily extendable (very pluggable), hierarchical, universally accepted and above all open-source! Many IDEs have ANT plugins within them making life simple.

ANT like it's namesake is very industrious and can carry out arduous tasks with relative calm. It can be configured to almost do anything and if it cannot be done directly through ANT, you surely have the "" hat allows different commands to be executed based on the OS that it is executing on.



Benefits of using ANT are myriad but the most common use of ANT is in builds. With the whole programming community moving towards unit testing, continuous integration by adopting Agile Programming Practices, ANT comes very handy. It easily fits into tools like Cruisecontrol and it can be easily used even configured all on it's own to do continuous integration and continuous building.
ANT benefits can be realised fully depending on the creativity of the programmer. Using a hierarchical combination of targets, he can almost make it run like an application! We use ANT to do remote building, unit testing and report synchronization here in Sabre, but I am sure a lot of other people would have put it to even better use! ANT can also be used to fulfill batch jobs by executing queries and as you read this somebody somewhere would have added something to make it even more powerful!

Three Cheers to ANT !