Wednesday, August 22, 2007

Passion for technology ...contd

Before you start reading, let me warn you that this definitely qualifies as a *RANT*

Software Architects and “Passion” for technology.

A lot of the time when talking to people who are in the field of software technology itself, I get the distinct feeling that people feel that “passion” for technology is the same as having a “knowledge” of technology. I tend to disagree. And Strongly.

In no way, is KNOWLEDGE (either in breadth or in depth) of technology the same as a “Passion” for technology. There is a HUGE difference between the two. Knowledge of technology is what provides the technical know-how to create a solution. BUT, “Passion” is what ensures that this know-how is used in the best and most suitable manner.

Let me cite a simplistic example:

Common SQL best practice: Dont use Select * in your Select statements. But, i have come across a specific scenario in my projects where i thought it made SENSE to use Select * because the usual drawbacks associated didnt apply in this case and the benefit was flexibility, which we wanted.

So, if i go just by the standards, i would end up writing a lot of different SQL statements for something that got very cleanly handled with just one statement.

What i am trying to highlight here is that there are always standards and references but not always is the decision to choose which is applicable and which is not, IN A PARTICULAR CIRCUMSTANCE, always a straight forward or a obvious one. And in such situations, I think it is the “Passion” that I refer to, the “FEELING” to do the “correct thing” which makes a difference as to whether the selected choice is the best choice.

I thought about it honestly and wondered if I could just call this feeling “Common Sense” but I decided against calling it that because I have myself been in a lot of situations where my “Common sense”, if I use it, points me to the right solution, but I have honestly not “CARED” enough about technology and have had no qualms about choosing the worse of 2 available options just because the worse one was more convenient or faster or easier or something i already knew and did not have to spend time learning about.

Think about it: You must have worked with people, maybe even yourself, who made mistakes inspite of knowing that what they were doing were a mistake. I definitely have detected loads of code review defects, which i thought should never have been there, especially coz the developer agreed point-blank that there was no justification for them not implementing it. This is a direct result of the lack of the very “passion” that I am referring to.

There is another commonly used argument against “Passion” which is that people with “passion” for technology are so absorbed in it that they will ignore the customer needs / project constraints. I again disagree.

a. I think it is more of a assumption that people have that a person with a “Passion” for technology is oblivious to customer needs / constraints. I think any reasonably intelligent person understands that there are ALWAYS constraints in doing anything and that applies to software as well, just like to any aspect of life, for that matter. So, the assumption that someone who is passionate about technology will forgo all his customers needs or benefits or all the constraints that apply to his work, outside of his control, seems to be more of a knee-jerk reaction to the “geek” cliché rather than anything else.

b. I dont see any reason why a person who is passionate about technology will be any more oblivious to his overall environment than a person who is not passionate about technology. Does being passionate about technology make a person unreasonable or vice versa? I think neither.

c. A Passion for technology is not something as narrow or restrictive as “I like .NET” or “SAP is the best”. A passion for technology is the belief that SCIENCE (which gives rise to technology) can and is being used to provide and create SOLUTIONs to PROBLEMS that exist. And anyone who thinks with that defintion of technology would probably not be easily swayed from his customers requirements or constraints that exist.

So, at this point, to rephrase a question once put to me,

Would you rather have a architect who is passionate about technology and who can understand and work with it within his client’s needs and constraints

OR

Would you prefer to have an architect who understand the clients needs and constraints and knows technology (but doesnt really care much for it)