Desarrollar software lleva mucho tiempo y encima hay que depurarlo todo, añadirle tests y todo eso.
La gracia es que hay que amar hacerlo (o nadie va a tomarse todo ese tiempo para tener algo acabado). Imaginate tener que iterar un montón de veces sobre algo que ya es un dolor de huevos hacerlo incluso una sola vez. Es como que uno quiere gritar: "ya está, ¿cuántos más problemas me vas a dar?". Pero el software es así: falla y falla, hasta que ya no falla porque sufriste lo suficiente.
Esto encontré muy difícil hacérselo entender a las personas que no saben nada sobre desarrollar: ellos creen que escribir código es algo simple, que es sólo teclear, y básicamente ni la mínima paciencia tienen hacia los bugs en desarrollo (si se enteran que los tuviste). Ellos analizan todo desde la óptica de producción (del software ya publicado). Por experiencia, es preferible que ni se enteren.
El desarrollo en sí es que cada nueva característica trae bugs, hasta que los arreglamos.
Mi regla es tratar de aislar todo lo que puedo, aunque a veces me veo obligado a comunicar distintas partes de la aplicación y ésa es la parte más compleja. Hay que tener mucho cuidado (y cuando ya estás deseando el siguiente proyecto, es fácil cometer errores por apuro). Así que la regla es depurarlo, hacerlo perfecto y no tocarlo hasta que no estés dispuesto a sufrir para arreglar los bugs.