Saturday, July 28, 2007

Software Development & Humanity

I am a Software Engineer. I earn “just less than enough” money for a comfortable life. I want to increase my earnings, and I strive for it. But because of high inflation, the prices of essential commodities increase steeper than the increase in my income. I have a good feedback mechanism from my brain to body. The feedback from my brain, makes my body work much harder. As a result, I tend to spend more time in office. I tend to cut my sleep and spend more time to enhance my technical skills. I am always struggling and I am always hopeful. And, I am quite sure that it is the right way to live (or right way to fight for existence).

Recently I happened to read a book on “Extreme Programming”. The book discusses about various basic principles which must be followed to become a successful software developer (on individual level as well as an organization). First and foremost principle being talked about is Humanity. It discusses about basic human needs (of any human being) which must be fulfilled in order to make one excel. This is quite shocking to me. It raises serious doubts in my mind regarding my life style and I am now becoming suspicious if I have been living my life on the right track all along. Let us have a look at the basic needs which this book talks about.

————–
HUMAN NEEDS
————–

* Basic Safety
* Accomplishment
* Belonging
* Growth
* Intimacy
Some other Needs which must be satisified, but out of work place.
* Rest
* Exercise
* Socialization

———–
HERE I AM
———–

(1) Basic Safety: Fredom from Hunger, physical harm and threat to loved once. Fear of Job loss threatens this need.
I work for a small IT company. We are profitable and we are expanding. So, I do not fear any immediate job loss. But, deep inside (my subconcious brain) I am aware that my job may not last forever. I stay far far away from my parents. I have not much time to meet my friends and relatives. I keep sitting in front of a dumb PC all the day, which makes me vulnerable to many chronic deseases. While driving, eating, sleeping, I think only about my work.
(2) Accomplishment: The opportunity and ability to contribute to their society.
As a child I wanted to become an administrator, or a teacher or a journalist. So that I could directly contribute to the society. But I ended up becoming an Engineer. Since I wanted to contribute to my society and country, I joined a job in Public Sector. Soon after my joining, I realized that there was not much to contribute (neither to society nor to myself) at that place. The project which I was working on was late by many years and after the completion it got scrapped (after around 10 years of total struggle and 3 years of my contribution). I decided to change my job after that. Now I work for a private company which makes multi-media products. I make products which are being used by human beings. I should be more than happy that I am contributing to society by providing them these cool products. But, I personally do not believe that society really needs these products much. These products are being made, so that investors (which form a very very small section of society) can become richer and richer. As per my opinion, society needs other major attention: There are poor people who need food, who need education, who need healthy life.
(3) Belonging: the ability to identify with a group from which they receive validation and accountability and contribute to its shared goals.
I do not have much time to associate with any other group than my organization. The primary goal of my organization is to make products faster (without wanting to implement a well managed process which might improve the over-all efficieny) and at cheaper costs. The people whom I work with, are my good friends. But more than that we all are competitors to each other. So we deny any true appreciation to each other.
(4) Growth: the opportunity to expand their skills and perspective.
My company helps me to expand my skills by asking me to work on different techonologies after ever few months. This exerts a high mental stress on me. More than finding any growth of perspective, I feel that my body and mind are GROWING old faster.
(5) Intimacy: the ability to understand and be understood deeply by others.
My PC and my cell-phone have become the most intimate things in my life.

(6) Rest:
I beleive in working hard. All work and no play has become the guiding principle of my life.
(7) Exercise:
For last two years I have been planning to start regular daily exercise.
(8) Socialization:
I used to meet my friends over drinks, every other day. But these days I fail to find time for that.

—————–
New Resolutions
—————–

If you are a Software Engineer working in a small organization (in a busy town of India). It is most likely that you live a life which is quite similar to mine. I am not sure what could be done to improve the human factor of our lives, but I have decided to start on the following activities starting from tomorrow (I hope that this tomorrow comes).
(1) Regular Exercise
(2) Belonging: I am planning to do something which helps my next generations. To start with, I am going to contribute technical and non-technical knowledge to kids them via seminars and books.
(3) Socialization: I am going to meet at least two friends, every week.

——————–
MASLOW’s HIERARCHY
——————–
I realized that I have totally forgotten about “Maslow’s Hierarchy” of human needs, which I had read in my school days. Probably this topic was included in our course-work, so that we can appreciate our (and other’s) needs as a human being, and strive to achieve them. This is likely to make our lives happier. But, we (me and my course-mates) always viewed our course-work as a mean to get out of schools, and enjoy the lives outside. So it is unlikely that any one of us (me and my course-mates) remember this hierarchy. I am just revisiting this hierarchy.

Bottom

| Physiological Needs: Breathing, food, water, sex, sleep, homeostasis, excretion
| Safety: Security of body, of employment, of resources, of morality, of the family, of health, of property
| Love/Belonging: Friendship, family, sexual intimacy
| Esteem: respect of others, respect by others
V Self-actualization: Morality, Creativity, Spontaneity, problem solving, lack of prejudice, acceptance of facts.

Top

I feel that most of my Top Needs are now being fulfilled. I use my creativity at work place, I crack a lot of tough problems, and I have learned to accept the facts. But Bottom needs are mostly unsatisfied. I am not sure how lucky I should consider myself having reached the top of this pyramid.

——————–
MORE on HUMAN NEEDS
——————–
Nine basic needs as per a web-resource

