Malleable Systems: Software must be as easy to change as it is to use it
I think it's a pipe dream. Non-experts making changes to a system an expert wrote will yield either: 1) very few little changes, such as changing the color of an item, etc. Or 2) disasters where it's better to throw away the changes and start over doing it "the right way".Just look at automobiles: They are malleable indeed. We've all probably seen pics of modifications of all types, from the hillbilly type VM bug/truck combination to the amazing Cobra replica that few can tell from the real thing.  In all cases, the craftsmanship level (and budget) of the person doing the modification directly affects the quality of the result.  And how many cars are there whose modifications simply failed and the car never hit the road again?The same in software. Give Annie in accounting the ability to modify the inventory system and you will have a disaster in your hands, especially if she does not know much about the architecture of the system and/or she's not a matter expert on inventory methods and procedures.  In that case I'd much rather trust my company to a hard-to-change system than one where everyone can mess with and break it beyond repair.I think the false premise here is that non-experts can build on the work done by experts. And I'm talking about both experts in programming who built the system in the first place (ie, add shitty architecture on top of good architecture), and experts in the domain the system is solving. If you get a smart your developer who is a solid coder to make changes to the aforemetioned inventory system, he will probably break the system (at least in the edge cases), albeit with beautiful, readable code.I just don't see how it's possible unless the ability to expand the system is severely limited (ie, not a "malleable system").