uPWarrior wrote:In my experience, that approaches frequently leads to "perfectly solving the wrong problem". Especially in home-made projects, one should not be too attached to the initial requirements in order to keep the motivation high with new and different ideas.
With that statement I am beyond disagreement. I don't comprehend it. What do you mean by "wrong problem"? How would coding enable you to discover this? You set out to write a go playing program but decided you really wanted one that played chess? Do bookkeeping?
The definitions/decisions about what your program is supposed to do have to come long before you dive in to code it. Nor does it make all that big a difference whether this goal is set by "management" or yourself. ROFLOL back in the days when it
was management deciding what I would be working on rarely was that fixed in stone (I was a critical resource and so only very rarely ended up doing what was planned for the next six months --- I think only Y2K went as planned and even then I had to jump over to redo the first "done by tools" system when it went into production and serious problems surfaced).
After retiring I decided what programming to do and in what languages (when you are already fluent in half a dozen and can at least read most any adding a new one is easy). But if I
chose to write a progam to do this or that (say a finite implementation of the 2nd Lempel-Zev Universal Data Compression Algorithm directly from the definition -- the "case problem" I chose for deciding if I had learned C) I would be disappointed (consider it a failure) if did something else. Even if that something else was a perfectly good (but different) compression algorithm. Or even the very useful/practical closely related alternative that used a fixed size dictionary (instead of one starting at the character set and growing to some finite max size). Because not the problem I
chose to solve.