4 ms·
I think that one key source of needless complexity is lack of "spring cleaning". Design artifacts and quick hacks, over time, can create high levels of complexi
by iliketosleep 10y ago
I think that one key source of needless complexity is lack of "spring cleaning". Design artifacts and quick hacks, over time, can create high levels of complexity that are a major hiderance when adding new features. This might be due some people taking the "if it ain't broke, don't fix it" approach to the extreme and not taking future considerations into account.
- d--b 10y agoI think what you describe is what people usually call accidental complexity. The complexity described in the article is about the incidental complexity, meaning the actual complexity of the features, rather than the complexity of their implementation. Let's take an example, if hacker news added a new feature that allowed people to delete their account, then you have to decide what to do: - do you delete the user's comments? - if yes, what do you do about people replying to that comment? - do you delete the user's submissions? - if yes, what do you do anout people commenting on the thread? - do you downvote the submission / comments that the user upvoted? - do you unflag the submission / comments that the user flagged? - do you keep a copy of their yc applications? - do you keep their email address along with their karma, so that if they open a new account with the same address, their karma will be restored? As you can see, adding a single feature means that you have to figure out how it is going to play with all the other features. That's what the author means when he says: that makes the cost of implementing the N+1 feature closer to N than 1.
- iliketosleep 10y agoYes. A subtle but important distinction. Indeed, these two kinds of complexity feed off each other. As the author states: If essential complexity growth is inevitable, you want to do everything you can to reduce ongoing accidental or unnecessary complexity
- loevborg 10y ago"Accidental complexity" and "incidental complexity" are usually taken to be synonymous, to be contrasted with "inherent complexity".
- kvb 10y agoI've more often heard "inherent complexity" called "essential complexity".
- notduncansmith 10y agoThis is the term used in Out of the Tar Pit IIRC.
- skybrian 10y agoWell said. Another example is how adding a new programming language feature can make every other feature more complicated as you consider how the interactions should work. This is especially true as you think about how all the tools (formatters, debuggers, etc) should work.