Sebastian Gębski
Geek, agilista, blogger, codefella, serial reader. In the daylight - I lead software delivery. #lean #dotnet #webdev #elixir.
Sebastian Gebski - May 2019
"(...) at some point the number of classes is sufficiently large that developers reach for even larger abstractions to make sense of the program. It is not a question of their being forced into new abstractions; it is a matter of using the ones suited for the scale or complexity of the problem."
To be comprehensible, your software should be structured so that it reveals a story at many levels . Each level of nesting tells a story about how those parts interact. A developer who was unfamiliar with the system could be dropped in at any level and still make sense of it, rather than being swamped.
idea ref.:
Simon Brown
"Commands fan out into unpredictable outcomes from definite beginnings, and we go from a certain state to an uncertain one. (...) promises converge towards a definite outcome from unpredictable beginnings, leading to improved certainty."
"A promise is a stated intention."
"An abstraction is a simplified view of an entity, which omits unimportant details. Abstractions are useful because they make it easier for us to think about and manipulate complex things."
"If users must read the code of a method in order to use it, then there is no abstraction: all of the complexity of the method is exposed."
"The best modules are deep: they have a lot of functionality hidden behind a simple interface. A deep module is a good abstraction because only a small fraction of its internal complexity is visible to its users."
"The benefit provided by a module is its functionality. The cost of a module (in terms of system complexity) is its interface. (...) the smaller and simpler the interface, the less complexity that it introduces."
Idea ref.:
Einar Høst
S
I
D
E
E
F
F
E
C
T
S
By Sebastian Gębski
How to design a calendar? :)
Geek, agilista, blogger, codefella, serial reader. In the daylight - I lead software delivery. #lean #dotnet #webdev #elixir.