I am glad to greet you, dear readers.

I think that many of you, being developers of information systems for various purposes, in one way or another came across the concept of optimizing work processes, which constitute the main part of the routine that you have to perform in order to achieve your goals.
I will say right away - I do not set myself the goal of motivating or calling for any rules of effective work, because everything is too individual to give such advice, but I will try to draw your attention to some, in my opinion, interesting details that underlie the design principles that I noticed and interpreted from my own experience. I will also note that the article will be relevant not only to IT-shnik, but also absolutely all categories of readers.
A few words for the audience
Unfortunately, I can not be extremely objective for obvious reasons. I will try as clearly as possible and, if possible, interesting to express thoughts and ideas. I'm not an artist, but I did some illustrations, I hope you will like them. I want to thank the community for the invitation and wish you a pleasant and easy reading.
')
Interesting effect

While working on various projects, I noticed one peculiarity - sometimes some kind of performance bursts occur, when in just 3 hours I can complete the amount of work planned for the whole day. At this point, the time spent thinking and finding a solution is reduced to an absolute minimum. To some extent, I do not think at all, I simply interpret and perform those actions, the thoughts about which arise in consciousness. Perhaps you, like me, also periodically encounter a similar effect, which is often just not paying attention.
In most of these cases, I didn’t even think about the reasons, natively explaining them with inspiration, good mood, energy and other unreasonable factors as opposed to incommensurately longer periods of time in which my relative productivity is small. And if in work, in constant haste, the reasons are not so obvious, and the very fact of such bursts of activity is most often not noticed, mixing with everyday bustle and constant context switching, while working on my own developments, I simply could not help but pay close attention to this and feel sincere surprise at what is happening.

Sometimes, long thinking about the solution of the problem and not coming to the desired results, I threw everything, believing that the task was too complex, that I could not come to a concise solution. I thought it was worthwhile to postpone everything for a while in order to allow myself to rest. The most interesting thing started further - I could do anything, but the decision came spontaneously. I think many people know this feeling when an idea suddenly arises in the mind, completely captivating the mind: imagine you are reading a book or an article and, distracting from reading (but “reading the text with your eyes”), you suddenly realize that your mind is completely filled with certain mental images , analyzing which, you come to an impressive conclusion - I have been looking for this solution for so long!
Once I read Alan Turing's famous article “Can cars think?” And faced a statement that once again made me think about the bursts of activity in my mind:
“It can be said that a person“ inserts ”one or another idea into the machine, and the machine, having reacted to it in some way, then returns to a state of rest, like a piano string, which hit the hammer. Another comparison: an atomic reactor whose dimensions do not exceed the critical ones. The idea introduced by man into the machine corresponds here to the neutron entering the reactor from the outside. Each such neutron causes some disturbance, which eventually stops. But if the magnitude of the reactor exceeds the critical size, then it is very likely that the disturbance caused by the neutron that has flown in will increase and will eventually lead to the destruction of the reactor. Do similar phenomena occur in the case of the human mind and is there something similar in the case of machines? In the first case, it seems, should give an affirmative answer. Most minds appear to be “subcritical”, i.e. correspond, if we use the above comparison, to the subcritical dimensions of the atomic reactor. An idea that has become the domain of such a mind, on average, produces less than one idea in response. An incomparably smaller part of minds is supercritical minds. An idea that has become the domain of such a mind can give rise to a whole “theory” consisting of secondary, tertiary and even more distant ideas. ”(Alan Turing,“ Can machines think? ”, VII. Learning machines)After reading these lines, I was stunned: Alan Turing, using a graceful metaphor, described the effect that I repeatedly observed myself at work - a surge of consciousness and the birth / appearance of ideas (as it seemed to me, without my efforts).
From entertaining effect to serious study.

From this point on, I decided to approach the phenomenon more consciously, I began to experiment, explore, notice all the nuances that provoked me to react this way ... but I did not find a direct relationship. I could work for several days, writing out lines of code for 10 hours and designing a database, while working was hard. But one weekend, I just clearly understood exactly how to do it. And the point here is not at all in the fact that I really made efforts and went by the causal method to achieve a final view.
Frankly, in moments of awareness, I rather thought about anything, but not about work.

Sometimes I had strange philosophical thoughts that the body is a thin client, and all calculations occur somewhere “in the cloud”, and we can only wish by initiating a “search query” to the system. After all, by and large, it was so, empirically, I could not consciously find the path between the task and its solution, since my attempts at solutions were local and did not have large-scale significance. In other words, when designing relationships in a database between several tables, it is impossible to realize what the structure as a whole should be. But the paradox existed and did not give me rest, I often sat at night for a long time, looking for materials on the topic, I wanted to find out what the reason was. “Maybe I'm going crazy?”, - this was also one of the working versions =).

