Thursday, June 25, 2009

Software Development – Ego Driven – Part III

In almost all white-collar professions, we have to deal with Ego, Ego is a trait mainly driven by superiority and some inflated feeling of self. Ego is a main driver of one’s growth and without ego there is no improvement. But ego is very complex subject, I’m here try to present my thoughts and how to work with Egoistic environments. Ego is great tool for improvements hence can be used as weapon whenever required. Too much Ego is not okay because that’s main team work killer. As a rule of thumb, too much egoistic person should be an individual contributor like sales, decision making and use the egoistic to beat outside market competition. Here are some more points about egoistic.

Polite or Bully: It is very hard to understand whether a person really bullies or showing bully behavior out of ego. A same person act very polite with “inferior” than one and act very aggressively or bullying with “superior” than one. But the reality is all are equal and everything is illusion that one is above and below. It is very tough to work with those but flexibility and showing some weakness of our own to egoistic person helps and improves team environment. One interesting story is, I know a sales guy who is very egoistic and very successful but always do some mistake in total price or ask some stupid questions like “John, how many zeros for millions”. The secret is he wants to work with others very friendly manner hence some time act like he is also a prone to mistakes and he is not a super human.

Can Do or I can do everything: Can do attitude is really great and positive but we can’t do everything possibly under the sun. We have to depend on others and our success relies on how others also willing to working with us. For example, Software we have initiation, plan, design, code, test, deployment, support phase and each one required some team effect from everybody. Even though we were experienced developers sometime we need a support from a system admin who joined just today, so some level of politeness required to get some help from him/her.

Balancing Ego: Actually we are all ego by birth, but getting mature and interacting with others help us to taming or balancing ego. My best advise to use ego as weapon or we are in team environment and want to balance ego, we have to start using “we” instead of “I” and share credit with others.

But any ways not all are same, we are all having different traits and Ego is not a bad one, as i said it is major factor for improvements and use it as weapon but not always. Actually my tactics would be, when ever i play cricket i would be always with non-tamed-egoistic caption because i always want to be with winning team. Here I’m ending my psychology side of software development series.

Wednesday, June 17, 2009

How to become a Saint

Actually a long ago, one of my friend used to do some unusual stuffs like avoid salt for 3 months, sometimes avoid sugar for 3 months, no talking with parents, friends for a week etc. I thought that he was kind of paranoid person. But I didn’t know that he was tried to become a saint. Each try of some thing unusual gives him some will power and feel the pain of others who really suffer from the disease. The main purpose of Ramzan and Good Friday is to experience the hunger of poor people, hence people start share something to others to eliminate hunger. Buddha was a rich prince and he become saint only after he sees and feels the pain of others. The same with Gandhi also, he also a rich and earning lot of money as lawyer in South Africa, but he become a father of nation because of his experience and feeling pain of others.

So becoming saint required emotional trauma or high integrity or something unusual things that my friend did, or 30 days no food, or go out to forest to see some things or go to South Africa or Jerusalem. I think none of them are required to become saint. In fact, we no need to become something extra ordinary personality to become a saint. There are some important things we can follow to become a Saint.

1. Don’t talk about others when they are not in front of us: The talking about others and gossiping is like a playing highly addicted video game. Once addicted it is tough to come out from it.

2. Not addicted to money: As I said in previous posts, addicted to **anything** has some remedy to come out from it, but addicted to money is incurable. So making money and saving money is waste? No, money should be considered as a tool, we have to earn it as much as we can and save it but never go beyond it.

3. No to superiority and inferiority: We are all human, equal, each one living for some purpose, some where and some profession. There is no one is above and below. Opportunities are out there, system is fixed and any body can become anything. But what we had in mind is stopping us to become what we want. There is no place in this earth has dictate that one has to do this and that (other than some regimes). The point is most of us has freedom and choice what ever we want to achieve and we are forcing or liberating others also to join us, greater example is recent Iran protests.

4. Stop Unnecessary Fear: 6 months back we are all feared, what is going to happen to our economy and job market etc? But now things are slowly returned normal but we are not out of woods yet but better than 6 months ago. If we fear now is meaningless and unnecessary, the bad time was behind us and we have to think about future growth. So unnecessary fear is won’t make us Saint rather pull us down.

5. Learn as much as possible: When ever I say learn, some my friends mistaken that I’m asking every one to rejoin school or check out books from library. Learning means everything we try something new including cooking, going/seeing new places, playing something, writing about some new things. What ever we do for fun is also learning.

There are many other things helps us to become a Saint including helping others, volunteering, community service, laughing with others, playing with kids, going to worship places, spending time with friends, socializing with others and many other things. So am I a saint? No, not really but like any body else, I’m also trying to become Saint. Together we will all try our level best.

