Friday, February 4, 2011

Code Review Objectivity

I've just re-wrote a serial driver and other people are starting to use it and modify its content. I would be the ideal code reviewer, as I know all the ins and outs of the code base; however I'm also the worst to review the code. When you develop code you start to build an affinity to it. You start to lose your code reviewing objectivity as you demand that your code be treated with the greatest respect (notice how I said 'your' code). Things like tab vs. space, code formatting, and readability somewhat minor in detail when you write code owned by someone else, seems now paramount. You can't let someone shit on your shit!

So what's wrong in this situation, is it you, is it the developer modifying your code?

It's actually all the above. You and your peers are not in line with each other on code quality, maybe your company has a loose interpretation of what is involved with code review. And truthfully we're looking at this subject with a microscope when we should really be looking at it from a 50,000 foot perspective. What's really wrong is not this specific code review it's your alignment of what is appropriate for code review with the goals of the company and/or project. If you want to say that quality is of the utmost importance, then you as an island, can't enforce this yourself, it has to come from above.

Let’s take a parallel, how would someone lose weight - the answer most of you would say is, “go on a diet”. WRONG!

You lose weight by not thinking about the immediate, you not only have to change your eating habits you have to change your whole lifestyle. And this is the same thing when it comes to code review.

So the next time you poo-poo on someone else's code as a reviewer or a developer, maybe you should ask yourself, what does the company/project warrant you to do? If you don't know or someone hasn’t outlined this to you - think you might have a problem.

Monday, January 24, 2011

Your Virtual Self

In this new age of social networks and online contacts I'm finding more and more that I have a virtual personality and a real world personality - And the onset of Multiple Personality Disorder (MPD) is basically setting in. Are you more available as an online entity than your real world counter-part? Do you tell the person interrupting you at your office to wait until you finish this email, that you've been composing, rather than talking to him/her first? As the world becomes smaller, where global teams become common place, sometimes I mistake my virtual life with my real life. Recently the Pope addressed social networks as a great blessing but warns us of impersonalization. I'm not religious however it doesn't lesser the impact of his statement. As I grow more and more accustom to social media as being the norm the less and less the statement "know thy neighbor" is true. As a software developer you grow accustom to communicating to your computer, maybe you're able to communicate with your computer better than you do with people. Sitting behind a desk hammering out the latest and greatest new app does that to someone. But like many things you have to fight that urge. The road of familiarity, somewhat easier, is probably not going to get you to where you want to go. As the new year resolutions have passed (yes I know about how trustworthy and concrete a new's years resolution can be) I feel that 'know thy neighbor' is a great start to a resoution.
When's the last time you picked up a phone? maybe you should,... and call someone?

Friday, January 21, 2011

Degrees of Separation

First I would like to apologise to the limited readers of my absence from this blog. Sometimes you start something, in which you want to keep up but time is always the enemy.

The age of always being connected, always being up-to-date with the latest news has it's disadvantages. Before the age of the Smartphone there was a degree of separation, workers were able to go home, not think about work until the next day starts. Extremely therapeutic. Unfortunately this degree of separation has vanished with the invention of the text message, mobile emails and on-demand web access. I always try to make it a rule that after coming home from work I at least take 15 minutes to try to unwind, forget about what happened at work, good or bad and start my home life. I've recently been blessed and cursed with a work blackberry which now has me tethered to work every waking minute of the day, and sometimes even when I'm asleep. This 'intrusion' is self inflicted. I choose to get updated by this little thing that buzzes every few minutes. It's sort of like a car accident; you HAVE to look even if it doesn't involve you. And you want to do something if it does involve you no matter what time it is at night. I can imagine the world running through this same scenario over and over again, constantly wanting to get updated. It's a bad feeling to tell you the truth. I'm reminded of myself as a budding teenager waiting by the phone for that girl to call, it puts you on edge. We're losing the battle for mechanisms to keep us separated, and we're asking for it with every technology innovation that we develop to keep us 'connected', in-tune with the rest of the world. So it really comes down to self discipline, a simple act of leaving that tethering device in your jacket pocket can really do wonders for your sanity. Getting that buzz from an email notification and *not* checking it is painful at first but is necessary. The emergency will be there tomorrow. As long as it doesn't cost too much money to fix it the next day verses at 11pm at night, I think it's good to keep your sanity.

Self-discipline. So the next time that thing buzzes, maybe you should really think twice about answering it right away. Maybe you have more important things to-do outside of work.

Many thanks for read

Quan.

Thursday, November 11, 2010

Remember

Today is Remembrance Day, lets all take a moment in the day to remember the struggles that our soldiers went through. Giving up house and home, giving up being with their families, giving up themselves so that we can be free, so we can be safe, so we can have the freedom that we take for granted today…..

