Saturday, January 26, 2008

Review me?

Its that time of the year again...No I am not talking about your taxes. I am talk about what makes you pay your taxes at the first place. Your income and the process that determines your income: Performance Reviews.

How important are these anyway? John, a friend of mine, considers it as an opportunity to get exposed to a hodge podge of fancy HR terminology (which would help ultimately help him boost his Scrabble score). Well, that is partially true. HR's do like fancy jargon just like Software Engineers do. These reviews also give you a chance to discover fancy websites and perf review generator softwares. Yes I did have the same look like you have on your face now.

Pic 1: Snap shot of a perf review generator.

Well, I think to top five things a performance review is intended to do is:

1. Company's goals and principles: It makes you think about what your Company stands for and how your work aligns with the company's. Sometimes it is good to sit back with a Peppermint mocha and take a 50,000 ft view of your Company. If you think, you don't believe full heartedly in what the company stands for, please do yourself and your company a favor by switching jobs. This, in my opinion, is the single most important thing a performance review should do: To reinforce the company's principles and goals in what you do everyday.

2. Think about business value: Software developers have busy iterations and goals for each iteration that they get too wrapped in this world of code reviews, unit testing, deployment and the stuff. Remember, no matter how cool your code/feature is, as long as it doesn't add value, it means NOTHING. This is a skill that most lacks in software developers today and they definitely do not teach this in your "Compiler design" class.

3. Reflect on the year: Like anybody, you would've had a few ups and downs in your work life in the last year. Take some time to celebrate your success and analyze your mistakes. Everyone falls the first time(including Neo) but the important thing is figuring out how to stand up (and in Neo's case how to jump buildings).

4. Think about which peaks you want to climb: It is much easier to measure your success if you pick the challenges that you want to take on. And please be realistic. If you are starting with a 8-8 record, set yourself a goal to clinch the division next year (and not try to be the "Perfect season" Patriots) . I am not trying to discourage you, but small victories do more to your morale than falling short on a "Venti" goal.

5. Feedback: Nothing, I mean NOTHING improves you more than feedback from your peers and your Manager. If your company doesn't have peer feedback, please talk your HR and try to make it happen. It is your peers who see your work day in and day out and their feedback is invaluable. And please be honest about giving peer feedback. If you are concerned about your peer's well being, tell them how and which areas they need improvement. On the other hand, if you really liked them stepping up during your last vacation, add that to the review.


Well, reviews are time consuming and need a lot of thought. But they is important and need to be done the right way. Ooops...I need to start writing my reviews and they are due in a week.

Wednesday, January 16, 2008

We don't need to college education...or do we?

We just hired a recent college grad a couple of weeks ago. Smart kid from a top 40 school with a Computer Science degree. My first impression of him was that he was down to earth and very enthusiastic about learning. He had to go through a bunch of training camps to get overwhelmed and in awe of what people do in the industry. He was handed over a simple and straight forward project to load some data in the database. The whole point of the exercise was to get him familiar with the code repositories and deployment processes. As with any good programming organization, we have the practice of code reviews in my firm. Beep beep...from my brand new Blackberry curve and there was one unopened message with a code review request.

And being his first code review, I had to clearly communicate the quality and style of code which was expected of him to be a good software developer in my organization. I was looking through his files and made quite a lot of comments about his code. It kinda reminded me of my first code review a couple of years back. I was really nervous about it. More nervous than my final software project at school. At least he has the luxury of being with more polite senior developers than I did. When I got my first code review back, there were several disparaging comments which really made me feel sorry for not doing my second masters. This really made me ponder as I was walking back home another day in through the rain, hail and snow ( the last two are rather unusual for Seattle this time of the year)...Does school really prepare you for work? If not, why are there not more revolutionary techies like Bill Gates and Steve Jobs. I know it is not fair to compare people with a superior genes than ordinary ones. How do you think they might have turned out if they had decided to stick with their college degrees?

Lets see why we need to go to school at the first place. Hmm...to be room mates with your best friend in school...to go to wild frat parties...to wear your college colors and cheer for them on game day . These are really good answers, mind you but these shouldn't be the only reasons to go to college. Well, if most parents would tell you that you need to go to college to get a good job. That is partly true but the true point of going to college is to prepare to handle the real world. I mean the REAL world. The kind of world where you didn't have your Dad do the dishes when you broke your hand. I am unreasonable, but even Neo was shaken up when he found out what the real world was from Morpheus.


Pic1: Carrier Dome, Syracuse University, NY

First and foremost, college really teaches how to be independent. This is probably the most important quality needed for a Software Engineer, and a matter of fact, any job. You should be able to handle and get things done on your own. Yes, you got help from your friend born in "FormalMethod"us but it was ultimately you who got the job done. Secondly, it helps you handle adversity all by your self. There have been several times when you felt the whole world was resting on my shoulders. But as it happened more frequently you would have seen your shoulders take it much better. At work , there will be times when there would be bugs needing immediate attention, to save the planet. And most of all, college prepares you to handle people. In college, the number of people you meet in any given month would beat your non college month by at least 10 times. Among these would be the most annoying, most intelligent, most athletic, most sexy, most artistic, most geeky people whom you would have ever met. In doing so, you give your people skills a big boost and give yourself a good chance for doing well for yourself.

I think our industry should not expect fresh graduates to write production level code from day one. If the person has graduated college he has probably demonstrated that he can get things done and see it through completion. Apart from people from "JobsGatesville", college is really important in preparing one to take on challenges in real life. I think most interviewers are a little too harsh when dealing with college hires and expect them to have the same level of expertise as them. In face, a college hire can bring in so much more energy and fresh air to the team that the learning curve is justified. So please be patient with your new hires to get to the point where they can contribute. After that, its how hungry each one is to make the big leap. Sometimes, it is good to have an "NFL sized hunger"!