Hacker News new | past | comments | ask | show | jobs | submit login

> There's no such thing as the "Proper Solution", there's only the best solution we are able to come up given the current knowledge and circumstances

I think that is the definition of a "Proper Solution".

Another way to define a "Proper Solution" is: the fastest solution that still manages to be maintainable while meeting all of the requirements for the project which is not "over-engineered".

I think that's the broad-spectrum "proper solution". I don't think there is any application that wouldn't want to meet these requirements.




There are two places I see the fallacy frequently pop up:

1. Over-engineering. This often comes in the form of trying to perfect something before releasing it, and/or long projects with fluid, changing requirements.

2. Criticizing old code/systems and their developer without any understanding of the context and trade-offs made at the time.

In my experience the first is common and the second is even more common. The worst is when #1 and #2 combine into someone trying to replace a functional system with an improved "v2" that is more complicated and no better.


I think #2 is aggravated by lack of documentation. How would any new developer ever understand the context and trade-offs made at the time if they were never written down? If there's no records, it's either reverse engineering, or re-engineering.


I agree with #1, but #2 is often used to defend under investment in a project. 15 years ago it might have been an adequate solution, but the lack of adequate maintenance and improvement is what makes legacy today.

I'm also amazed at what some people consider a "functional system". Frequent downtime and developer/support intervention is not what I'd consider functional, but for many business it is.


That's the definition "Proper Solution" should have.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: