There are couple of aspects to the Good Software Programs, often expressed by
- Efficiency vs Correctness vs features vs Elegance (clarity , generality, simplicity -all Ity’s )
Fig : Software Product’s aspect (Ref . Peter Norvig’s Software Design Course – Udacity)
Bad Engineering Trade-off : In fact striving for perfection, might be a bad trade-off, in that the time that could be spent on the increasing the efficiency or a particular aspect of the Software Program, could have been better spent on developing the new features. For example, the time spent to obtain the 100% correctness, might be otherwise spent on doing sth. else, such as increasing efficiency or adding new features, with most edgy cases, classified as “Known Issues”(since they will be faced only 0.1% or less of the time or so. )
Hence software engineering is all about balancing the trade-offs, making best judgement as per the requirement of the software and hence focusing the time on the particular aspect.
Conclusion : As a Software Engineer, you will need to make good trade offs, across the multiple dimensions of the Software. You need to ask yourself, given the limited time you have what do you need the most Correctness or Efficiency or Feature or Elegance.