When I look around I see everything progresses in an incremental way, the only difference between one increment to another for the same incident or different ones is mathematically plotted as logarithmic, exponential or derivative of f(x) =X^n relation. So the difference between all incidents is the baseline and the progression bracket. For example if we could monitor an incident through the whole life cycle we could see that for any incident to exist it needs as a starting point and let’s call it (a) and an equation that plots the bracket to pint (b) and if the progression plotted as linear we could for (a -> b) it would be safe say that ∑_a^b▒〖f(x)∆x〗 which looks really close to Riemann sum so we could assume that ∆x=(a+b)/n which represents the segment in the bracket and the more n goes to zero n→0 the better the approximation for whom he knows mathematics this should sound familiar, and my topic here is not about math so I feel obliged to stop here as this mathematical idea will be the core of my discussion about over engineering.
Back again to the incident linear progression, which is the case of most of the things we do, such as learning curve across time or the evolution of moral principles across time or getting to know each other and make friendship across time as the whole progression of human race since the beginning until the end will be bound to time that plots the progression of individuals to civilizations emergence and collapse which includes all the progression of all the sciences theological and mathematical and everything between them.
I believe that every progress that human endeavored started from very small blocks and then the blocks got bigger and bigger so if I would like to plot it will be near to an exponential relation while every failure human went through it is near to logarithmic relation. Both way human being climbed the ladder one step at a time and when they felt comfortable they started two steps at a time so on so forth. So how over engineering is compatible with progression.
Over engineering in my dictionary represents the time gap spent in designing and modeling the outcome and taking care of all the small details that you can’t foresee at the first sight, and when it comes to the implementation phase it will be a total catastrophe with an overwhelming complexity and if I want to plot it will be exactly as we plotted human failures, since the implementation phase took so much time of overcoming the unnecessary imposed complexity and coming out with easy solution that everybody can use.
What’s keep the things interesting is that smart people try to over complicate things by catering for unknown variables that maybe or maybe not influence the outcome if they didn’t care of it, which imposes a constrains on the flexibility and agility of the outcome. This is applies to software as it applies on construction and last but not least it applies on the way we see and interact with things around us, and this what holds us back when we calculate unforeseen risk in our decisions or keep us in our comfort zone because we know what we have already with the calculated and the uncalculated risk due to being there for some time fragment, which made us comfortable about what we have.
Yesterday I had a conversation with my cuz and he asked me in a advising and complaining manner why do you hold back, it wasn’t about a specific thing we were discussing but it was a generic question that amuses me because I really don’t have an answer for that question which concerns me, and to speak the truth I have one million answer if I would like to justify, but none of them made sense at that time. So I asked myself once again why holding back to you comfort zone or to your prejudice or dogmas and the simple answer will be that those things defines my identity from psychological state to mental state. This is me and what I used to be and still being so why bothering not to hold back to my anchor, why taking risks and face uncalculated outcome while I could hold back and relax in my comfort zone. You see things should be mathematically appealing in order for me to accept it, and what I mean by mathematics is like mathematically correct for every input I get the expected and calculated output, but in software it is a different thing because the relations and functions is more mathematically correct than normal life when you deal with people, while taking into consideration that the risk to have an anomaly is minor and I’m not talking about bugs since bugs is a mathematical tolerance for the application and since bugs can be fixed because it relays on the same principle of mathematical logic.
Back again to the simple question why holding back, and I remember as an answer that this is the way of life as Greek philosopher explained what does he wish for his children he answered “I wish that they are lucky enough to exploit the intelligent enough” and this is the way the things is being running the luck people usually they don’t calculate the indefinite numbers of possibilities what could go wrong instead they are looking on the single of possibility if that action were right what could happen. So some people are lucky enough not to think that much about different possibilities that could hold them back instead they are naively smart enough to think of the one thing that could be right.