I'm starting a fulltime position as an educator as opposed to a software developer. Most development jobs in Hong Kong require bilingual people and focus on financial applications. I am also a little burned out with fighting battles in IT.
But I shall continue to code on the ferry and on this island and release here at this site. I will do so without any time constraints and no limit to "factoring".
That is, if at a certain point in development, I think "gee, it would be nice to have a class that did xyz," I will simply develop the class, document it in Microsoft word, and release the code at DeveloperDotStar.
For example, at this point in the development of the Spinoza language, I have realized that humanity needs a solution to the problem of character sets.
They were easy to represent as strings in ASCII but it is impossible to do so in Unicode. Therefore there shall be a character set class. Real soon now.
In a limited sense this was my modus operandi in industry and in Build Your Own .Net Compiler and Language, which is why a rather rich utilities.DLL library was shipped with BYO. But in both areas it created schedule problems because I was not able to predict when Inspiration would strike.
The question is whether such "unlimited factoring," such "always be abstracting," Dan Read's phrase, taken to the max, would not be a journey to The Mountains of Madness.
Physicists want to find a Grand Theory and think it must exist for almost theological reasons. The question with regards to code is whether if everything were factored, there would not be strange loops.
Now, trivially, if solution a uses solution b, and solution b, through a chain of 0..n length, calls on a, this is solvable as recursion. As long as the "deep recursion" is not "deterministic" (in the sense that the deep call of a is unconditional code) then this works fine!
What I find interesting is that this is a sociological question. Do the micro structures of society, its business rules, even make any sense?
Mike Moore spoke to Representative Charlie Rangel of Michigan about how Congress makes new laws such as the USA Patriot act. Rangel told Mike that generally, Congresscritters don't read the laws they pass...perhaps for the same reason managers never read Cobol.
If you actually go to a law as published on the Web, you often find (as was the case for Patriot and the recent riot act read to us happy debtors, the new bankruptcy law) that the law is just a "delta file": it's written as a series of modifications to existing laws!
Which of course makes both "Patriot" and bankruptcy completely opaque to the ordinary slob and this might be its purpose.
It is to me sad and ironic that ordinary hard-working American programmers actually try very hard to write clear and well-documented code while their damn representatives can't be bothered to either read the laws they pass or write them down clearly!
This indeed may be why in corporate MIS the best coder and documenter often is nonpromotable, not only because he's "indispensable" but also because there is as you go up the organization an increasing amount of necessary BS and lack of transparency.
Which is why I am in the educator business today. It'd be great if some company would pay me to write only what I wanted to write, in a situation similar to those of researchers at the Institute for Advanced Study. I would probably make them rich by throwing off good tools, but in the real world, there are many programmers who feel the same way, and it's definitely not going to happen...in part because I am a bit behind the curve...with my focus on .Net and not Linux and embedded.