[snips]
OR
why coding skills are not given much importance ?
Mostly, IMO, because few are competent to judge it. In an example from
work, just this past week:
We've got a monitoring system which involves two chunks of code running
on two different machines and four databases. The data needs to be
recorded to one DB, mirrored to another, then massaged and delivered, in
processed form, to two more.
The design requirements are pretty simple, and the code was designed to
handle outages - cases where the DB didn't respond, that sort of thing.
In essence, every problem the code would run into in the real world, from
power outages to accidental database wipes, was dealt with.
So what happens? They want a test, which we do by "injecting" two years'
worth of "virtual" records. So far so good, but then they do it again,
using slightly different data, and everything breaks - the databases get
completely hosed, the reports are junk, we're seeing reports of days with
48 hours in 'em, that sort of thing.
Their conclusion? Something's broken. Proper conclusion: if you
invalidate the contract against which the code was designed, things are
going to break.
This is the same sort of thing as designing an above-ground parking
garage, where each level is basically just flat concrete with painted
stalls on it, then, after it's built, adding on planters and sidewalks
and those cement "stall bumpers". When you add all that extra weight,
when you violate the design contract, what do you expect to happen? You
expect the garage to collapse from all the additional weight.
Yet when it comes to code, for some reason the world works by magic. We
did some testing, things broke, obviously the system is fragile, poorly
designed. No, it's not, it's very well designed, it's just not designed
to handle poking fingers, any more than it's designed to keep working if
you uninstall the underlying OS.
The really sad part is, I'm seeing this sort of thinking from technically
skilled people who, even if they don't understand the code, should at
least understand the underlying principles, yet here they are, whining
that it's too fragile.
Yet these are the people who, at least here, would be the ones to decide
whether the code quality was sufficiently high. They can't; they don't
even grasp the concepts, let alone the details, and we're in a situation
where the people involved *should* be able to do this, which is not the
norm.
Coding skills? Who cares, as long as things work? It takes a really
unusual environment to even be able to recognize coding skills, let alone
determine the relative level of skills involved.