Sunday, June 07, 2009

Software Development - Stress Management - Part II

Our life is full of surprises and twists and turns, no one in this world meticulously plan for future, day by day activities etc. All we need is a brave heart to face unexpected. Stress management is really important in our life. We should not get stress easily and burn out ourselves. When i started software development, industry suffered a major setback is managing stress. But now due to the maturity of industry stress is not a big issue. What causing stress, actually stress is unpredicted one. For example, one is very easy go on many things but get stress whenever Christmas season is around the corner, major reason is how can i handle shopping for massive relatives, friends, kids? but s/he may be handles $10 million fund in wall street.

Stress can cause major damage to health, mind. One more important thing is, stress won't show up until it grows bigger and bigger in our own mind. Back in India, i wondered that my dad, uncles other relatives who ever working with public sector never complained about Stress but self employed and private sector complained about stress. What is the connection between them?. Actually one important thing is, India freedom of speech, expressiveness is higher in public sector companies with compare to private sector, since employees enjoyed free to talk, free to say no etc in public sector, which helps them to free up from stress. Based on my opinion, here are some major points in terms managing stress.

1. Say what we can do, talk from our own mind, don't commit more than what we can achieve.

2. Learn to say NO, but not always NO. Balance between Yes and No is really important to manage stress.

3. Treat others as friends/helpers not competitors, competition leads to race which leads to stress.

4. Plan ahead, create a step by step guide to achieve end goal. Get professional help if we need to.

5. Go to new places and learn about new things.

Friday, May 22, 2009

Software Development - A new series 1

A long ago, a friend of mine argued with me that Software development is like painting and developers are painters. As per his view, software development should be done by artists. I straight away disagreed and his argument was immature and naive. Painting and artist are gifted one, not everybody gets those and Software development is a professional job, so it doesn't always required some gifted person to develop it.

Lets take a example of construction field, it is heavy physical intensive work, it required some 250 lbs and 6 feet to perform the job but that is ideal. If a construction company wants to hire only 6 feet and 250 lbs, they can't hire enough employers to build a house and can't make profit. They want to hire any body physically fit for work and then divide work that heavy object lifting job goes to 250 lbs and some arranging, nailing job goes to other below 250 lbs. This is the system, this is how our society work, no body feels discrimination if 150 lbs not getting 50 lbs lifting job.

The same with software development, for a minimum level of coding one should have fundamental strong on the programming language, some working knowledge of database, a decent level of knowledge of Linux/Unix. The distinguish comes as form of expert level, which can be achieved with in 6-8 years of experience. There are 10 million software developers are here in U.S, all of them are not gifted and they are fit into this expert, medium and starter category. But other than that in Software there is one main aspect is attitude, the attitude is really important for developers. In fact attitude is important for any professional work, but i feel very strong about attitude and software development. Development required brain work and run through some analysis/processes in mind all the time hence good attitude required to develop quality software and within budget. More over attitude is really important for young industry like software development.

Why it is important? Again lets take construction field, construction is very old industry and all are well defined and well formed. Lets assume there are 100 people building a house, they may not even know their names each other, but the coordination and building process goes smoothly. All they want to know is what is their job today and when they have to finish it. But the young industry Software development, there was nothing defined, each day there are new development methodology, processes, each company has it's own processes and so on, nothing was integrated and everything working as it's own area. At end of the day, based on my 12 years of progressive development experience, each software developers attitude is making difference of successful completion of project particularly in IT industry.

Based on my experience, there are some main factors contributing good and bad attitudes, they are A. Context Switching B. Stress Management C. Ask other's help/ego.

Context Switching :
What i mean context switching, there are two types of context switching, first as soon as we start to work, we have to forget our personal and concentrate on professional one. second, with in work switch context between projects without losing temper. The first switch is something important and everybody should follow it, a successful career rely on how one separating personal issues with professional life.

[Contd]

Monday, May 18, 2009

Fallen Hero but after May, 21st 1991 Zero

Today is an emotional day in all over Tamil Nadu, Sri Lanka and many Tamil families all over the world. 30 Years of indefinitely fighting against majority Sinhala, finally comes to an end with nothing. There are 100,000 people killed during this civil war, mainly Tamil ethnic. Finally Vellupillai Prabhakaran the leader of Liberation Tiger of Tamil Eelam (LTTE) got killed with his shatter separate country dream.

During the beginning years, LTTE was considered as Civil Right Movement for minority Tamil people. Prabhakaran was considered as the leader for Tamils, but later on the organization was transform itself as a “Cult” like a movement. They want to kill anybody who are not supporting separate country demand and who are not willing to join LTTE organization. The relationship with mainland Tamil Nadu was fractured when LTTE killed India’s one last of hope for reforms Rajiv Gandhi for some lame reasons. LTTE killed Rajiv so do India’s ambitious dream of reforms, because of Rajiv’s murder, India’s reforms were delayed by at least a decade.

