TITLE: Quotes of the Day: Constraints on Programming AUTHOR: Eugene Wallingford DATE: November 26, 2012 3:24 PM DESC: ----- BODY: Obligation as constraint Edward Yang has discovered the Three Bears pattern. He calls it "extremist programming".
When learning a new principle, try to apply it everywhere. That way, you'll learn more quickly where it does and doesn't work well, even if your initial intuitions about it are wrong.
Actually, you don't learn in spite of your initial intuitions being wrong. You learn because your initial intuitions were wrong. That's when learning happens best. (I mention Three Bears every so often, such as Bright Lines in Learning and Doing, and whenever I discuss limiting usage of language features or primitive data values.) Blindness as constraint In an interview I linked to in my previous entry, Brian Eno and Ha-Joon Chang talk about the illusion of freedom. Whenever you talk about freedom, as in a "free market" or "free jazz",
... what you really mean is "constrained by rules that we've stopped thinking about".
Free jazz isn't entirely free, because you are constrained by what your muscles can do. Free markets aren't entirely free, because there are limits we simply choose not to talk about. Perhaps we once did talk about them and have chosen not to any more. Perhaps we never talked about them and don't even recognize that they are present. I can't help but think of computer science faculty who claim we shouldn't be teaching OO programming in the first course, or any other "paradigm"; we should just teach basic programming first. They may be right about not teaching OOP first, but not because their approach is paradigm-free. It isn't. (I mention constraints as a source of freedom every so often, including the ways in which patterns free students to create and the way creativity needs to be developed.) -----