The Source for Java Technology Collaboration
User: Password:



Start New Message Delete Post a Reply

Article: 
 The Blacksmith and the Bookkeeper, Part 3
Subject:  problem domain, not programmer
Date:  2004-10-16 23:21:58
From:  kyuso


It's the problem with the definition of 'programmer'. If you mean someone who translates a specification to code given a restricted set of programming language for a restricted set of problem domain, then of course if the problem domain becomes trivial to solve through automation or is no longer needed, we can call it a demise, just like in the case of blacksmithing.

But software is not restricted to a particular domain, and the problem space that software can solve becomes bigger and there is no lack of need for human intervention.

Even the definition of software, if simplified to mean a design and implementation for controlling a tangible, programmable system given external feedback and internal state, would incorporate immense problem domains.

Programming is here to stay. It's the problem domain that disappears. The name may change, depending on what problem domain one is tackling.

This also parallels the problem with genetic evolution without intervention. All designs, from trivial to complex, needs an external stimulus, be it a guide, an optimizing (fitness) function, or a design goal, which can only be made by someone who can see a higher level of abstraction than the automated process.

How do we know that the one the genetic programming gave out was the best solution for that problem? And who decides whatever it gave out was good enough for that problem, without looking at past designs made by someone who decided it was good? How do we decide in advance how to measure fitness, without looking into almost infinitely large solution space?

So in the end, programmers working on problem domains that become trivial to solve will disappear, but programmers are always needed for any complex problem domain.

Usually the misunderstanding comes from a limited knowledge, thinking that all problems can be solved by scaling an existing solution to a smaller but similar-looking problem. This is exactly why AI failed to show the promise that it would solve all problems, where it only generated solutions for a few restricted problem domains. This will be the same for genetic programming and many other advanced tools.

Eventually, as technology advances, we will become awestruck at how grand the design of the universe is.

 Feed java.net RSS Feeds