I hope now the onus on majority Sinhala government to protect minority Tamil people and slowly integrates them with main stream. It may take decades to achieve it but you just eliminated terrorists which was impossible for India still now even U.S.A couldn’t achieve the success yet. Nothing is impossible.

Source:
http://news.bbc.co.uk/2/hi/south_asia/8055015.stm

Saturday, May 16, 2009

Indian Election 2009 - Results

After i would say 2 decades, this is the clear sweep by a single coalition and Congress led Untied Progress Alliance (UPA) going to form government with no support from anti-globalization parties mainly Indian communists. This election was main and crucial to Indian economy, because we need a continuous, stable, globalization/progressive minded government to solidify the modern economical foundation. Now Indian people spoke the same language from Kashmir to Kanyakumari to give a clear and solid mandate to current ruling coalition UPA to continue their job mainly to improve infrastructure, abolish poverty for next 5 years.

The exit polls suggested that UPA or NDA wouldn't get simple majority and they need support from leftist parties, who are very narrow minded and anti-globalization. But real results went other way. We need a clear exit poll strategy, it is failing consistently for all over the world's election outcome. All over India vote counting started and results were announced with in 3-4 hours because now Indian election commission using electronic voting machine, early days the outcome of election took days.

Here are some highlights from India's Election 2009

1. Youth vote was the clear differentiator for this election, they want a stable government hence they choose UPA. It is clear indication that India's political power shifting from aged generation to younger generation.

2. No one can change democracy election outcome, even though here and there people voting based on caste, community and for money, the final outcome will be same from all over country.

3. 60%-65% people cast their vote for this election, which is not bad as per current democracy standard but everybody should vote and mainly urban people ditch their voting rights for various reason including lost hope with political parties and politicians. Political parties have to note this and work hard to win the trust again.

4. Glamorization and movie star connection to politics is old style. Nowadays one can't win people based on star value and attraction. For example, this time a mega movie star from state of Andhra Pradesh failed badly.

5. Political parties have to change their stance on several issues, if they are out of sync with people's day-by-day issues, future issues they will be kicked out. For example, a leading politician fighting hard for Sri Lanka's issue lost this election because he/his party didn't solve any issues for their constituencies. They forgot that Sri Lanka is out of India's map and the issue will be resolved by Indian central government, UN and other major country leaders.

Friday, May 08, 2009

Twitter Java API

In my opinion, after Apple's iPhone, iPod and Amazon's Kindle, Twitter is greatest innovation of this decade. The simple but powerful innovation allows us to share our thoughts, news, and opinion to 100K plus or even 1 million users within a single click. Amazing doesn't it? How will you share your opinion transparently within 140 chars? The twitter users also has amazing power, people sharing from all over globe by using a single entity is something powerful medium.

I was drawn into Twitter world like a year ago, so far my experience with Twitter is excellent. But every things has it is own drawback, in twitter world there are some a-holes try to deceive us by following us and make us to follow them and then silently unfollow us. I want to develop a small piece of code to find this mischief. But i found an excellent site www.refollow.com to do the same thing efficiently, i recommend all to use the refollow.com to find this rogues. But anyways i did this code to understand various APIs for Twitter. One of the great and fastest Java API for Twitter is from Google but there is no good documentation. Here is step by step guide to integrate with Google java-twitter.

1. Go to http://code.google.com/p/java-twitter/

2. Download Java-Twitter-*-SNAPSHOT.jar. Java-Twitter-*-SNAPSHOT.jar depends on following JARS

commons-beanutils-1.6

commons-codec-1.2

commons-collections-3.1

commons-httpclient

commons-lang-2.4

commons-logging-1.1.1

ezmorph-1.0.6

google-collect-1.0-rc1

httpcore-4.0

httpcore-nio-4.0

joda-time-1.6

json-lib-2.2.3-jdk15

3. Here is the complicated Google's Protocol Buffers. Google uses Protocol Buffers for almost all of its internal RPC protocols and file formats. Our job is to download bunch of C++ code and convert it to Java and jar it.

4. Download protobuf*.zip and protobuf*win32.zip.

5. Unzip protobuf*.zip and proto*win32.zip, and find a proto.exe from protobuf*win32.zip.

6. Copy the file to protobuf/src/ folder.

7. Go to protobuf/java and find README.txt for step by step guide to create protobuf-java-2.0.3.jar file.

8. After adding all the above JAR files, the code development is easy and refer http://java-twitter.googlecode.com/svn/site/apidocs/index.html

9. Make sure to install Java 1.6 and set JAVA_HOME variable correctly.

Here is code to find friendship exists call.