Remember learning about fractals in math or science class? They’re repeating patterns that can be viewed at any scale. That is, keep zooming in on a fractal and you’ll keep seeing the same image — and the same complexity. When a project is first estimated, requirements are usually written at a high level with relatively little attention to detail. That’s especially true today, with the current focus on early releases, beta software, and fast iterations. Why write down a lot of details that are likely to be thrown away before implementation when the first customer release sends the app in a completely different direction?
How many times have I sat across from a client or potential client vigorously flogging the term “custom software development” to describe what they needed done (or thought we were doing ) and found that the client and I had vastly different understandings of what that term means? It is incredibly disconcerting to expect to see a cat and, instead, see, say, a loaded baked potato . . . or a mini pig in a tutu . . . or, less fatuously, auto manufacturing. What, exactly, is custom software development?