| Funny, I arrived at this "all software is.." piece last week. Hypothesis: All of software *is* about change management
---- It dawned on me that all the software design efforts - Design patterns, programming styles, management practices - are all geared towards one thing at its core - managing change. For example: * Command pattern: Figure out all the things that can be called and instead of a giant if/switch, look them up by name and call them. That way when you need to *change* the list of things you want to call, nothing else is affected. * Structured programming: Keep the common code in one place and call them from many places. That way when the common code *changes*, we can contain the change to one place * Object Oriented Programming: Keep the data and behavior common to one actor in the system contained in an object/class so that when it *changes* we have to change only that thing. * Functional programming: *Changing* data is bad. Instead create copies of data and change them. * Scrum: It's hard to predict too far into the future because things *change*. So let's try to plan for just the next n weeks. |