Saturday, February 21, 2009

The Pragmatic Programmer

Pragmatic Programmer

Am I a programmer? What makes a good programmer? How do I become a good programmer? These are some of the questions that keep coming up to every mind of a budding programmer who want themselves to see in the niche of the programming world. So here is something I found when I was reading the book "The Pragmatic Programmer", that might answer some of your questions.

What Makes a Pragmatic Programmer?

Each developer is unique, with individual strengths and weaknesses, preferences and dislikes. Over time, each will craft his or her own personal environment. That environment will reflect the programmer's individuality just as forcefully as his or her hobbies, clothing, or haircut. However, if you're a Pragmatic Programmer, you'll share many of the following characteristics:

Early adopter/fast adapter.
You have an instinct for technologies and
techniques, and you love trying things out. When given something new, you can grasp it quickly and integrate it with the rest of your knowledge. Your confidence is born of experience. Inquisitive. You tend to ask questions. That's neat—how did you do that? Did you have problems with that library? What's this BeOS I've heard about? How are symbolic links implemented? You are a pack rat for little facts, each of which may affect some decision years from now.

Critical thinker. You rarely take things as given without first getting the facts.
When colleagues say "because that's the way it's done," or a vendor promises the solution to all your problems, you smell a challenge.

Realistic. You try to understand the underlying nature of each problem you face. This realism gives you a good feel for how difficult things are, and how long things will take. Understanding for yourself that a process should be difficult or will take a while to complete gives you the stamina to keep at it.

Jack of all trades. You try hard to be familiar with a broad range of technologies and environments, and you work to keep abreast of new developments. Although your current job may require you to be a specialist, you will always be able to move on to new areas and new challenges.

We've left the most basic characteristics until last. All Pragmatic Programmers share them. They're basic enough to state as tips:
Tip 1

Care About Your Craft
We feel that there is no point in developing software unless you care about doing it well.

Tip 2

Think! About Your Work

In order to be a Pragmatic Programmer, we're challenging you to think about what you're
doing while you're doing it. This isn't a one-time audit of current practices—it's an ongoing critical appraisal of every decision you make, every day, and on every development. Never run on auto-pilot. Constantly be thinking, critiquing your work in real time. The old IBM corporate motto, THINK!, is the Pragmatic Programmer's mantra. If this sounds like hard work to you, then you're exhibiting the realistic characteristic. This is going to take up some of your valuable time—time that is probably already under tremendous pressure. The reward is a more active involvement with a job you love, a feeling of mastery over an increasing range of subjects, and pleasure in a feeling of continuous improvement. Over the long term, your time investment will be repaid as you and your team become more efficient, write code that's easier to maintain, and spend less time in meetings.


Friday, February 6, 2009

Management

Management is an Art

Management is an art and not everybody can do that. If you feel that managing is all about dictating people and yelling at them this one is for you.

A company, feeling it was time for a shakeup, hires a new CEO. This new boss is determined to rid the company of all slackers. On a tour of the facilities, the CEO notices a guy leaning on a wall. The room is full of workers and he wants to let them know he means business. The CEO walks up to the guy and asks, "And how much money do you make a week?" Undaunted the young fellow looks at him and replies, " I make $300  a week. Why?" The CEO then hands the guy $300 in cash and screams, "Here's a week's pay, now, GET OUT and don't come back."

Feeling pretty good about his first firing, the CEO looks around the room and asks "Does anyone want to tell me what that goof-off did here?"

With a sheepish grin, one of the other worker utters: "Pizza delivery guy from Domino's".



The Little Bird

The Lighter Side

Corporate Lesson III:

A little bird was flying south for the winter. It was so cold, the bird froze and fell to the ground in a large field. While it was lying there, a cow came by and dropped some dung on it. As the frozen bird lay there in the pile of cow dung, it began to realize how warm it was. The dung was actually thawing him out. He lay there all warm and happy and soon began to sing for joy. A passing cat heard the bird singing and came to investigate. Following the sound, the cat discovered the bird under the pile of cow dung and promptly dug him out and ate him.

