What Heretical Programming is not. Like all people who make things up, I get the first go at saying what this is not. Heretical programming is not the common practice of saying. Yes we are an OO shop we do OOA, we care about quality, when you get down to tin tacks, you find lots of Oh we don't do THAT bit. In XP, the that bit is probably frequently pair programming. In OOA, it is is full-blown diagrams that actually track changes in requirements even when there are deadline pressures. Heretical programming is an approach that can best be described as Horses for courses. Heretical programming is not an excuse to write cruft. Every aspect and module of a heretical programme should be clearly justifiable by some reasonable belief system. (OO,XP,Function decomposition,encapsulation) Use of different belief systems is not allowed (encouraged) at any kind of micro scale. Example is Is Ok to write an Xp program in terms of some new fundamental data types (crisp crunchy OO objects specific to this domain). Do not justify one line of code by OO and the next by XP. When you find out what I mean I expect that like, the XPers do and the OOers do, to get lots oh yeah but of course we do THAT. Like them, I will then say, "so why didn't you say that's what you did?" They will say we did. Then the conversation will have reached a stalemate and we can all go back to crafting good software. When I find out what I mean I expect that I will say, Oh that's what I should have been doing ALL the time instead of just most of the time. ---- '''WARNING WARNING WARNING DANGER DANGER DANGER''' '''Aliens Approaching Will Robinson''' The following information may be a dangerous meme. (mind virus) If you do not feel sufficiently inoculated by your years of experience programming read no further. Seriously though, I may be advocating breaking some rules, which something I rarely do in public lest the children overhear and think that it is Ok to do so. This and the preceding paragraphs are a fence in an attempt to keep the Cowboys out. Another caveat is that this has worked for me in the domains in which I have worked. It may not be the horse for your course. ---- When I program I: in a FuzzilyIterativeSequence * GrokTheProblemDomain ''contrast with XP OnsiteCustomer'' * GrokTheseUsersProblemInThatDomain * BuildTheWellDefinedObjects ''Contrast with ArchitecturalSpike/ModelFirst'' * DoXpOnTheRest Parallel Processes and concepts. * OperateInTenMinuteCycles * WatchOutForBeingStuckInaRut * DesignTheSystemAsaGrowingThing Note I seem to have some work in front of me populating these pages. ''Note that I have the distinct feeling that you ReinventingTheWheel in terms of pages. But I did not check, I could be wrong; it could also just be that you document CommonSense.'' As has been pointed out somewhere, Common Sense is in fact uncommonly uncommon and very hard to learn. I suspect that I am reinventing the Wheel and I know the names of some of the pages where the wheels probably are but at the moment I seem to disagree with what I think the authors meant when they tried to type what they thought. Out of respect for ideas that I think I agree with but not the arguments or the descriptions I have chosen the quite path of spinning my wheels here where I do least Harm. Least Harm in the sense that on those other pages there are discussions by XP proponents and others and I do not wish to cloud the issue by making it a three-ringed circus. -- AlanChristiansen