Once I sat and understood the structure of a small framework, I was interested not in the implementation, but in the concept, I was obsessed (and is still obsessed) with designing an alternative paradigm that is most convenient for me personally. It was another step to optimize my own work, but in the process I began to notice how I think. I imagined images: the system consisted of blocks, the blocks were interconnected by the threads of interactions, I could see a picture of the processes, modeling it in my imagination, but as soon as I stopped concentrating on it, it blurred. I noticed a certain similarity with the way a person wakes up, the dream dissolves in memory before our eyes. It simply crumbles first into weakly connected, and then completely independent fragments of events.
I didn’t stop there, I went ahead and started looking for my own imagination limits, and it was at this moment that I ran into one of the most vivid episodes that made me write some short notes first and then express my own thought in that form in which she appeared before you: to a certain limit of the complexity of the model in the imagination, I clearly saw the image and easily operated on it, I combined the scheme in search of the optimal solution, I performed the operations extremely quickly and the logic was extremely clear. But as soon as I complicated the scheme, it began to lose detail, it became confusing, unclear, difficult for perception — I began to lose productivity. At this point, I clearly and deeply realized the reason why my work was not effective enough.
Experiments and key findings
Based on a series of experiments, I made the following conclusions:
1. Consciousness = functional logic

The core of our consciousness (what we call our “I”) carries with it a functional logic and does not have a memory. The core of consciousness operates with images that we recognize as our own imagination. From the point of view of the dependencies that I observe, the system (imagination) consists of several levels - the core of consciousness itself and the area of ​​super-operative access to information.
As far as I can judge from open sources of information, our brain, in its manifestation, which we used to understand by this term, is an adaptive system. Our memory is arranged in such a way that new incoming information first encounters difficulty in perceiving, and then distorts existing images in memory, so the memorization process is a process of adapting the system, which in a completely natural way has a distorting effect on previous experience, creating the effect "Forgetting."
This scientific theory about the mechanisms of memory seemed to me reasonable, as I empirically observed similar processes. She allowed me to supplement the findings:
2. Destruction of the image

Consciousness is not able to statically hold the images, because it does not have a memory. The image in the mind is in a constant process of degradation of detail. In other words, we are constantly losing the details of the image we are thinking about. This is due to the reflection of our essence.
3. Image Recovery
In order to counteract the degradation of detail, the core of our consciousness turns to super-operative memory in order to recover the lost information in the shortest possible time. This is a kind of “cache” or “register” of our consciousness and the volume of this information bank is extremely limited!
4. Limiting the amount of "cache memory"
The size of the RAM area is very limited. To check the limitations of your own "cache", you can conduct a simple experiment:

Imagine a small ball, for you it is obvious that he is alone. Then consistently imagine randomly scattered (not forming groups) balls, not counting their number, but clearly understanding how many there are, for example: two, then three, four, five ... until you realize that you cannot keep this number in imagination and can not say how many of them, defining their number as "a lot". This is the limit. Consciousness cannot operate with a large number of elements, moving to abstraction levels.
4.1. Simple consequences of limiting
The smaller the objects, the easier the perception (lower threshold of entry).
In my opinion, religion was developed precisely with the aim of reducing the number of basic objects (the triunity, etc.) in order to make the idea accessible to 100% of the population.
Seven notes, seven primary colors in the visible spectrum (surely, remember from childhood: “Every hunter wants to know ...”), no more than 6-7 items in the menu for better perception, etc.
Let me assume that a value of about 7 is an average threshold for the amount of super-operative memory, at which consciousness can effectively operate with images without changing the context and not using the abstraction mechanism, when more actual elements are represented at the functional level of consciousness with fewer objects to be interpreted.
5. Transition to abstractions

