📜 ⬆️ ⬇️

Am I a programmer?

This is the question I asked this morning when I came to work. It seems that there are all signs of a programmer: I’m writing the code for more than a year, there’s more than one project (both failures and successful ones), I understand data structures, algorithms and their evaluation, I know how networks and the computer itself work right down to the iron level, I know and used scram, kanban and their ilk. Honestly went to the conference to listen, as well as fair to speak. With a twinkle in my eyes I lectured to students and told what it was like to be a programmer. Many of them went to work as programmers, the most intelligent I took to my team. I read trainings on patterns, JavaScript and .NET, conducted hackathon, participated in the hackathon, and rejoiced like a child from these same hackathons.

My first language, you will laugh, was JavaScript - 2002 was in the yard, IE 6 was flourishing, and then I came across, quite by chance, a book on HTML. There are some references to JavaScript in it that attract my attention, which makes me go to a book exhibition and buy a great book on JS. I remember my first "useful" program - on a page with a black background, there was an image of a light switch with the inscription "off" and the inscription: "Turn on the light." When the switch was pressed, its status changed to “on”. The background of the page turned yellow, the inscription disappeared. With this program, I still "ugoral" a few days. Well, then it started to get more and more interesting. At that time I did not know anything about optimizations, or that there should be at least some logic in programming when you write a loop or a sort. Everything was done “for any reason”, and sometimes it worked quite slowly, but this did not stop me at all. Following the switch, drop-down menus, clumsy animations, and so on rushed.
And then I found out about C - I could sit behind him at night and program useless programs - there wasn’t any sense from them, but the awareness that you could create something was very appealing to me. Work with files, work with sockets (without any understanding of the principles of their work at all). And then I read how you can display a line or other figures on the screen. The first thing I did was decide to create my 3D cube, which will rotate with acceleration. At that time, my head already had an idea about the sines and cosines. So to figure out how to turn the point in a circle, did not cause any special problems.
And then, in the first year of university, I was shown such a thing as C ++ Builder. At that time, it was not forgotten yet, and oh my God, when I saw this magnificence of ready-made components, menus-tables-tables (grids), I thought my brain would go crazy with happiness, magnificence and an insane amount of options that you can with these make buttons. And I did - I remember my “widgets” for Windows XP, small programs that were always translucent hung on the desktop and displayed the current disk load, some notes, weather, as well as reminders in the form of a calendar. At that time I wrote this for myself - just to write. It is now we have it all together with the system and general synchronization. And before this software was not, and not so much accounted for, how much I wanted to write it. In general, all two years of my friendship with the “builder” and programming in general are described by the following picture:

image

