|
|
|
|
|
by dan00
5281 days ago
|
|
There's a reason why this happens more often in languages like Java.
Because of the verbosity of the language, it's just painful to rewrite
anything, even if the current solution isn't that much over engineered. So
there might be a greater tendency to over engineer at the beginning, just
to avoid any rewriting, which at the end isn't possible. I'm a full time C++ developer, which might be a bit better in this regard
than Java, but not that much, and a hobby Haskell programmer, and one of
the greatest things about Haskell is it's brevity. It makes rewriting a
lot less painful, so you're not avoiding it that much. |
|
I think that the over-engineering happens simply because it's a pain to do serious refactoring when working on large enterprise software in general, never mind what language it's written in. The sad truth of our profession is that the customer requirements may change quickly and drastically, requiring us to rewrite large portions of our code, and very often we find ourselves thinking "If I only engineered it that way instead of this way, I wouldn't have so much trouble right now". This is why we strive to create the most robust, flexible solution that will be able to handle any future customer requirement. So we basically turn our code into a framework that, we hope, will allow us to respond to change quickly. Unfortunately, we can never predict everything that the users might want, so this whole approach falls down like a house of cards when a user requirement comes in and we need to change a large portion of the code. I believe this is true for a sufficiently large app written in any language, Haskell included.