📜 ⬆️ ⬇️

Bridging the technical gap

Today I want to talk about the difference between those advanced things that we deal with every day and those that we can do with our own hands. About where this difference came from and what threatens the world. Well, at the end of the post - I will say a little about how to deal with it.

We all know what an iPhone is. We approximately know who invented it and due to what it became so popular. We know that the fifth version is longer than 4S, and that it has a higher screen resolution. We know that the iPhone 4S has two cores instead of one in the iPhone 4 and a bunch of other details. Finally, we know that the project is commercially incredibly successful, and Apple brought out of the manufacturer of iron for geeks and mainstream professionals, making it from the richest companies in the world.

Attention, the key question: can we reproduce the iPhone? Repeat it. Without inventing anything, take and do exactly the same, or at least something that remotely resembles it? Even if his simplest, oldest and weakest model? With your own hands, to mold out metal to solder, assemble, screw, fasten, cut, grow ...
')
Can not. There is a colossal, huge, and, apparently, the never-ending gap between what I can make myself and that incredibly heaped crap that is in my pocket. Why? Well, for example, for historical reasons.

Many years ago, cars were big, slow, cumbersome, buggy. The software was written slowly, with a bunch of errors, and then debugged for a long time and painfully. It was all very slow and very expensive.

But humanity did not stand still. Over the decades of continuous power race, the average level of glands has grown by several orders of magnitude. This applies to power, miniature and, most importantly, complexity. And usability. Computers have become simpler and clearer. And therefore the average level of the user of computers and other glands became very stupid. The difference between what is and what is understood has become colossal and continues to grow every year. We are farther and farther away from the realization of how the thing through which we call our grandmother works.

Fans (and professionals) in the field of electronics, microelectronics, and any kind of iron will immediately object to me that you can buy a processor, memory, textolite, a WiFi module, arm yourself with a soldering iron, stock up on some food and time, and assemble a working unit out of it, solving some problem But this will be only a substitution of concepts, since it is just an assembly of ready-made pieces, simple in appearance and the most complex inside. It’s like building a computer from components purchased at some large network discounter — the processor won’t get any easier by learning how to put it into a socket on the motherboard.

And one more moment - let's look at the reasons for the precipice that arose in a little more detail. Modern application software (aka toy for iPhone) runs on top of a huge number of abstractions, each of which is extremely powerful and heaped up. Being superimposed on each other, together these abstractions form a system of absolutely incredible complexity, to trace the signal path from clicking on the touchscreen in which is not at all a trivial task.

Thus, the only way to keep the situation under some kind of control is to understand the entire technological stack, to know every doll in the face and every fragment in this sliding telescope. This fact has a very simple consequence, which, in my opinion, is the most important problem of the entire modern IT-world and, above all, of the world of programmers. Without being an expert in your technology and in all levels of abstraction that lie under it, you will not be able to understand exactly how the program written by you works. Understand on which routes go on Baitics and bitiki, why these routes are exactly those, and how to change them. As soon as we have at some of the lower levels of abstraction, the understanding of what is happening disappears - write is gone. We are forced to bite like a blind kitten, moving at random and trying to predict the results of certain changes.

How to fix the situation? In my opinion, we need to start by studying how the technology for which you work is arranged inside. In general, this is the main idea of ​​the post: study the internal structure of your technology . If you are a programmer, learn how the platform on which you write programs is arranged, as well as all the levels below it. If you are a manager, try to understand how these or other management tools, predictions work, as well as the mechanisms of interaction between people.

One way to learn is to read books . Another is to attend thematic lectures and seminars. For example, if you are a javist, then you should pay attention to the JUG movement that exists in St. Petersburg , Kiev , Riga , Voronezh , and soon - in Moscow. If you donetchik - look at the St. Petersburg AltNet . If you are interested in what is going on around at all - then look at Devclub Tallinn ( video , announcement of the next meeting ), its Riga version ( video ) and St. Petersburg CodeFreeze ( video ), the next meeting of which will take place this Saturday and will be devoted to innards MySQL

And of course, you should not forget about the third way of studying the details - reading Habr, $ username $ !

Source: https://habr.com/ru/post/158599/


All Articles