And here came a peculiar turning point - it became annoying to program beautiful animations using ready-made components. I did not have enough understanding of what was going on under the hood of these very components, how they were created and on the basis of which they were drawn. Performance issues started to arise as well - sometimes programs worked slowly, and I didn’t always understand why.
On the advice of a very good person, Richter's book Windows for Professionals came into my hands. Creating efficient WIN32 applications with the specifics of the 64-bit version of Windows. “Honestly - before that I looked at Windows with suspicion and thought it was a“ lamer ”system. I remember when I was sixteen, the person who collected my second computer for me asked the question: “Do you know how to use Windows at all”? To which I laughed and replied: "Of course." In vain laughed - in fact, it was not at all Windows was to blame, that he fell from viruses or memory ended from antiviruses. My hands just had curves, I didn’t know how everything worked on the system, I didn’t know how to make the system installed once, never rearranged until the release of the new Windows.
After reading the book, a lot of things fell into place - now I rushed to understand WinAPI with fire in my eyes, and after him (I don’t remember how) I learned about the driver and started trying to write them with a frenzy: a virtual machine, Windows XP on it and install drivers. After one time, however, the system crashed with BSOD, but this was not a problem. How I dragged from writing drivers. Dragged until it bored me - at some point it just got boring, messing with the low level of access in the system.
The next thing I learned (it happened at the same time) was encryption and networking. For several days, I read the book “Computer networks” from cover to cover. It was incredibly interesting to find out right down to the physical level, how it works, understand the principle of functioning of queuing models, parse the protocols, and after them program some kind of http server, followed by ftp. Understand the basic mail protocols and "poke" in gmail commands directly from the code.
This was followed by data structures, an assessment of the complexity of the algorithms, and the algorithms themselves. I remember how I laughed like a fool with the phrase: "in this chapter we will understand how to store data in a tree." And a few years later, during the hike, the phrase: “Look, what tree” I stupid for 15 seconds trying to understand where a friend saw a binary tree in this forest.
In general, programming training went in fits and starts and not at all in the way it should have gone, so that everything would be done gradually, correctly and simply. I had to reach much myself, because there was not enough “Base” - sometimes mathematical, sometimes algorithmic. But then everything fell into place, and then I plunged into the world of .NET.
Then I went to work - it was in the second year: I came, looked at the project code, as I remember my first project: 223 megabytes of code, without pictures and other husks. In the first days I was sure that I would go crazy trying to understand it, and then nothing, I got involved - everything became simple and clear.
I was interested in looking at the bones of how the CLR works, how the garbage collector functions and how objects are stored in memory, how synchronization indexes work, what problems can occur with multi-threaded programming. I sat and read the source of open-source projects, just like that, out of boredom. And then I told all this to the students - so much it pleased me, and I was also pleased to share my knowledge. The .NET was followed by the world of front-end development, I enthusiastically listened to Crockford’s lectures, read the JavaScript standard, dealt with patterns, read CSS books, and study browser nuances and read jQuery sources. And again, he told all this to the students and tried to apply at work — when recognizing some new “trick” I immediately wanted to shove it somewhere in the project if it had any meaning. Sometimes it was normal to sit without sleep for two days and program, feeding on sweet tea and sweets - the body reacted normally to this and did not complain at all. At the same time, I worked extra time not for money - the brain was overshadowed by the idea that urgently needed to be implemented, otherwise the brain simply could not sleep, but continued to think and scroll through the new “model” in my imagination.
In general, I did everything that, as it seems to me, a programmer who cares for his work should be engaged.
In August of this year, somehow, at one point, I got tired of all this — it became unbearably boring. I had six projects and each was interested in something different, new technologies, new knowledge, new processes. And now this is gone - phrases like: “our system is very sekyurnaya” do not cause trepidation anymore. As I now see another offer from HRs:
')
Sekyurnaya system say? What can you offer - to encrypt cookies, traffic and use some kind of decentralized network?
Boredom.

High-load financial project? I'm sorry, what? I can not hear. And, you say that you have a lot of balances of balancers, your binary protocol of communication between farms, millions of users and holy scrum?
Boredom.

High load project with geolocation, search, use of quad tree. Node.js + HTML5 + CSS3 + latest JS libraries?
Boredom.

And so on.

I just got tired of all this - from my first line of code in 2002, until now I haven’t done anything useful to this world. He did not change anything and did not fix it, did not make life easier for anyone. New technologies do not bring pleasure, although I continue to follow this whole "garden". Everything turned into routine: any code is just a code, there is nothing unusual in it and, if you will allow, “magic”, as it was before.
More and more often, the thought comes to me that programming is not mine, because it cannot be so that a person is bored by his favorite business. One of my colleagues, after ten years of programming, dropped everything and went somewhere in Egypt to study and then work as a shark hunter.
And this morning, I repeat, I wondered whether I am a programmer?

Afterword
What can be said at last? Ahead of waiting for a move to Google, perhaps there my passion for programming will flare up again, but I can not say for sure - time will tell.
If someone gives advice on what to do with it, thanks in advance. I do not know why I wrote all this, perhaps, because there is no one else to tell, but I want to speak out. And perhaps because the weather is just bad outside the window - we now have a large rain in Minsk.

Thanks for attention.

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


All Articles