Abstracting as a basic element of optimization: when our consciousness approaches the limitations of the amount of super-operative memory in a native way, the process of combining elements into abstract objects occurs. For example, you imagine all the same balls, one, two, three ... but then in a natural way for you start grouping them in an image into rows and columns, forming three rows of three balls, four on three, then 5x5, etc. , without doubting that you are clearly aware of their number without counting. In fact, the core of consciousness abstracts a set of specific elements into a single abstract object, while the image itself does not matter (a line of elements, a matrix of elements, etc.), only the number of images that stand out as an entity is important.
On our planet, about 7,000,000,000 individuals, but we perceive them as "humanity."
In any scheme you imagine, the limit number of abstract entities will tend to the limit of the amount of super-operative memory.
This means that there is a physical limit to the complexity of system design, which is basically based on a developer’s consciousness level.We are not able to imagine more than fits in the area of ​​super-operative memory. Otherwise, a complex image will crumble in our imagination, like a dream, since the latency of access to the level of conventional memory is much longer than the time degraded by the image detail. Consciousness will not have time to restore the collapsing image - we will be confused and lose touch in the complex model that we are trying to present.
6. Temporary increase in "cache memory"
Consciousness can be in a state of temporary increase in the amount of super-operative memory. This is the cause of performance spikes. At some time the window of the core of consciousness begins to work in some other mode (state of trance, inspiration, muse - call someone as you like, I personally prefer the term "Zen"), in which it is able to capture and operate with much more complex images than in standard mode. At these moments, we can observe what we basically do not see in the normal state. Ideas are more vivid, impressive, much larger and more detailed, solutions are instantaneous, the picture is clear and clear. This is a kind of afterburner, a temporary increase in memory addressing by our "CPU", which allows "to run more voluminous software."
Logical thinking is the mechanism for entering a trance state. When we repeatedly consider ways to solve, repeating chains of cause-and-effect relationships in our imagination, we are unwittingly initiating a kind of polymorphism in the mechanism of the core and super-operative memory. For our "I", such a substitution is noticeable only by indirect signs (for example, noticing that the work is going with a bang).
Surely they have seen somewhere (for example, in documentaries), how shamans utter repeated phrases in a singsong, plunging into a trance ... Surely they have met information on immersion in a hypnotic state ... But aren't we doing the same thing when we are thinking about the algorithm, constantly scrolling similar logical chains in imagination, and then, often changing the context (type of activity), we start to “see” in amazement?
No wonder the phrase sounds like this: "I had
an idea (instantly) came up!", Instead of "I worked for a long time and gathered the idea from my thoughts."
7. The levels of storage of interpreted information
The general scheme of levels of consciousness to increase access latency:
- The core (“I imagined!”)
- Oper-operative memory (“I imagine and see the image unchanged”)
- Ordinary memory (“Just a second, I’ll remember now ... Yes, I did, I remembered!”)
- External memory ("Wait, not so fast. I will write down.")
It is impossible not to see an explicit analogy with the scheme of the structure of a computer in the context of data access.
8. Connections are also objects
Connections are also entities. The fact is that not only the number of objects occupy the amount of super-operative memory, but also the connections between objects, since from the point of view of the storage of entities, the connection is also an independent object.

Let's do another thought experiment: imagine all the same balls, but now draw connections between them, forming a kind of graph with an arbitrary number and configuration of connections. Continue to complicate the graph and interdependencies until you realize that you do not understand the number of connections, that the scheme is already too complicated and the details are starting to get lost. Again you have reached the limit of the area of ​​super-operative memory, and this time, most likely the number of balls (graph vertices) is much less than in the previous experiment (when you imagined objects without connections).
9. Rethinking the old principles
Thus, when designing any system, I did not just understand, but deeply realized from the point of view of the mechanism of imagination work (based on empirical data) the principle that increasing the number of connections between elements of the system at the same level significantly increases its complexity, as a result, reducing efficiency development and quality of the final product, forcing to move to higher levels of abstraction. But the set of levels of abstraction in itself is a certain number of objects and interconnections between them, and the rule of restrictions also applies to them, which generally limits the complexity of the system being developed. (It is worth noting that as such there is no limit, the fact is that each new complication of the architecture will significantly increase the time to implement the innovation, to the point that time will be incommensurable with the costs of other resources or reasonable limits).
In my opinion, the most difficult from the point of view of detecting an error during development is the error of designing and encapsulating logic into abstract levels, since it is not obvious until the system ceases to be comprehensible, forcing deep code refactoring that results in enormous time costs. The difficulty is that we do not know when this will happen, but if this happens, the situation is aggravated by the delegation of development ... in general, no one can be sure how the system works, in turn, this leads to the need for deep tracing (not sure that this term is applicable, I apologize, I mean the analysis of the work and many hundreds / thousands of interdependencies between the components of the system).

I would also add: if you see a “spaghetti” code, this does not mean that the logic of its execution is bad in some way, and it is written by perverted sadists. It simply means that the number of functional elements and the interrelations between them do not fit in the area of ​​the super-operative memory of your consciousness, and you cannot imagine and realize the whole picture. In turn, this implies: either the author is an extremely gifted individual who permits the convenience of developing complex, confusing and not obvious for the casual observer / reader algorithms in pursuit of some subjectively chosen criteria (metaprogramming, reflection?), Or you study the system not level of abstraction, crawling into the jungle of implementation and filling the region of super-operative memory with low-level objects, thereby raising the threshold of entry, as the developers used to design higher level bubbled objects: modules, structures, objects, agents, etc.
PS
From the foregoing, there follows an entire scattering of logical chains and reasoning, the conclusions connected with them, as well as fundamentally important ideas.
Let this small note be like a neutron that has flown into the reactor of your consciousness.
The point is ourselves. The whole world around us is a manifestation of our activity ... within the framework of fundamental limitations at the level of consciousness. And if we have the opportunity, if there are mechanisms that expand the field of "visibility", if we have the ability to think, analyze, interpret and classify endless streams of information, building our own individual thinking algorithms - it is foolish not to use this powerful potential.
And finally: the whole point is that we can look for meaning;)