Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

And Over-Engineering is something people only learn to spot once they've designed and built a few systems and had to maintain them for a few years. Its fairly easy to teach design-principle-du-jour but quite hard to teach about over engineering, KISS and YAGNI.

Developers tend to want to generalise everything because it makes it more interesting and has the appearance of good design. But generalising in one direction reduces flexibility in other directions. Better to copy and paste a bit at first and wait a bit before adding that extra extraction layer that generalises Foo.



I think a lot of it comes down to developers focusing on their own personal learning and development and not what is best for the current project.

Very few workplaces will let you work hard for 5 hours solving problems in the most time effective way and then spend the next 3 hours on your personal development.

On the other hand you can always spread the work over 8 hours and "experiment" with "on the job learning" leaving all sorts of sub-optimal solutions in the project. Then the next guy goes "Why on earth did Jim use X here?" and the truthful answer is because Jim wanted to learn more about X.


Yeah, I've heard several devs say something like 'Why did Jim do this...oh, crap, he was geeking out on this new thing.'




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

Search: