complexity in software design

It’s all about complexity

but what is complexity?

Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system

Complexity can take many forms for example it might be hard to understand how a new piece of code works, and it might take a lot of effort to implement a small improvement, you also can think of complexity in terms of cost and benefit. complex systems it takes a lot of work to implement even small improvements. in a simple system, larger improvements can be implemented with less effort.

the overall complexity of a system is determined by the complexity of each part (p) weighted by the fraction of time developers spend working on that part.

  • c = cp complexity is more apparent to readers than writers. if you write a piece of code and it seems simple to you, other people think it’s complex. then it’s complex when you find yourself in a situation like this, it’s worth probing the other developers to find out why the code seems complex to them; there are probably some interesting lessons to learn from the disconnect between your opinion and theirs.your job as a developer is not just to create code that you can work with easily but also to create code that others can work with easily.

POSD - complexity is incremental

POSD - fighting against complexity

POSD - symptoms of complexity

POSD - causes of complexity