Wednesday, November 22, 2006

Its never too late to use Mule

Its never too late to use Mule as an integration container, thats what I have figured out much to my pleasure after working with Mule in one of my recent projects. Mule can be used very much as an after thought, for providing the much needed integration support for an existing application. Best part is that Mule's ability to provide standards based integration for existing applications is totally non-intrusive, that is to say the legacy code need not be aware that it is being used by Mule. Mule Integration / Service container has a very flexible and intuitive configuration format. Using configuration changes itself the core business logic (application POJOs) can be used and reused in imaginative combinations to realise some fanatastic integrations with very little coding effort if at all. For example, lets say u had a business logic POJO class which had the basic persistence functionality in the form of interfaces pertaining to Create Read Update and Delete functionality. Using Mule one can easily provide integration for invoking this CRUD functionality through the following transports: Web Services (SOAP/HTTP) Web Services (XFIRE/REST) RMI File System TCP servlets/HTTP SMTP XMPP (instant messenger) only in a matter of minutes, using mule configuration alone. Also writing suitable transformers support for a variery of input and output data formats can be provided and these transformers can be used in the configurations in a chain-like manner to take the data through multiple transformations eventually to the core business logic Mule also provides for custom routers and out-of-the-box routers for realising a variety of integration use cases quickly. Support for exception based routing is also present. Best of all Mule is extensible at various levels and writing custom routers, filters, transformers, channels etc is remarkably easy. All in all, Mule provides very powerful and flexible integration capabilties for existing applications. Its definitely worth spending the time to read thru Mule and get an idea of its capabilties, u never know what weird integration requirements, ur managers may throw at you next :)

Monday, November 20, 2006

Indian IT Professional: Myths and Challenges

After 11 interesting years working in the software industry and being a part of the development community, I have with me a sizeable baggage of experience working through the ranks of software development right from programming to design to architecture. More interestingly, I have worked for 6 ½ years in US and had a chance to be a part of the development teams based in US, in various capacities as a senior developer to a technical architect. I present in this article a few of my observations and opinions. Please excuse any generalizations or personal bias if at all it does creep up in spite of my attempt to keep the observations just and objective. Note: In my discussions I will talk about a stereo-typical Indian IT professional called Mr. X It is so difficult to get accurate software development estimates from Mr. X I have led software development teams involving a wide variety of cultures notably I have had team members who were of the following descent Russians, Chinese, Indians and of course true-blue Americans. Typically in my job as team leader I needed to get detailed estimates to software development tasks and over a period of time I learned that it was very difficult to get accurate estimates from my Indian teammates. I attribute it to the Indian-Culture bias where-in it is taboo for the subordinate to assert anything even slightly contradicting the manager’s expectations. This is something that I learned the hard way in my day-to-day life as team leader. When I asked non-indian developers for estimates they would tell me to get back to them in half a day and then having thought about it would come up with an estimate, which was always a bit more than what I had in my mind. On the other hand when I posed similar question to my Indian developers, they were much more interested in finding out what my expectation was and then accordingly preferred to give an estimate of x - 20%, without really thinking about the real work involved. Initially I thought they really knew what they were talking about, but later on I came to know the hard way that in fact, due to the culturally relevant “fear of the manager” they had been providing me with inaccurate estimates all along. No prizes for guessing the list of people who suffered on account of these “estimates”! Mr. X’s de-emphasis on quality Another behavior pattern that I saw very clearly to be existing in Indian IT workforce was the apparent neglect of the quality of software being developed. This manifested itself at times as very poor unit testing, at times as a lot more serious, in the form of poor design. Only too often I saw the entire application hanging just by a shoe-string while the developer did not raise any concerns about the application’s stability or robust-ness. He simply never opened his mouth, till the applications went into format test environments and then it was huge embarrassment for everyone involved! I think this tendency to overlook quality and apparent faults in order to deliver say, 80% of the application on time stems from another cultural bias, which results from all of us being exposed to intense competition right since our school days. We have been systematically taught, if u cannot be the first one to deliver it, to get your foot in while the door is closing, you will lose the opportunity forever. This kind of teaching seems to have taken its toll and often manifests as Indian developers willing to sacrifice development quality in order to apparently meet deadlines J Mr. X tends to get cocky, when on-site for considerable period of time This yet another pattern that I have seen repeated among Indian Software professionals. After a few months of working abroad, Mr. X starts firmly believing that Indians are the smartest people on earthJ. There are a few common mistakes that might propagate this myth. For starters Indians are a lot more “street smart” in their day to day dealings due to their experiences of living in an intensely competitive society so for smaller day to day tasks it may appear that Indian IT work force has an advantage over their American counterparts. Also what Indian IT professionals have to realize is that, we are intellectually the top 10% in our country, India, who have had the chance to go onsite, so we should not be comparing themselves to the average American office worker and feeling down right cocky about being so smart J I can only emphasize humility and focus on learning, which has so correctly been considered important in our culture.
Mr. X is very bad at written communications
Documents are the best way to convey great ideas but I have seen a marked problem related to this in indian IT. People dont write good concise communicative documents and also feel very reluctant to read documents and understand them, before coming to any meeting. Indian IT professionals tend to rely more on informal verbal communications in vernacular like hindi, to communicate even technical ideas.
In western IT world a lot of importance is given to written communications and when documents are circulated 24 hours before a meeting the valid expectation is that the attendees have taken the effort to go through the document before coming for the meeting. This written communication culture is almost rare in the Indian IT companies I have encountered, which is a shame. It puts our IT workforce at a disadvantage when working onsite.
More recently, with offshore projects increasing Indians in IT have to get proficient in the art of written communications., since now there is all the more need for people working from offshore to be able to understand written communication and reciprocate with quality written communications themselves Summary Look all around you, whether it is the International Mathematics Olympiad or the topcoder.com competition Indians are nowhere to be seen. We still have a long-long way to go before we realize all our potential as an enormous global power. Meanwhile it is important that we focus on individual development instead of being complacent about over-hyped media stories about Indian IT workforce being the best in the world. Look around you, the opportunities brought about by the internet. Every new technology every new innovation in software is at your finger tips. The world, especially so the IT industry is in need of thinkers and innovators, isn’t it time we made our contribution to the global pool of ideas. Cheers….