At times, we tend to over engineer and totally forget about our users. We have to balance engineering effort, metrics and user experience. Striking the right balance can give great results.
Mailcheck.js is one example. On one end, we can make users type in their email address twice. That's optimizing for the 10%, at the expense of the 90% who are typo free. And on the other end, you can engineer a fantastically great solution - predictive analysis, MX record checks, etc. That's exponentially more work for a marginal return.
Mailcheck was born out of analyzing email bounce data. We knew exactly what we had to solve, and the most engineering efficient solution naturally evolved. This resulted in a big improvement in metrics and user experience.
Simplicity goes a long way. Don't over-engineer your solution and don't prematurely optimize. Keep it efficient for engineering, and keep it simple for your users.
I discussed these concepts in my talk at the O'Reilly Fluent Conference. You can also catch me on Twitter over here.