First, let’s analyze the question itself: What is “one can say”? Who can say it? What information is available to the assessor? There are at least three options for which at least these aspects are relatively known. The first is the person himself, the second is his inner circle, including the employer (which can pull on a separate item), the third is a complete stranger. And of these options, none is simple enough to condense the answer to this question into one paragraph.
The first option is “I myself”
The question in this version sounds like this: “When could I say that I became a programmer?”.
The person himself owns a fairly large amount of information about himself, including personal experience, attitudes towards technology, hidden experiences, and much more, and sometimes some of the hidden data can determine exactly when the change in the individual’s internal state from “non-programmer” to “programmer” occurred. In the comments to the original article, one case was described where the author identified a state change at the moment when he understood the action hidden behind the code performed by the computer. That is, one of the possible answers is “when I first understood the algorithm of the program.”
My story of becoming a programmer is not so bright, and does not have an obvious transition point, but it has a transition interval – from the first question to a programming teacher in DNTTM “how to enter data in Pascal?” instead of setting values to variables directly in the code, when I decided for myself that I want to become a programmer, I want to be able to make computers obey me, until the first year of the institute, where as a task we had the implementation of three-dimensional graphics with Guro fill or as someone could, and written independently, not even the drawing program itself, but a model converter program from some kind of three-dimensional editor, from which I got files with models, into my stupid binary data format. That is, until the moment when I solved the problem I had using a computer and a program I wrote on my own. Therefore, the second possible answer is “when I first wrote a program to solve my problem or problem.”
There was at least one time in the process when I wrote a transformer calculation program for my father according to the existing requirements – one winding of so many volts so many amperes, the second 220 volts, it was necessary to find out the number of turns and wire thickness for each of the windings. But at that time, although I wrote the code for this in ZX Spectrum basic, I had not yet begun to consider myself a programmer. This means that some unaccounted factors influence the decision to consider yourself “already a programmer” or not. That is, the general answer, if it exists, is recursive: “When I did something that gives me the right to consider that I became a programmer.” Somehow non-deterministic, don’t you think? And this is even before the concept of “programmer” was defined…
The second option is the “closest environment”
This includes parents, spouses, children, classmates, relatives, colleagues, and other people who communicate with the subject of the question. And the question itself is formulated as follows: “When could I say that YOU became a programmer?”. And here it is required to define, in addition to the word “it is possible”, or “I could”, also the word “programmer”, since for different people this concept means a range of knowledge, skills, opportunities and activities, sometimes not even having coincidences for some people from a person’s immediate environment. In this setting, the answer is a little more than completely subjective, and to find at least a common denominator for most groups, an overly detailed analysis would be required. It would be easier to just dismiss this option as obviously too subjective for the article, but some special cases can be at least vaguely described, which I will try to do.
You can try to look for answers for isolated groups, say, for classmates, provided that the person himself has already been able to define himself as a “programmer” according to one of the definitions shared, at least partially, by classmates. There will still be a range of answer options, ranging from “when you hacked a toy for infinite lives”, even if it was POKE 32,891.0 subtracted from the book “300 games for the ZX Spectrum”, to the conditional “when you let me cheat on computer science and I got an A” or “when you showed me how to draw lines on a computer”.
For relatives, in particular parents, who own a much larger amount of data about the subject, there may be a more deterministic criterion. A child’s passion for computers comes in various forms, up to sticking in some games without any visible benefit (for parents), and programmers are not always made out of those who are fond of computers, and even “IT”. Thus, some achievement of the child, which parents attribute to programming in the sense in which they understand it, can act as a “milestone in becoming a programmer”. It may also be that the offspring shared his impressions of the game on the MK-54, which he successfully passed or even “hacked”, and the victory (or participation) in
some kind of competition at school, college or at work (you never know!), where something had to be algorithmically solved, or the opinion of teachers, classmates, or anyone else that reached them that “your child is so smart, he is my computer fixed it with two fingers!” etc. Including helping parents with something using a computer. Usually such milestones of becoming are remembered in the family, and then they are an occasion for boasting in the outer circle, and become known and used by the person himself – if his own “phase transition” did not occur earlier.
For an employer, as an individual in a programmer’s environment, most often the answer will be “when I found out about you as a programmer.” If a person is hired by a software development company, he is a priori considered a programmer, it doesn’t even matter what position – neither an architect, nor a team leader, nor a QA tester, nor even a UI designer will be able to work normally if he does not at least understand programming , which, according to the employer, may be enough to call a person a programmer. If a person’s activity is not directly related to programming, such recognition may occur later. For example, a CNC machine operator may or may not be a programmer, depending on how he handles his tool. My father was a programmer in this regard, I remember how he said “when writing a processing program, these programmers do not take into account the fasteners of the part, you have to redo it.” At the same time, some of his colleagues at the plant did not know how, and perhaps did not want to know how, which is why they were not considered programmers. Some warehouse manager who wants to make his job easier can write some kind of accounting automation in addition to the one that is maintained in the organization, or supplement it with some kind of metric, and this can become a starting point for his superiors to regard him as a programmer. Or the currently fashionable “log in come” movement, which grabbed an employee from anywhere and motivated him to “become a programmer” in any sense, with a noticeable effect for his employer (including dismissal to look for work in a new specialty) can also give rise to a change in attitude towards him.
The third option is “stranger”
This includes people who have recognized or know a certain person and have access to any public data about him, including articles on Habré or profiles on social networks. Since there are too many of them, the question in the formulation of the second option does not make sense, and it should be asked in a more general form. For example, like this: “When did a sufficiently large number of strangers to this person begin to call him a programmer?”.
Most of the answers from the comments to the original article fit this option. “When he first (implicitly) started working as a programmer”, “when he received a “programmer” diploma”, “when his program became known”, etc. There is no unambiguously correct answer here, moreover, people in relation to whom a similar question is asked, they may not even know the words “programmer” (was Ada Lovelace a programmer? My answer is yes, but the concept itself might not exist then), any of the options for the “generally accepted” answer may not be applicable to some people , up to all but one – if everything is inapplicable, then he has not yet begun to be called a programmer, some persons can even be virtual (hello, Alice) and at the same time write code (hello, ChatGPT bot), and so on, therefore, as a “universal” answer, I propose to take a generalized OR to a subset of “elementary” answers from this set, with which you personally agree.
Comments on answers given in the article itself
Generally speaking, the answers given in the original article implicitly contain additional “good” classifiers defined by the speaker. Even the first answer, “When he is able to abstract from tools,” already contains such a classifier. Many programmers, especially for resource-constrained platforms, cannot abstract from their platform, and in general they have only one tool – machine codes or an assembler for a specific piece of hardware, plus a translator from a C-like language (or simply from C with extensions for the platform ), because the more “fancy” code with abstractions will not be able to fit into its RAM. And if someone says that these are not programmers, I will tell him that he is deeply wrong.
From the spectrum of responses, the sixth stands out, which many commentators pointed out: “When he understands the principle of if, then, else statements in combination with for loops and so on.” In essence, this answer means “when a person understands the principles in algorithms and is able to translate them into code.” For me, the option “when a person knows how to think algorithmically” would be more accurate. It’s just that the neural network can already convert a hard-coded algorithm into code, and the concept of RSL, if anyone remembers, consisted (for me, when we went through it) in setting an algorithm in the form of a flowchart, which simply removed the requirements for knowledge of a programming language, but explicitly demanded to understand
block diagrams as a means of writing algorithms. And such an answer is more like a universal and objective one, and can be suitable as a criterion of necessity for determining whether a person is a programmer, and in his own retrospective, when he became one.
And when does a person stop being a programmer?
When he dies. And that’s not accurate.