Patterns are a cornerstone of object-oriented design, while test-first programming and merciless refactoring are cornerstones of evolutionary design. To stop over- or under-engineering, balance these practices and evolve only what you need.
These days, thanks to Lean Startup and Lean UX, I'm fairly obsessed with the idea of faking things. Faking product ideas, faking product features (see Fast, Frugal Learning with a Feature Fake), faking whatever is necessary to help us rapidly and economically learn about customer needs. So I was extremely impressed the other day with [...]
[Read more...]There are moments in software development when ordinary or common usage of an API, library, language or tool won't solve a programming problem. At such times, some programmers retreat and consider alternative solutions that rely on simple, ordinary code. Other programmers refuse to give up and push forward to find whatever uncommon or arcane parts of [...]
[Read more...]