Moral of the story:


1)     Not everyone who drops shit on you is your enemy.

2)     Not everyone who gets you out of shit is your friend.

3)     And when you’re in deep shit, keep your mouth shut. 

The Turkey And The Bull

The Lighter Side

Corporate Lesson II:

A turkey was chatting with a bull, "I would love to be able to get to the top of that tree," sighed the turkey, "but I haven't got the energy." "Well, why don't you nibble on some of my droppings?" replied the bull. "They're packed with nutrients."

The turkey pecked at a lump of dung and found that it actually gave him enough strength to reach the first branch of the tree. The next day, after eating some more dung, he reached the second branch. Finally after a fortnight, there he was proudly perched at the top of the tree. Soon he was promptly spotted by a farmer, who shot the turkey out of the tree.

Moral of the story:

Bullshit might get you to the top, but it won't keep you there.

The Crow And The Rabbit

The Lighter Side

Corporate Lesson I:

A crow was sitting on a tree doing nothing all day. A small rabbit saw the crow and asked him, "Can I also sit like you and do nothing all day long?" The crow answered: "Sure, why not". So the rabbit sat on the ground below the crow and rested. All of a sudden, a fox appeared, jumped on the rabbit and ate it.

Moral of the story:

To be sitting and doing nothing, you must be sitting very, very high up.

Wednesday, February 4, 2009

Interview Preparation

Interviewing is a skill; as with all skills, preparation and practice enhance the quality of that skill. Every interview is a learning experience, so learning that takes place during the preparation and actual interview process is useful for future interviews.

Initial preparation requires recent assesement of skills and interests, values, accomplishments and updating one's resume. Preparation also includes actual practice of typical and targeted interview questions.
Final preparation includes dress and appearence, location of the interview and what to expect.

General Preparation

Self assesement: "Do a lot of self assesement". Take time for reasseing current skills, talents, abilities, strengths, weakness and interests. Keep an accomplishment file: must contain all the articles, resumes, congratulatory letters, kudo's from boss, customers, etc.

Update Resume: The accomplishment file serves as a spring board for writing the resume.

Basic Questions: 
" Why are you interested in this field ? "
" Why are you interested in this company ?"
" Why are you interested in this position ? "

Some tough questions:
" Your greatest weaknesss ? "
" Your lack of experience ? "
" Your low grades ? "
" Your record of job hopping ?"

practice..... practice.... and .... practice

Review how you look and sound. Note your mannerisms, gestures, facial expressions, poise, energy, enthusiasm and body language.

Interviewing is a skill. You can only improve your style and accumen with practice.

Practice is important in reducing the fear and nervousness. Answering job interview questions correctly takes skill, practice and determination. All said, you must be lucky on that day to strike that particular job of your choice.

Resume

Resume or CV is the most important astra in the arsenal of a job seeker. Right the time one thinks of a job he starts preparing his resume. There are dedicated websites that deal with this issue. There are great personalities who say how to write a resume. They argue that one has to prepare his/her resume himself. But how many of us really work on our resume. Most of us just ask some our friends to prepare one for us. Others just go through many of the resumes available over the net and some of our friends and make up one for ourself. As far as my experience goes regarding interviews what many of us do is fine because theres no use wasting our time on preparing something which is never seen by the interviewer. Let me make it clear that what I am saying is only the Indian interview perspective, I am not aware about other countries. In India, most of the time the resumes are looked upon, only after the 2 or 3 round of interview although our resumes are collected at the beginning itself. It might be because of the huge crowd that attends the interview every time so the interviewer doesnt have time to go through the resume and 90% of the time all resumes are the same. Its a viscious circle. We donot prepare our resume because it is not seen by the interviewer. And because its all the same its not seen by the interviewer. But by the end of the 2-3 round the interviewer would have already made up his mind whether to take the candidate or not. So it only helps a little bit. I dont say "it doesn't help at all". 