That’s all.

Tuesday, November 9, 2010

Entitlement


A few years ago I got a tattoo of Goku on my left shoulder. It took about 6 hours... He's my hero. Now you're basically asking yourself why would you ever get a cartoon character permanently tattooed on your shoulder?

He, unlike people, represents an infallible idea - the hero. But there's a twist to this character that some heroes fall short of.

While I was building my career (which I'm still doing now), and getting some momentum and confidence, I started falling into the trap of entitlement. I still fall into this mindset occasionally.

I am entitled to recognition for my work, promotions to something better, higher paying salary - and I see this every single day. See Goku, he goes above and beyond in everything that he does and expects nothing. He's gentle, almost to the point of docile and yet he's recognized as the greatest warrior out there. His friends depend upon him to save the world and he asks nothing in return. When I see myself starting to fall into this trap, that I 'deserve' this, and I am entitled to 'that', I look at this tattoo to check myself, to not let this thought process continue. Now the world is not as black and white as a cartoon character, but there is a happy medium. But striving to be better, to consider everything you have as a gift instead an entitlement makes me feel better. I strive to be this person within my career and within my life. All these things will eventually come, focusing on your values and your goals and achieving them with a little bit of humility is probably more important than the end result.

Monday, November 8, 2010

The Lone-Gunslinger

Picture yourself in the Wild West, all you can trust is your sturdy horse, a few bucks in your back pocket and the hint of gunpowder as you polish your gun in the hot desert sun. Yeehaw! Brings you back home, doesn't it?... OK maybe not.

Alrighty...How about the dark and musty room, by your side the familiar hum of the computer fan, the ticking of the hard drive as it starts to boot up and the mechanical beep as it does the initial memory check... Yeehaw! As you strap yourself in, your favourite command prompt loads, the flashing of the input cursor begging you to make that first keystroke...

So back to reality. As much as you've heard the stories of the lone-gunslinger, and potentially how that parallels to the lone-coder, you really don't want to be in that position; even though that type of a character is romanticized.

I learn by a number of ways, by reading, by doing and by collaborating. And I want to point out the most important part, collaboration. The lone-gunslinger will always be the lone gunslinger, and nothing more. You want to rise above this type of stereotype. You want to grow not by just reading and doing but by collaborating, by sharing your experience with other devs. By joining a community where you learn from others as much as they learn from you. What a great world we live in where this archaic notion is blown to pieces with the sharing of ideas through the tribes of the internet. The lone-gunslinger as the lone-coder is going the way of the dinosaurs. Get out there, share those ideas, it’s a brave new world....

Thursday, November 4, 2010

Overtime Blues - Part II (The Minus Developer)

I read over my original post and there seems to be a lot of blame on management as to why things are late. But I want to make it clear that this is only one out of a many contributing factors that make a project late in which someone has to pull up the slack. Additionally when I talk about overtime I don't mean working a 45 hour week and calling it overtime. A misuse of overtime is working 60-80 hours a week on a constant basis for long stretches of time. Here you have to question what is wrong. So what is another contributing factor that might make a project late which someone is 'required' to do overtime.

Staffing.

(Definitely not my idea)...
On a team everyone mentally ranks each other between a scale of 0 - 10, 10 being the most productive kick ass dev while 0 means the worst unimaginable, wish you never got hired, developer; But, what if we slide the scales to the left to give a better interpretation of what this really means, -5 to +5 rating. In this case if you sum up the team's productivity based upon the rating of all developers you get a clear understanding of who is pulling their weight (0 ranking), who is extremely productive (+3 - +5) and who is dragging the team down. Think back to all the projects that you've done within the past. Have you been on a team with a minus developer? Did you know he/she was a minus developer from the get-go? What did you do about it? Within this mine field of ranking people we tend to really do nothing about it so we do not hurt their feelings. And in almost all cases it really isn't your business as a developer to rate your co-worker, this interaction should be between that developer and their manager. However there is this misconception that labelling a person as a minus developer is negative. In some aspects this is true, but flipping the tables identifying and applying some action on a minus developer is actually a good thing. In most cases firing this person is the last resort, but there are levels of grey which we can explore. Why is this person a minus developer? Usually it’s not about a person's intelligence. If a manager can identify a root cause then potentially this can be fixed. Is the type of project which he/she is working on geared towards a cowboy style developer while this person is a perfectionist? Potentially this person wants to work on low level work but you're making him/her change the background color of an icon on the GUI? Maybe he/she wants to refactor everything to make it better and basically needs a little focus as to the goals of this particular milestone. In any case, ask yourself why you are doing overtime, is it because of someone? Maybe there is something you can do to help this...