(1) Security
(2) Adventure
(3) Freedom
(4) Exchange
(5) Power
(6) Expansion
(7) Acceptance
(8) Community
(9) Expression

I wish you all the success in your efforts to become a fulfilled human being.
—————————————————————————–
References:
(1) “Extreme Programming Explained” by “Kent Beck” and “Cynthia Andres”
(2) http://en.wikipedia.org/wiki/Maslow’s_hierarchy_of_needs
(3) http://www.itstime.com/jun97.htm

The Art of Interviewing

Why this post?
—————

There was a time, when the ratio of jobs to applicant was very less in any field. The interviewers were virtual GODs and interviewees had to leave themselves on the mercy of these virtual GODs. But times are changing now - specially in field of Software Development. Though, the ratio of jobs to applicants (in SW development field) may still be less than one, but the ratio of jobs to deserving candidates has become well above one - it can be 2, 3, 4 or … based on the skills you are looking for. In such changed scenarios, Interviewers are not the GODs, but interviewee is. In Bangalore, any good SW engineer looking for a job will have minimum 2 to 3 good offers in his hand, within a couple of weeks. Finally, which company this candidate decides to join, will depend on the impressions which these companies have left on him during the interview process.

Today, almost all SW companies seem to be growing. This growth, combined with high attrition rates, puts enormous hiring targets before companies. This means a large number of interviews needs to be conducted to find good and deserving candidates.
Some (very few) companies employ hiring consultants to do the initial filtering of candidates- this could involve a couple (or more) of technical interviews. A few senior people can then conduct the final rounds of interviews with the shortlisted candidates. However most companies get all the interview rounds conducted by their own regular employees. This implies that almost every body (at every level of hierarchy) in the company at some time or other is involved in the interview process. Very few companies provide a formal training on interviewing skills to their employees and rest of the companies do not even provide an informal training to the employees (before they start interviewing the candidates). Even those interviewers, who have received a formal training at some point of time, generally tend to drift from the RIGHT interview process , which could change the final decision of the candidate (about if he should join this organization or not).
There is a large amount of material available on art of giving interviews, but there is not much information on the art of taking interviews. Hence, I decided to put this post.

WHAT YOU MUST KNOW before conducting an interview
——————————————————————
Make sure that you have answers to the following questions, before interviewing a candidate:
(a) What is the job-opening for which this candidate is being interviewed?
(b) What kind of skills and abilities does one require to perform the functions needed for this job?
(c) Why (what points in the candidate’s resume) this candidate’s resume has been short-listed for the interview?
(d) What questions are you going to ask the candidate, to ascertain that he is fit for the job.

Have the right FOCUS
—————————
I have seen some interviewers who conduct interviews with the prime objective of
(a) Showing their own abilities and skills to the interviewees
(b) Proving to the management that they are the best, and no one else is worth hiring.
Interviewers should come out of this mindset and they should primary focus on understanding the candidate’s abilities and skills during the interview.

Decide on QUESTIONS in advance:
—————————————-
The questions should be designed based on candidates’ current field of work, and skills needed to perform the job under question
(a) You need to make sure that the questions which you ask are relevant to the candidate’s experience. Though all candidates are expceted to know the basics of his course, but do not expect them to know every thing about what they have not done. For example, If some one comes from a pure application background, it is pointless to ask them about Operating System Internals.
(b) Questions should be also relevant to the work-profile of the job being offered. If candidate is supposed to work on QA testing, there is no point in asking him about complicated computer algorithms.

Get your QUESTION BANK REVIEWED
—————————————————
Once you have come up with a set of question, list them under a formal document, along with the answers. Get this document reviewed by your colleagues or friends (or any one whom you feel comfortable with). This will help you to ascertain:
(a) Questions which you have formed, are indeed relevant for this interview.
(b) That the answers, which you think to be right, are indeed right.

A few DONT’s of interview process:
———————————-
(a) Do not bias yourself based on candidate’s resume, his/her looks or is communication skills. Communication skills are important, but they are not the foremost requirement for most of the jobs.

(b) Do not insult candidates if they are technically poor. Do not argue with them, if you feel that their answers are wrong.
Any candidate who goes out of interview (no matter how good or bad he was), is going to talk with a lot of people (who will take his words) about the interview and the company. If you have annoyed the candidate, it is very likely that he is going to talk negative things about your company. If you maintained a good environment during the interview, it is likely that he is going to spread a good name about your company (irrespective of whether you finally hire him or not).
(c) Do not unnecessarily stretch the interview. I have seen some people who interview candidate for hours, and then give a one line feedback, “Candidate was very poor”. You really don’t need hours of questioning, to figure out that a “candiate is very poor”. Start with the basic questions. If you feel that candidate is not good enough, close the interview. If you find the answers satisfactory, carry on with the next level of questions.

STARTING and CLOSING the Interview
————————————————
(a) Before you start firing the interviewee with questions, tell him about yourself, about the company and about the job-profile for which he is being interviewed. Then ask him about his organization, his over-all experience and the kind of role he is currently playing in his ogranization. Ask him about why he is looking for a job-change. Make sure that there is an expectation mismatch from both sides.
(b) At the end of interview, give a chance to the interviewee, to ask any question about your company, your group and the work which he might be offered.

……………..

This post is based on my personal experience and observations, if any reader has some thing to correct, or more to add, please feel free to post your comment.