I think deciding whether to build or not to build reflects the larger paradox of programmers saying over and over again that we shouldn't re-invent the wheel...but then doing it anyway, out of a desire to get a perfect/"right" solution. Or maybe just out of an urge to understand the system fully (this is why I myself re-invent wheels all the time, because I want to understand the deep logic behind the "right" way). And yes, if you have all the time in the world, you can probably make a beautiful perfect thing. But we don't, ever.
Anyway, here are some examples from our own org where hindsight is 20/20, and where the decision was "code the thing fully, or not?"
- Our contact form. Originally built as its own app within Django, probably out of a desire to do things the "right" way, i.e. the Django way, i.e. to have the url map to a named view of an isolated app. However, this meant that it had to be configured with Mandrill, that it stored every communication in the database, and that it required tech's inte