Employment niche for active
IT veterans – additions
A programmer spends the lion's share of his time not on creating a new, but on modifying the old, including above all - on figuring out the real behavior of the existing software environment.
It is natural to assume that the software should help the programmer to minimize their costs.
However, in practice this does not happen for the following reasons.
Along with the objective problems of the balance between the ability to inform and the duty to protect the software service from destruction, outright impudence and illiteracy in this business flourish. What worth the messages of MS products like “there is some kind of error somewhere ”, while the corresponding “informant” for sure has the ability to at least partially identify the cause of the incident!
A remarkable example in this regard: “The resource you are looking for
might have been removed, had its name changed, or is temporarily unavailable.”
The creator of such a message knows for sure which resource with which name is being searched for, however, the user receives something completely unintelligible.
Thus,
you (the client who paid for using the program) are literally sent “very far” without bearing any responsibility for this!
It is obvious that the manufacturer should be responsible for the costs of resources of consumer caused by its defect, which is absolutely natural for other areas (say, automakers are responsible for frank (and even not so) defects).
The task (arised, of course, in my daily practice) is to speed up (optimize in time) the navigation of the corporate site, which has the properties described above and is carried out mainly by the .Net TreeView component located in the so-called Master Page - the common part of almost all web pages site.
The main idea of optimization, which is quite obvious, is to minimize the cost of executing the Master Page, which is required each time the page is loaded.
The perverted logic of the Master Page is in itself a well-known source of headache for site creators. Moreover, the Master Page is not a “Page”, i.e. not a page, and not a “Master” that controls the behavior of other pages in the natural sense of the word, but essentially a User Control launched from a “normal” content (“content”) page.
So, the very name of the component itself is a misunderstanding, leading to the enormous costs of programmers when trying to use this component in non-trivial actual conditions.
Problem
Having coped with all the “intricacies”
of the Master Page described above, I found that in some cases, after changing
the state of the database, the navigation is not updated.
Solution to the problem
It is because of the above-mentioned
charms of the Master Page logic that the corresponding operations of the base
class of this Master Page were re-checked with the suspicion that some subtlety
was not taken into account. Only then the suspicion fell on a client-side
script dynamically generated on the server, working immediately after updating
the database.
It turned out that an extra apostrophe is sometimes written in it, which makes this script syntactically incorrect! That is why in this case the script does not work and the navigation is not updated.
Home - there are no diagnostics for syntax errors in the script!
“At the dawn misty youth”, seriously studying the methods of syntactic analysis and embodying them in the compilers operating at that time, I couldn’t even imagine in the darkest dream that in the 21st century I would spend precious in every sense working time for searching an error that completely trivial for compiler but a very nontrivial for human — a superfluous apostrophe in a not-so-short and dynamically generated script.
Of course, Visual Studio allows you to debug scripts, and provides diagnostics. However, you must not only be able to turn it on, but it also works only for native Internet Explorer, which was so inconvenient to use, that at that time I had more practical Firefox turned on. And since debugging in Visual Studio also works very slowly even on decent computers, it is almost impossible to constantly use slow Internet Explorer, with script debugging enabled.
In short, the conclusion, I hope, is clear, in any case, the one who debugged real projects - syntax errors in scripts should always be diagnosed in any browser.
The task (also from my everyday practice) is to find in a folder known to me all the files containing the substring ”Cookies”. The folder, although well known, is quite large, containing the implementation on the classic ASP of one of our old, but actively working Internet applications. I know for sure. that in several files of this folder there are such substrings (written by me!). But now I need all such files.
It would seem that nothing easier. I open the designated folder in Windows Explorer, write "Cookies" in the search bar. However, when working with modern super-smart operating systems, there is nothing simple!
I
get the following "excellent" result "no items match your search":
Having recovered from the initial shock, I begin to analise a cause of failure, diligently trying to control myself and be ready for any surprises on the part of Windows 7.
It turns out the following (it is important to understand that this becomes clear after considerable time and effort, which in other circumstances would have to be fully compensated from the manufacturer of Windows 7, taking into account moral damage(!)).
By default, not everything is searched, but only by file names - a wonderful philosophy: let it not be found what the user needs, but quickly not found!
It doesn’t matter that a user who is not aware of such care about himself will be misled as a minimum, but as a maximum he will doubt his own mental health - he is sure has only recently saved such a file, but he not knows where exactly.
Then. again by default, not all extensions are checked - for example, .asp extensions are not checked - again, of course, to get inadequate results quickly.
And all this despite the fact that Dijkstra long ago quite intelligibly explained what is a reasonable "by default" is (the general case should be set by default, not «optimization» - look also at Dijkstra's criterion for programming languages).
Allegedly, a decent explanation of what the user must do in order to solve a trivial and completely natural task for him is contained in, say,
http://www.wseven.info/folder-options/
I'm
trying to apply these recommendations while working with Folder Options and
Indexing Options:
It takes about ten hours to index the entire computer, but it’s quite possible to put up with it - I, of course, want to index everything - the memory for the index is almost free, and I want to search as quickly as possible if the result is, of course, relevant. It is completely incomprehensible to me why even force the user to think about limiting the search area — by default, of course, you should search for the entire computer (except for the OS itself and the installed programs so as not to mislead the user).
However, manually installing “Always search among names and contents of files”, as shown below, I still cannot get the correct result for searching, say, the text “Cookies” in the file with the .asp extension (one of the standard extensions for web pages by the way, the “native” for the manufacturer of the very Windows 7, with which I am now fighting, trying to get her to do something usual and completely natural).
To completely confuse me, Windows 7 in some contexts finds similar text, for example, if this context is as follows:
<! - IF IsEmpty (Request.Querystring ("lg")) THEN, etc. Cookies ->,
and does not find, if it is:
'Response.Cookies ("Default_language") = Request.Querystring ("lg").
The same (in any combination, as it should be) is perfectly looked for if you change the extension of the same file to .txt (the standard extension for text files processed by Notepad, etc.).
The
.asp extension is, of course, listed among the extensions of those files where
you need to look for:
There
is no need to add that the so-called “troubleshooting” (”Troubleshooting”)
Windows 7, it turns out, as usual,
completely useless.
By the way, 12.1.2019 checked how with the search for a similar text in the latest version of Windows 10 - not better.
The solution of the problem
Tired of “fighting” with Windows 7, I
decided to look for other solutions (a programmer’s life would be wonderful if
it were possible always, and not just in solving such a simple formulated
task).
The only solution that turned out to be
practically acceptable was to completely abandon the search for Windows 7 by
installing, for example, Total_Commander (note that Google Desktop also did not
want to solve our problem - it does not understand the .asp extension and it
remains unclear to me how to teach it). But Total_Commander coped with the task
easily and without any special settings (except, of course, the instructions
where and what to look for).
In other words, it works naturally by
default, without requiring preliminary indexing, it is very flexible, it
contains almost everything that is needed (from the point of view of the
interests of the user, not the manufacturer - that should have been in Windows
Explorer long ago). This product is paid, but its (very small) money is worth
it!
Alas, and in this product is not all brilliant with the search, for example, in MS Word documents. In any case, I couldn’t find a file containing the word “Olga” in a small folder, although it contained a .doc file containing a line with this word.
Concluding remarks
I consider it necessary to pay so much
attention to this story, because it concerns not some annoying mistake in a
well-known product (nobody is insured from it), but an illiterate (or/and
irresponsible) philosophy of creating software products in general.
Instead of all this disgrace with broken
settings, the creators of Windows 7 should start with the correct default!
It is not difficult to cite other
examples of ignorant "by default". Say, when you, who consider
yourself to be the default, naturally, not only the administrator on your own
computer, but also the owner thereof, are suddenly thrown into a stupor getting
a statement like “you do not have access to such resources” or “you do not have
the right to do such actions ", sometimes accompanying such messages with
great advice: re-run the same program as an administrator (" Run as
administrator ").
To fully experience the level of
absurdity of such “caring for the consumer,” it is enough to imagine the mental
state of the person to whom the car periodically ceases to obey, saying that
the only way out is to start the trip again, after managed to press the
well-hidden special button, meaning “I am really your owner ".
Examples of this kind can, alas, be listed indefinitely. For example, in Visual Studio 2010, an attempt to compile a file that was built automatically by one of the “wizards” of this system ends with the error message "The type or namespace name 'Xml' does not exist in the namespace 'System'".
It turns out that by automatically creating a file with the line “using System.Xml;”, the super-modern helper environment does not add a reference to System.Xml in your project, causing you to fall into a stupor, marveling at unintelligible diagnostics, and with difficulty coming to himself, remembering the qualifications of your dear assistants and, ultimately, adding this link manually.
Note that not only the “master”, but also the compiler could easily do this by finding the specified line in the compiling file.
"To
shove the work on the user " - the shameful slogan of lazy
and (or) illiterate programmers.
Examples
of a good default when connecting “old” ASMX web services and a terrible
default when connecting “new” WCF web services are mentioned in my text about
the science of “Habitology”.
Screenshot of the first page of the result in Google:
Screenshot of the first page of the result in DuckDuckGo
1.
Question. And what,
before was better?
Answer. Even if not, it is we who have something to say and do, because we have seen with our own eyes what the thoughtlessness leads to and fear its consequences, unlike those who have not yet realize it..
But it can be said that from the point of view of attitude to work was better. There were times when "as is" had not yet been invented, and we believed that "to shove of work on a user is like stealing".
It’s hard to cite convincing examples now for
many reasons, but I remember well, let's say, Yevgeny Andreyevich
Zhogolev’s desire to perfect our modular programming system, the
SIMPR (by the way anticipated the basic .Net ideas), the first versions of the
same Skype or the impression of elegant Pascal by Niklaus
Wirth.
In my own products I also tried to avoid
thoughtlessness (in particular, in my book “Programming Languages. Concepts and principles " and in recently created Vicita service)
2.
Question. Not every veteran is fit? And what are the
requirements for those who are fit?
Answer. It requires that he have something to show and convincingly tell about, demonstrating his ability to work in modern conditions.
3. Question. You say: “thoughtlessness, unfinished”. And if the business says "must" (urgently release the next update)?
Answer. A business that harms society as a whole, a civilized society sometimes manages, sooner or later, to restrict it by the norms and the police. Theft or some types of entertainment is also a business, but society has introduced and is introducing norms related to them.
The same should be done in relation to the types of damage that “effective managers” do in our area, stealing our attention, time, nerves and other valuable resources.
4. Question. Are we ready to offer a plan of action in a particular situation? Do we master all the modern design&testing methods?
Answer. We are able to clarify the essence of the matter, the essence of the problems that arise, we know how to talk with customers and know how to act in accordance with the specific situation. Both the action plan and the results will be obtained with mutual understanding and interaction with a reasonable customer.
Nobody masters all the methods, but we are able
to search and select, and learn, and teach, and achieve results agreed with the
customer.