Hacker News new | ask | show | jobs
by BigChiefSmokem 3445 days ago
From what I can tell almost everyone is an "over engineer". I fight this mindset in myself everyday. How many times have I seen interfaces and dependency injection and kinds of patterns used (besides MVC) on crappy little web sites that get re-written every 3 years anyway.

No we don't need an interface for something that is not a plug-in or will never be released as a stand-alone library! Coding for a future that will never happen is a fools game and none of the real bosses will care unless the UI or something more tangible (performance?) changes drastically.

3 comments

Finding the balance is one of the most difficult things in software. On the one hand there's YAGNI (You ain't gonna need it) which you described, and on the other end are "hacky" prototypes that take the most direct approach but often ignore edge cases and are hard to build upon.
It does seem like there is a missing type, and it also seems like the type engineer is of course the good one and probably how the author likes to think of themselves. If I was to say the most obvious missing type: the settled engineer, won't try something out even though it could help them until it becomes absolutely a requirement.

This last type I've seen some places among people that were not necessarily under-engineers, but I really just want to add the type in because it balances out our types nicely that way.

I think this is because of the reasons mentioned in the article. From my experience, most software gets written by people who are not completely new to programming, but are not what I'd call senior either. Let's say it's their second or third bigger project. They are still very enthusiastic, they are able to write a ton of code, they are exploring new design patterns every day, etc. They also do not cost much more than complete beginners to hire. So they end up writing most software and that's why you see a lot of over engineered solutions.