My "solution": write less code 🤣 No, seriously, I attempt to code in a minimalistic way, to reduce the features to the "Must haves" and using libs without too much magic. But sometimes, it's tough.
The other thing I think people overlook is that adding features is not linear in complexity. They typically interact with the rest of the system. As such, the cost of each added feature increases exponentially. Even a small feature that you add now is likely to cost you in the future. This typically culminates at some point in a system so complex that nobody really understands it and where the slightest change becomes challenging.
I see that at work right now: "let's make an authentication module. It should support username/password, OpenId, OAuth2, SAML, Kerberos, NTLM, registration/recovery features, custom branding ...and multiple of those at once of course, multilingual, distributed, iframe compatibility with popups, lots of client-side legacy stuff ...and yeah, make it simple to configure ...based on some outdated complex inhouse frameworks and a plugin mechanism" ...I'm not kidding 🤒 ...tomorrow again I have a meeting where it feels like a conflict of interest between "the reasonable me" wanting to keep feature creep in check and others being like "hey man, it's just a login screen, just add a few more features, why is taking so long anyway?". No wonder stuff becomes "so ridiculously overcomplicated". It starts with the absurd requirements.
Wow it almost sounds like the authentication merits its own PO & Dev team... maybe instead of asking "can we do this?" we should be asking "should we do this?" Writing less code is indeed the key... but maybe we should achieve that with less features / bells and whistles? And/Or throwing old shit away... do we really need everything and the kitchen sink?
You're also spot on with exponential growth of complexity! And while architecture can help keeping this at bay a little, this may be more a product problem than a technical problem...
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
My "solution": write less code 🤣 No, seriously, I attempt to code in a minimalistic way, to reduce the features to the "Must haves" and using libs without too much magic. But sometimes, it's tough.
The other thing I think people overlook is that adding features is not linear in complexity. They typically interact with the rest of the system. As such, the cost of each added feature increases exponentially. Even a small feature that you add now is likely to cost you in the future. This typically culminates at some point in a system so complex that nobody really understands it and where the slightest change becomes challenging.
I see that at work right now: "let's make an authentication module. It should support username/password, OpenId, OAuth2, SAML, Kerberos, NTLM, registration/recovery features, custom branding ...and multiple of those at once of course, multilingual, distributed, iframe compatibility with popups, lots of client-side legacy stuff ...and yeah, make it simple to configure ...based on some outdated complex inhouse frameworks and a plugin mechanism" ...I'm not kidding 🤒 ...tomorrow again I have a meeting where it feels like a conflict of interest between "the reasonable me" wanting to keep feature creep in check and others being like "hey man, it's just a login screen, just add a few more features, why is taking so long anyway?". No wonder stuff becomes "so ridiculously overcomplicated". It starts with the absurd requirements.
Oh man, this...so true and so much memories while I read this
Wow it almost sounds like the authentication merits its own PO & Dev team... maybe instead of asking "can we do this?" we should be asking "should we do this?" Writing less code is indeed the key... but maybe we should achieve that with less features / bells and whistles? And/Or throwing old shit away... do we really need everything and the kitchen sink?
You're also spot on with exponential growth of complexity! And while architecture can help keeping this at bay a little, this may be more a product problem than a technical problem...