Most of the time many of us are not aware about whats there in our resume. I have seen many. There has also been incidents where the interviewer has just asked to state what you have written in your profile and many candidates have failed to do that cos they have never prepared it. So they donot know what is inside. 

Here's my advice: Doesn't matter whether the interviewer looks at our resume or not, Do prepare one for yourself. It helps. I donot say it will get you a job but it will help in you knowing yourself better. The time you start preparing your resume, rather than you asking your friend to prepare the one for you who is least likely to be interested in creating a nice and beautiful one for you with all due respect to your beloved friend, you tend to understand yourself better. You start asking yourself the common questions which you feel you know the answers but donot,  like: What is your objective? What are your career goals? What is that you want to achieve? How do you plan to achieve? When do you plan to achieve it? What is that interests you? How much do you know about the field that interests you? so on.... So you start asking yourself these questions. You surf the net to get to know how others have formatted their resumes to suit their needs and many more. Other than this you learn formatting. You learn to arrange things in a proper order and streamline your ideas. You may feel it to be easy in the first but once you get to build your resume whole hearted who get to know how difficult it is and how little you know about yourself and how much more is there to learn about the subject you perceive and a lot lot more.

After all this efforts when you have your resumes hard copy in your hand you really will feel proud about yourself that you have made something. But it really hurts when something which you have prepared so dearly with so much time and effort is thrown into the shredder by the interviewing panel. But donot mind after all its your career and you have to build one for yourself. To build something beautiful, may it be anything including your career you need to work a lot and if your answer is yes why not start it from your resume itself. So start preparing your resume right now after you complete reading this cos if its not now its for never for sure.

Tuesday, February 3, 2009

Interview

Get u r basics right

Tring....Tring... the phone rings from an unknown number, you pick it up and some nice voice from the other side says "Hii, your resume has been shortlisted, you have an interview tomorrow. Please make sure you be at this location by 10.00 in the morning. Just bring a couple of copies of your resume, 2 PP size photographs, photocopies of your certificates and address proof. If you are lucky enough you can walk away with the offer letter tomorrow. Good Day and All the best" and he/she hangs up.

Now your head starts turning. You don't know what to do. The word ' interview tomorrow ' itself makes your stomach turn. You have sleepless nights. You keep asking yourselves (mock self tests) what questions he might ask and keep murmuring the answers. This session continues till you come face to face with the interviewer. One more tension keeps running in our mind, about the documents what he/she has asked you to bring. To your worst nightmare you find out that you do not have many of the things that you are asked to bring. So immediately you rush to the xerox shop to get our photocopies of your certificates, next you get your resume printouts and then the photographs. Having no other option for photograhs you go for the digital 2minutes photograph and that guy knows that it is urgent and really asks for good sum for less number of copies. What to do? but we go for it.

Atlast admist all the tensions you somehow gather all the necessary things and get ready. You come back home its already night and sit back to realize that your dress is not ironed. You immediately put on the iron box and somehow complete it. After all this you donot have any mood to eat but you just crunch something and go to sleep. You get up early in the morning and start murmuring the answers then get ready before time and you see that your shoes are not polished. You polish your shoes and make your hands dirty, you wash your hands making your cuffs wet. "Shit", "No problem it will dry up before I reach there", Saying this you leave hoping the best.

Now two things can happen after this: Goodluck, you get selected and you forget all the troubles you have taken, it just vanishes before your happiness.
Second, Badluck, All roses are not red.   You are disappointed, frustrated sometimes accompanied by the feeling of shame that you didn't make it through this simple interview.

But here's what I say. Stop blaming yourself. It happens.Success and Failures are two sides of a coin. Theres nothing great in a guy who attends his first interview and get a job. I would say he is unlucky rather than lucky, cos god never gave him a chance to undergo the pain, the frustration, the disappointment, the shame that you have undergone. 
But many of us curse god because of our personal reasons and question him "Why me? I am a good guy and Why does bad things happen to good people "? This is an interesting question. Very long back I happen to read a book that answers this question. The author of the book says when you ask this question, god will never answer that because you are not asking for an answer but for an argumnet and god never likes to argue? So is my question wrong? Yes. So what is the right question? The author says
Never ask "Why does bad things happen to good people?" Instead ask "What happens to good people when bad things happen to them"? and god is sure to answer that.

