Monday, April 27, 2009

Software Development: Pros vs. Hacks

I've been mulling over this one for quite some time.

I'm looking to define the difference between a Software Professional and a Software Hack. Hack, defined by urbandictionary.com
A temporary, jury-rigged solution, especially in the fields of computer programming and engineering: the technical equivalent of chewing gum and duct tape. Compare to kludge.
That's definition number two, not to be confused with "hacker," the first definition:
To program a computer in a clever, virtuosic, and wizardly manner. Ordinary computer jockeys merely write programs; hacking is the domain of digital poets. Hacking is a subtle and arguably mystical art...
That last one I would more readily attribute to a Professional, though when you start talking mystical I think overly complicated.

My definition of Hack is pretty much the same. Someone who knows enough to get the job done functionally, but fails to take into account the bigger picture.

For example, your requirement is to store credit card numbers. The design phase, for a Professional, would include questions like:
1. Should we store this encrypted?
2. Who/what will be able to "see" this number?
3. What built-in options are available to help secure it?
4. Will it propagate to another system?

That's for starters anyway.

For a Hack, it would be:
1. Do we store it in a VARCHAR2 or NUMBER field?

And then?

And then it ends. Coding begins.

Hacks say things like:
"We'll get to that later."

"We don't have time for that right now."

"The business needs this NOW." (i.e. we don't have time for that right now).

"Fixing that is too much trouble." (i.e. we don't have time for that right now).

Which leads me to this question:
How do you prove that the Hack's way is wrong or bad for an organization in the long run? Support costs are higher right? Same goes for basic maintenance. Is there research out there that shows this definitively though? I feel like I know this intuitively, that's it is cheaper to spend (a little) more time in design to try and take into account all that you can.

"We don't have time for that right now."

I understand you have to balance what needs to get done with doing it the right way. I've always understood that. I think I had a good upbringing.

"We don't have time for that right now."

Yes, you do.

Who Makes The Decision?

I believe that the Business drives IT, not the other way around. Yes, we know how to automate things, but rarely do you find someone in IT who knows more than the Business.

With that said:
A Professional will give the Business Option 1 (a hack), Option 2 (a true fix) and Option 3 (a blend of 1 and 2). The Business will then make the decision (since they pay our bills right?) based on the information at hand.

A Hack will give the Business Option 1 (the "fix") and Option 2 (technical jargon that sounds like something but doesn't really do anything). The Business will choose Option 1 because they believe that to be their only choice in the matter.

In summary, Hacks do have a purpose...I just don't know what it is yet.

5 comments:

Anonymous said...

Wow! That's interesting... Twisted point. Sometimes I was a Pro and sometimes I was doin a Hack... Who know which one is better !!!

oraclenerd said...

I was a Hack before I became a Pro (as least I hope I'm not self-delusional in that regard).

I think more than anything it was the type of questions that he asked (and shared) with the rest of us. He made us think about more than just our own little piece of the pie.

Having a good mentor and the willingness to subjugate one's self is helpful as well.

jbl said...

Good post!
Using your semantics, I submit that it's the business which dictates whether one is a "hack" (need it now) vs. a "professional" (build it solidly). More often than not I am told to just "get it working" rather than "it needs to run in O(n)".

oraclenerd said...

@jbl

Good point.

I think you can still be a Professional but get it done now. The difference being that you presented the case to the Business. A Hack wouldn't know or wouldn't care to do that.

oraclenerd said...

@JT

Good one. Very nice complement (if just not better) to this one.