4 ms·
> A problem I have at my current place is that the dev team in my opinion is far too happy to add new features whenever they're requested. > And you might argu
by gregmac 4y ago
> A problem I have at my current place is that the dev team in my opinion is far too happy to add new features whenever they're requested.
> And you might argue, "well why don't you abstract more".
A place I work was acquired by a company that owned our main competitor. When we were comparing them, I used to joke that the team had spent 10 years saying "yes!" to literally every feature request.
They of course did it with abstractions, so it "wasn't that much more complicated".
Feature-for-feature, our software could only maybe 15% of what theirs did, while theirs could do 95% of ours. The difference was the features we picked were the only ones 80% of the customer base actually used.
Worse, because everything was abstracted, setting up those simple use cases was usually an order of magnitude more complex for the users: something that was a checkbox in ours was 15 different toggles and inputs, and very easy to screw up. Sure it could also be setup to handle hunderds more scenarios.. but in reality only there were just a few that only a tiny fraction of users even cared about.
That, to me, is the danger of abstractions - at least it they make it up to the UI layer. QA (and automated testing, if it was written) still has to test the hunderds of scenarios because they're possible. Support has to understand. Dev has to maintain.
It was interesting to compare the approaches, at least, and I came away with the conclusion: I never want to build that way. I'm all for internal abstraction: build the capability and flexibility to expand in, but have a very concrete and constrained UI that only exposes what actually has real value. And make it dirt simple to do the most popular use cases.
- keybored 4y agoI could die a happy person if I never have to hear programmers user the word “abstraction” again. Exposing more switches is the opposite of an abstraction. > , but have a very concrete and constrained UI that only exposes what actually has real value. This is an abstraction.