4 ms·
1. Engineering is more clever than Business ...I don't get it? This sounds like it should be saying we try to "plan ahead" too much, but then the description s
by tbrownaw 10y ago
1. Engineering is more clever than Business
...I don't get it? This sounds like it should be saying we try to "plan ahead" too much, but then the description seems to say we don't do enough.
2. Reusable Business Functionality
I think this is arguing against doing too much design work up front? From what I've seen, incrementally growing a system tends towards the opposite problem unless I'm aggressively looking for refactoring opportunities.
3. Everything is Generic
This isn't a case of too much vs enough, it's a case of correct vs incorrect. If you can guess how the business requirements are likely to change, making things generic in the right way will make that change much easier to do.
4. Shallow Wrappers
Yeah. Unless you have actual advanced knowledge that you'll need to switch out a particular library, this should be done on-demand as a refactoring step before such monkeying around. Except for things where you need a seam to make testing easier.
5. Applying Quality like a Tool and 5.1. Sandwich Layers
...does anyone actually think this way?
6. Overzealous Adopter Syndrome
Maybe, but keep in mind these can also be used to clarify intent or to intentionally constrain future changes.
7. <X>–ity
The examples look like things where pursuit of whichever <X>-ity didn't actually work, rather than cases where it wasn't needed.
8. In House “Inventions”
These tend to be a result of either very old systems that date back to before an appropriate reusable version became available, or organically grown systems that had parts gradually come to resemble some existing reusable thing (that initially would have been overkill and more trouble to use than it was worth).
9. Following the Status Quo
Or in other words, "don't fix what ain't broken" isn't actually good? How is this "over-engineering"?
10. Bad Estimation
How does this fit the theme? I thought the standard way to improve estimates was to put more thought and detail into them, which means the problem here is actually under-engineering (well, that and general noobishness).
.
.
Edit to add:
Important Note: Some points below like “Don’t abuse generics” are being misunderstood as “Don’t use generics at all”, “Don’t create unnecessary wrappers” as “Don’t create wrappers at all”, etc. I’m only discussing over-engineering and not advocating cowboy coding.
So... if you disagree you're wrong and misunderstanding the article? If it's that misunderstood, it's the article's fault for failing to communicate effectively.
- AlexCoventry 10y agoMy impression of the OP was that most of the time it's beating up a straw man. A more useful article would lay out heuristics or at least present anecdotes regarding sensible points on the spectrum from under- to over-engineering along each dimension.
- betenoire 10y agoFailing to communicate ... to you
- TeMPOraL 10y ago> ...I don't get it? This sounds like it should be saying we try to "plan ahead" too much, but then the description seems to say we don't do enough. My view may be biased by my experience, but I understand it that - no matter how beautiful logical structure you invent that makes all the requirements fit perfectly, the business will quickly come up with a new case that doesn't really fit anything. Business requirements are unpredictable because they make no fucking sense - they're combination of what managers think customers need, what marketing thinks it needs, what future visions your boss has that he didn't tell you (or that he doesn't himself even understand yet), all with a sprinkle of peoples' moods and the subtle influence of phases of the Moon. See also the motto of American Army - "If we don't know what we're doing, the enemy certainly can't anticipate our future actions!" ;).
- tbrownaw 10y agoThis is only the case if the business is incompetent and insane, and also not communicating effectively with development. Or maybe things can look that way, if the devs don't understand the business. The business is doing something to make money. The requirements will somehow work to support that something, or will be something that your business contact thinks will support that something. If they don't make sense, that means your mental model of the business is different than your business contact's mental model. And unless your company is unbelievably dysfunctional, that's an opportunity to talk and reconcile those models.