📜 ⬆️ ⬇️

Difficult programming career or what employers want

Disclaimer: this is not PR. At the moment with employment I have no problems.

Difficult programmer career or what employers want.


With this article, I want to show how strange and bizarre a programmer’s career can be (or a person who does programming, because I can’t consider myself a caste of “programmers”). Who I am, I don’t know for sure, just like a rare breed of Cheburashek, who know all the technologies from ASM to Python, and at the same time, they don’t know anything seriously, the algorithmic skills of which are mating, like jellyfish in the Black Sea, and knowledge of computer science is near to zero with a frantic length of experience.



I am almost 40, and I am from a generation of programmers-craftsmen and self-taught programmers who received a higher technical education in a Soviet university in the early to mid-90s, when training was different and even such a thing as computer science was still absent in our universities. It was only abroad, and I knew nothing about such a term and the relevant discipline until 2007, when I began to actively go to interviews and position myself on the labor market.
Maybe this story will be useful for young professionals who are feeling for themselves in the IT industry in order to avoid any mistakes and build their careers differently.

IT in my life.


Here are the main milestones of my "glorious" IT biography. The most interesting thing in it, perhaps, was in the period 1990-1995 and 2000-2010.

')
In fact, not so simple. I do not know what kind of job I am looking for. I have no idea what work will be valuable and important to me. We must try everything. High competition. A lot of young people. Yesterday’s graduates are well aware of computer science and know all these mysterious words, magical passes, and are able to speak clearly. The rules of the game have changed, although Unix, C ++, OOP remained. There were long, informative, multi-stage interviews, grueling interviews. Tougher requirements for applicants. Now no one takes a “student without experience” even for a ridiculous salary. “Strange,” I thought. “In the beginning of the 90s, there was a demographic pit into which my potential competitors were supposed to please.” But it is not. My gaps and flaws in knowledge, the consequences of many years of “handicraft practice” and the lack of a system in knowledge are revealed. It turned out that I don’t know in detail how any sorting algorithm works (all 20 years sorted with the usual “sort” in all sorts of variants and in various programming languages, which, in my opinion, sorts very well, but how exactly does it I never cared, because he sorts the best way!), I don’t know the principles of OOP (I’ve used it since High School, but apparently wrong, since I don’t know the right principles), TCP / IP packet format (and why should I know? knew when he wrote a diploma in high school, and then forgot!), algorithms on graphs and many Gogo another ... But I once worked for the last 20 years and wrote an excellent working software that is still in use and will be used for a long time! How can it be? I am surprised myself.
And the second round of entry into the “free market” went through all in the same “warm and friendly atmosphere” as the first.
“Kaspersky” again suggested that I “zabreynbenchitsya” with him, as in the good old days (“Thank you, chap, but I’m not playing that game anymore, have already brainbenched all over”), “Yandex” predicted all my applications all the vacancies, this time in silence, even without an invitation to interview (in 2007, I interviewed and “rejected”), and it seems that he turned me on to a life ban, because I was already pretty tired of their HR, since I respond to almost all of their vacancies ; Mail.ru did the same, but Parallels, Mirantis and other “sharks” of the software market have “rejected” me at the interview. It is unpleasant to feel "rejected", but it is more pleasant to understand that we have not mutually approached each other and have not been suitable for many years  We are too different. For example, I love poetry, literature, music and English. But does Yandex like it? Not sure.
Employers: they can be understood. Their task is to find out the candidate’s knowledge on the widest possible range of topics in the shortest possible time. I myself recruited programmers and I know how nontrivial it is. Ready-made questions mean ready-made sample answers. Like Zhvanetsky: "... here is a list of your questions, here is a list of my answers." Favorite techniques used at the interview, which I gathered for many years of interviews and which make me puzzled, put me in a stupor (I don’t know the answers to some of them even now), and I think some of them have little relation to programming and they are simply asked because it is a “proven method” and “everyone asks them.” My answers, which do not suit employers, in brackets:
  1. Imagine that you are giving a lecture to students. How would you explain the term “X” to students? (X == "deadlock", "context-free grammar", "state machine", "optimistic and pessimistic locks", "programming paradigms", "data bus"). (From this list, I can clearly explain only the "dead end", he's deadlock, because I often deal with it. I do not deal with other terms, and, accordingly, I cannot explain them).
  2. Describe in as much detail as possible what happens when you enter an address in the address bar of your browser (option: when you click on a link). (What kind of level of detail is meant? My story can take a whole day, and we have limited time. First, if we are under Windows, a Windows-message WM_CHAR is sent when typing in the control ... no, more precisely, WM_NCHITTEST, ... but if you start from the beginning, then the keystroke enters the keyboard buffer ...).
  3. Describe how TCP / IP packets are exchanged when an HTTP connection is established. (Unfortunately, I watched TCP / IP traffic many times with ethereal, but I don’t remember even the approximate packet format).
  4. Describe how TCP / IP packets are exchanged when an HTTPS connection is established. (Unfortunately, TCP / IP traffic during an HTTPS connection did not look). Is it true that HTTPS works on top of HTTP or is the opposite true? (I do not know, but I think that HTTPS over HTTP. Or HTTPS over TCP? Who knows ..).
  5. Describe how packets are delivered using the TCP transport protocol. How do we know which physical computer to deliver the package to? How is guaranteed delivery guaranteed? (The delivery address is determined by the MAC address of the physical computer, packets are delivered via the gateway specified in the system settings, if it is an external host. External or not external - this is calculated from the ip-address and mask).
  6. What is the algorithmic complexity of the best and worst possible algorithm for sorting an array of N elements? (The worst complexity is O (N ^ 2), because you need to compare each with each, the best - O (N * ln (N)). Why is it the best? I don’t remember. I read it in a book. I don’t remember which one.)
  7. Rectangles with arrows are drawn, it is said that rectangles are modules, and arrows are dependencies between them and the question is asked: “How to load all these modules? And in general, what is it called? ”(We take and load recursively first the dependencies of the module, then the module itself. As it is called, I don’t know and I don’t have a clue. This is called“ rectangles with arrows ”).
  8. Describe the differences between the demon and the usual process (I was asked this question in 2007, and I still don’t know the complete answer to it - the topic is truly inexhaustible, and I don’t understand it thoroughly, although I wrote a lot of demons during my work practice this is not completely understanding whether they have a common memory or not, whether there is a common stack or not, and whether there are shared file descriptors or not. It seems, no, not common, or common. I forgot already, in general. Long time ago it was, in 2004 m year.).
  9. Name the five principles of object-oriented programming. (I do not know, unfortunately, although I have been using the PLO since 1993).
  10. How to make a queue with two stacks? (I do not know, but you can look on the Internet).
  11. What methods of process synchronization do you know (option: what synchronization primitives do you know) (mutexs, semaphores, events)?
  12. What design patterns do you know (option: what programming patterns do you know) (singleton, factory of objects)?
  13. How to optimize a SQL query (option: what methods of SQL query optimization do you know) (see query plan, remove subqueries if possible, insert missing indexes)?


Employers are absolutely right, of course. I understand why they do that. They select and screen out candidates, asking them the simplest questions to begin with. Then move to more complex, then more and more. The problem is that our approaches with them never coincide. Given that I am sure that in most of the companies I went to for an interview, I could work without any problems, but employers know better, and rightly so.
Ps. Actually, I have no problems with work. This is just an excuse to describe your bizarre career. Finally, an employer was found who “went to the red light”, ignoring all these numerous warning messages and that I don’t know, did not ask a single question on computer science and simply offered a job.

UPD. Still, there are problems with work, because the only employer who wanted to, refused to take me in the end. Does anyone have a job? ..

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


All Articles