Now ask yourself what good has this failing in the interview done to you? What are you saying? How can failing an interview do something good. It was the best company I attended? I lost my future, my career, my salary, my pride  and the list goes on. But if you think harder there will be something that you would have gained. What is that? After all no one gains anything from failing an interview isn't? But if you think harder, more and more the interviews you fail you will see that the better and better the person you are becoming. You are becoming a very modest person. Your ego and your false pride shatters and the real good of you comes out. All you guys reading this may not agree with me for a long time, just a simple question from your side "What good is my becoming modest is going to bring me? Does it anyway solve my problem, does it decrease my frustration? No. Then what good is this modesty for me? 100% correct from your point of view. But trust me on this, its really gonna help you in the long run.
More and more modest you start becoming, you become more approachable and friendlier. More approachable and friendlier you become people around you start sharinng there personal things with you because you have also become more caring and compassionate for others. Because you know what failure is, you donot look down a failed person. You care for others feelings and that will make you a magnetic person and people will just get attracted to you. Now if you think back failing that interview didn't do that bad as you thought at first? Still donot agree. No problem one day you will. I am sure about it.

But we can't let ourselves to keep failing just to make ourselves more and more modest. That is foolishness. isn't? Yes damn right you are. So what do we do to turn our failure into success. Look first and foremost you first need to look back and see where did you go wrong? According to me you have made the mistake not at the interview but before the phone call itself. You were not prepared at all for an interview. 
So what should I do?
Here are somethings I would suggest you guys to do from my interview experience. It will cost you some money but trust me its worth it.

Buy yourself a nice good folder, a a file, a notepad and a pen.

Must have always during job search:

Always have 3-5 copies of your resume handy.
Around 3 Photocopies of certificates and address proof.
Around 10 PP size photographs
Your original certificates
Your salary slip and experience certificates incase if you are experienced
A notepad
A pen
and an orginal ID proof ( Driving Licence, Passport, Pan card etc)

Two pairs of neatly ironed shirts and trousers
Neatly polished shoes

* Nowadays it has become mandatory to carry an original ID proof to the interview location otherwise you will not be allowed to attend the interview. 

keep all the mentioned copies in a folder in a suitable place in your home. Prior the day of the interview take up what is required and put it in the file and keep it aside. Second important thing is refilling. You attend an interview and if you are not successfull then on the way back home get all the copies of what you have spent on that day and put it in the folder. I understand that  its frustrating but it will reduce your frustration later on for the next interviews. Replace your clothing with others. If you have only one pair no problem wash and it the other day itself (donot postpone) and neatly iron it. Polish your shoes and keep it. In this way you will always be prepared for the interview. 

Write down all the possible questions that you feel will be asked during the interview with your answers in the notepad. Donot just murmur your answers. The questions can be anything that you feel, the questions that you might have gathered from the net, friends or from your previous interview experience. Write and rewrite your answers. Read and re-read what you have written. Go through all your answers once every day till you feel you are comfortable with the answers. Keep making improvements to your answers. Just murmuring yourself the answers will do no good to you. You might feel you can answer it but during the interview you will definitely go wrong. And most important keep adding questions and answers in the notepad even after you are successful. It will be important to your later part of life.


Remember getting a job is just luck. If you are lucky on that particular day you end up in a job. So hold your patience till you you get your day. Dont lose faith. Something good is waiting for you. But that doesn't mean that we donot try and we donot prepare. We must keep on doing our duties. But donot push yourself too far. Everyday is not sunday and remember one more thing.... if its too dark that means twilight is just near.

All the best to all of you and thanks for taking time and reading this. Awaiting comments.