4 ms·
I have the same experience, and I agree that simplicity leads to success. The more things software can do, the harder it is to reason about what it's supposed t
by mjr00 2y ago
I have the same experience, and I agree that simplicity leads to success. The more things software can do, the harder it is to reason about what it's supposed to do. It's very much the IQ bell curve meme: junior developers only solve the problem at hand, mid-level developers build powerful, but complex frameworks which can solve the problem at hand but also potential future problems, and senior "X10" developers only solve the problem at hand.
> There are times during the development of any project where one might be tempted to hack around an issue, or commit the ugly code that seems to work. These are the rough edges that inheritors of a codebase use as evidence that a blank slate would be preferable.
Yes, one thing I've learned is to never underestimate the power of inertia in a codebase. When adding functionality, 99% of developers will go for the path of least resistance, which is mimicking whatever patterns already exist. To loop back to the article, this is often due to lack of full understanding; the default assumption is that because something is written in a certain way, that it's the best way. This isn't true; it may not even be the correct way! But copying what already exists has an element of safety built into it, without needing to spend the effort to deeply understand existing code (which tends to be developers' least favorite activity).
So if you put in an ugly hack, or have a code structure which doesn't make sense, expect that to persist for years, or decades.
- tkiolp4 2y agoI don’t think it’s up to the developers only to decide. If we are working in a sprint, if all my manager cares about is “shipping impact”, then I’m not going to spend time on things that won’t benefit me in my performance review. I’ll take the shortcuts. Now, if management knew what we know, sure certainly everyone would benefit from that… but that’s not the real world.
- anal_reactor 2y ago> without needing to spend the effort to deeply understand existing code Or, more importantly, explain to others why you're deviating from "standard"
- t43562 2y agoDeviating from the "standard" can make it harder for another maintainer to understand what's going on. IMO setting up reasonable patterns for others to follow is part of a good design. I'm not saying that I personally am great at it - it's an ideal! I think you are right though - very non-understandable things tend to persist because nobody wants to touch them.
- red_admiral 2y ago> IMO setting up reasonable patterns for others to follow is part of a good design. Which is why we used to study a book called Design Patterns.