Thursday, July 23, 2009

Mistakes you can make in your first job

1. Not taking time to study the fundamentals.
Eg: If you are expected to write C++ program, first learn C++. Take time to understand classes, inheritance, composition, etc. By understand, I mean you not only need to know the syntax, but also imagine the scenarios in which they are useful (an which they are not). If you don't know STL or smart pointers, believe me you would be re-inventing some of its code inefficiently :) and your code might be prone to bugs.

2. Google search before you ask your team lead or team members. This protects you from asking stupid questions or worse committing stupid mistakes.

3. Under-estimating the importance of "requirement gathering" and "design" phase aka Start coding immediately. A good programmer always takes time to understand the problem and create a big picture of the project in his/her head.

4. Trying too hard to present what you are not. It is extremely difficult to live a lie. Remember honesty should be coupled with extreme desire to improve yourself and also hard-work.

5. Blaming others to improve your chances of staying in the job. Believe me nobody likes a snitch. If you commit a mistake, be brave and accept the responsibility. Be proactive and ask the mentor for what you can do to improve your chances instead.

6. Disregarding "Murphy's law" and not clearing your expectations with team members.
If you think there is slightest possiblity of any team member to commit certain mistake or make certain wrong assumption, clarify it.

7. Delving into details without getting the big picture (kind of re-statement of point 3). But this is so common that I need to mention it again.

8. While using new software library, not differentiating the interface part and core problem part of the project.

9. Ignoring the coding standards of company. If you company does not have one, try to follow the coding standards given in the book C++ Coding Standards: 101 Rules, Guidelines, and Best Practices.

10. Reinventing the wheel in your design aka not knowing what are design patterns. If you don't know what design pattern mean read Head First Design Pattern. If you have already taken course in design patterns, then revising Gang of Four book won't hurt.

11. Not using a version control. Chances are that you would break the working code when you are trying to add new functionality. If you are using a version control, then remember to add messages like "Working version 1.4", etc. and learn how to revert back to certain version. If you are not allowed to use version control, make copies whenever you implement and test new functionality.

12. Not discussing your design with others aka school-children syndrome. Think of it this way rather than sharing your trade-secrets; by explaining or helping others, you improve your knowledge base.

13. Not respecting chain of command. Always give credits to your mentors, even if you think they have not helped you in it. It is even worse, if you complain against your mentors to their managers. Remember habit 4 (Think Win-win) of 7 habits of highly effective people.

Two books you must read and re-read before joining the job,
1. 7 habits of highly successful people by Stephen Covey. (Summary)
2. Getting things done by David Allen. (Summary)

Sunday, July 05, 2009

Why are Indians targetted ?

I am writing this article in response to the article of same name in "Times Life" (a section in the news paper Times of India) dated July 5th 2009. Most of the ideas are borrowed from this article.

Let us first enumerate what could be the major reasons why Indians are targeted:
  1. Racism and jealousy
  2. Cultural and Behavioral habits (the "Herd" mentality)
I would like to ignore the first reason and want to focus on the second reason only. Here are the points that support my assumption:
  1. Serenity Prayer
  2. My experience in Gainesville, Florida suggests that most people are comfortable with working in a multi-cultural society. Some people may not like some sect of people, but it is usually due to personal preference rather than racism (It is important to note there is a difference. Just because I am from different race or ethinicity doesnot mean the other person has to like me. It is only when the other person starts humiliating you, it is racism).
  3. Whenever there is a inter-relationship problem, it is better to start identifying the problem in yourself first and try to improve it rather than finding problems in others and blaming them for the situation.
Statistically speaking, I have seen most Indians hanging out with only Indians. There are several reasons for that:
  1. We do not want to put extra effort to understand the cultural diversity and to come up with a harmony of both Indian cultural system and the host cultural system. For example, most jokes we share with our "Indian" friends might not be funny when we share it with people from different race.
  2. Fear of rejection/intrusion: We do not take up the initiative to talk to a "non-Indian" colleague and bond with him/her. By bonding, I mean come up with a level of comfortableness, where both you and him/her can enjoy daily discussions (say sports, politics, family, etc ..). Usually, people take this initiative only when both parties have to spend a lot of time with each other as colleagues.
  3. And many more ...
The bottom line is this ... Assume non-racist environment and ignore few "racist" wise-a**. It is very important to understand and respect the host culture. Put effort to find out common trivia regarding politics, sports, etc which might be a topic of daily discussions among peers. Participate in some (host-cultural) social events, such as going to a bar, bbq, etc. Always respect the host law. And be a good guest (i.e. make the host comfortable around you) !!!

This article does not in any way suggest changing your value system. I am proud to be an Indian, and I will never change by values (eg. respecting elders, praying, helping others, etc ..). But it doesnot mean only the Indian value system is the best and all others are inferior. I think I could learn a lot from US and it is necessary to put effort to learn the host culture.