in reply to Re^3: defining methods on the fly
in thread defining methods on the fly

Anyone can fix simple code, good or bad.

Oh good, the second great fallacy of maintainable software. I eagerly await your mother's patches to my vector-space text correlation engine.

Replies are listed 'Best First'.
Re^5: defining methods on the fly
by Anonymous Monk on Aug 03, 2006 at 20:52 UTC
    I eagerly await your mother's patches to my vector-space text correlation engine.

    Step 1: Read the specification of the algorithm from which you coded said engine. Step 2: Fix your coding flaws (the difference between what the algorithm says to do, and what your code does instead). Step 3: Profit. ;-)

    Note carefully: coding is NOT the same thing as developing new domain knowledge. Coders write down existing domain knowledge written in English, and translate it into steps simple enough for a computer to understand, in a way that is clear, obvious, and correct.

    Sometimes, in their hubris, coders make the fatal error of inventing their own domain knowledge instead of consulting the experts; this is a primary source of both coding errors, and badly re-invented wheels.

    To further confuse the issue, in some rare cases, such as the realm of mathematics, the coder may in fact BE the local domain expert, but make no mistake, the roles are distinct.

    A good expert still double checks his expertise; mathematicians peer review their algorithms among as many experts in the field as possible. Physicists don't trust an experiment until it's been duplicated multiple times. Engineers wait several years for a new concept to "stand the test of time" before they adopt it. Outside an R&D lab, people do what's been done before, and is known to be correct, and they rely on the knowledge of trained experts to accomplish it. For coders, that task is one of a highly specialized form of technical writing called "computer programming".

    If my mother was a PhD in Mathematics with a specialization in vector spaces, I doubt she'ld have much trouble debugging your flawed implementation; but only if that implementation was laid out in a way she could read and understand.

    Also, if my mother has access to a domain expert, and can understand what the expert is saying, she can fix the code, if it's well written. To do this, she needs good communications skills, and a minimal ability to read and write code in a uniform, obvious way. A basic understanding of the problem domain may also be of benefit.

    To me, it isn't a fallacy that anyone with a basic grounding in coding can fix code flaws, given sufficient documentation and clear code. The real mistake seems to be the notion that experts aren't needed, domain knowledge is irrelevant, or the insidious notion that arises in certain circles which suggests that coders are more important than the thing coded...

      And your mother is obviously going to be writing well written and easily maintainable code using good programming practices with no training whatsoever, because is just that easy.

      After all, it takes a degree in computer science before you can screw up programming.

      A reply falls below the community's threshold of quality. You may see it by logging in.
      The real mistake seems to be the notion that experts aren't needed, domain knowledge is irrelevant...

      That was precisely and simply and exactly my point. I don't care if a novice can't maintain my vector space categorizer because it uses some advanced programming techniques. If you hire a novice without domain knowledge to maintain that code, your problem is completely exactly not that he might, gasp horror, encounter a closure in my code.