“It doesn’t matter how much time you need. The bug MUST be urgently fixed on Friday! "
These are the customers: on the eve, a sweet girl from a prosperous country wishes you well, as far as it is possible for us here to spend the evening, and in the morning - everything, because of her shoulder looks the stern Mr. Director.
Fig. 1. Customer devouring the performerDima B. - the most experienced developer. He skillfully interwoven network of letters of inquiry for clarification, explanation and prioritization, made an estimate of the time in two versions, optimistic (about a week) and pessimistic (three times longer), complained to the manager and colleagues, and went to dinner.
')
Dima K. is me. Dima is a programmer name: in the ancient computer language, it means declaring an array. We also have Maxes in the project, besides Dim. When the next Max appeared, and the customers asked if there were any other names in our country, I replied that this is true - maybe, yes, but definitely not among programmers.
I came across another task, which, however, also had to be done by Friday. It was formulated in a typical categorical manner with words like immediately and a variety of exclamation marks. I, as usual, assured my colleagues that it was impossible to do this, that the customers wanted impossible and that they really needed something completely different, I boiled the kettle and set to work.
It must be said that the essence of application programming is routine. We do not launch spaceships, do not create new deadly weapons. Fascinating little. We satisfy the fantasies of customers, approximately as representatives of the oldest profession do, only we have a slightly different specialization. Both there and here professional pleasure can be obtained either from mastering a new technology, or from solving an interesting problem. Some people expect something from career growth, but this is not a profession, this is a career.
So, I was lucky: the task was not trivial, and along the way I even invented something new. If someone has already heard about asynchronous recursion, then I don’t yet, so in that case we will assume that I had to think of it independently. *
The point is this (this paragraph is far from programming, readers can easily skip). We use ASP.Net. There is a tree whose nodes are expanded as they are accessed, asynchronously (i.e. a request is sent to the server, after which, after a while, the prepared data is received by the client). It is necessary to search for elements of the tree, and it should not be rebuilt unnecessarily. As it is known, to correctly formulate the task is almost to solve it, so after the emergence of the term asynchronous recursion, I could only implement the idea. Recursion is needed to bypass the tree, asynchrony - in order to return to the consideration of nodes that require asynchronous filling with data. If anyone is interested in how this is implemented using Javascript, Infragistics UltraWeb TreeView and such a mother, I can provide this scientific material as a separate article.
Well, Dima B., by the end of Thursday, cheered up, turned pink and even stopped saying the name of that very girl through clenched teeth. By Friday we had time.
-----
* After writing the article, I, as a conscientious researcher, learned what is known about this on the web. Found the work of Nicholas Wolf "Asynchronous recursion", about the same. Fools think, or great minds think alike.