There are such things in C # - structures. They are like classes, but they are stored on the stack and work not by reference, but by value. In the average development, they are almost never used. Structures have many advantages, and I sincerely stumbled for the fact that they can be used to improve code. Like, look, we can use the features of structs to write safer and more fault-tolerant code.
Such nonsense can be said by a person who does not know that structures have an empty default constructor that cannot be removed or redefined. Do you know why I didn't know this? Yes, because I have never used them. After all, I have a minuscule good development experience. I do not want to read books about sisharp for a long time. Why, if I get paid anyway?
Before my first job, and until I got a signor's offer, I was learning as if I weren't myself. I read books, decompiled my native classes in Dotnet, pestered the experts: “How does this thing work? And why? How would you do it? What is faster? " The day when I did not learn new things was recognized as a failure. And in every task I saw an opportunity to learn. He enjoyed the comments on the review, and could call a friend in the middle of the night to discuss the decision with him.
I did all this because I felt that I was not good enough, I did not understand anything. It seemed to me then that I was pulling at my June role with a big stretch, everyone around was smart and competent, and I really, really wanted to become the same. I thought that if you study everything normally, become a senior developer, then you will be the kind of dude who came up with a project in the evening, made it at night, and sent it to the market in the morning. Understand correctly, what can a 22-year-old boy dream of? He dreams of becoming a cool guy.
Around then, my good friend, who had not worked for a day as a programmer, took and got a job as a senior developer at Sberbank. He studied a lot, did his projects, and therefore was able to pass the social security exam. With his then salary, he could have hired ten people like me to do his job, and I was pretty offended.
A friend of mine of the same age, a person with no experience, took, and officially became what I wanted to become. No stupid intermediate steps with years of experience and training. After that, I no longer wanted to study.
Instead of a dozen books, articles and questions for smart people, I began to waste all my time on the lottery of interviews. It works elementary - the developer must know so many things that this knowledge cannot be fully verified even theoretically. Therefore, they are checked selectively. It's like an exam on tickets, where you have learned only one, but you can go to ten such exams in a day - and at least one you will get it.
So it worked for me. I got a good question, I picked up the conversation - and now old Phil is already a senior developer with a lot of money. This works in a very strange way. I knew that I had hit a crazy jackpot, and at the same time I was proud that I had finally become a signor.
Development as a whole is so arranged that when you are not competent enough, nothing will happen. You will not notice a lot of problems, but nobody will die from them. You passed the social security, and at a new job no one is trying to prove that you were hired in vain. On the contrary, if you start to fail, they try to convince both you and themselves that there is no mistake here. Even when you demonstrate blatant incompetence in some matters, they will simply say: "Okay, Phil has a gap with the database architecture, we all have gaps." And, no matter how, no one will notice that you have 10 times more such gaps than others.
It is easy to confuse a normal engineer with a person who is not competent enough, because all programmers worry that they are not good enough. Well, listen, if we hire a freshman to be a techie and he starts whining that he's not good enough, we won't say it's imposter syndrome, are we? He's really not good enough. He does not have the necessary knowledge. And the necessary outlook. He needs to be fired, or demoted.
But no - the developer says that he is bad, and people around him think that well, a person cannot understand and appreciate himself normally, this does not happen. And they conclude that he was wrong - that is, he is actually good, plus self-critical, which means that he is even better. And even if a miracle happens, and a trick is noticed at one of the jobs - it is not yet a fact that they will be fired, and if they are fired, you will find a new one, and then you will sit and tell everyone that they are assholes who do not understand how cool you are.
That's how my career went. I sat at a remote location, pretended to be working, and I myself went through a social security program and every few months I received a fatter offer.
I've been a Senior Developer, Lead Developer, Consulting Expert, Team Lead. He worked with Russians, Americans, Indians and Vietnamese. Built giant systems and small startups. Taught people to write code, tried to invent my own tools. He developed his own philosophy and approach. I started writing a book about development.
But what I forgot to do was learn to program.
When you have a high grade, you can delegate anything. Okay, you don't understand the database - let the one who understands do it. Need to optimize your performance? I'm not an expert, let Lyokha do it. I'll give him my review later. At some point, I realized that I was delegating almost all tasks that I didn't know how to solve in advance. The brain is lazy, and it's good that life usually keeps you in good shape. But if you are a self-proclaimed technology genius who deceived the system, your brain will not keep anything in good shape. All the really hard work will be done by slaves.
The sad reality is that most of the development tasks can be done more or less by any of us - and almost always no one has the time or desire to figure out how well you did it. Developers are people without responsibility. Nobody asks us for the bugs that we produced a year ago, and before they were usually not found.
It is accepted in the industry that big shots invent cool tools at their leisure. To invent something really necessary on sisharp, you need a real engineer who took a good sip of shit, found some difficult pain in his ten years of experience, and figured out how to cure it. So I invented a tool for frontend developers. I know the typescript quite well, but I never worked with a clean front, and therefore, even having a complete concept in my head and the readiness to code it quickly, I ran into the fact that I generally have no idea how to create and design a front-end lib. How to set up configs, how to design an external api, how and what tests to connect, what file structure to use on the project - yes, I didn't know shit. So I called my friend from the front and persuaded him to do everything for me. When he did, my interest in the project had already cooled.I was looking for a new job.
On good, I would burn with shame, and go headlong into training - but it will not work. I am a grown man, I have more important things to do than pore over textbooks. And life doesn't require it. If you just want to have a good rest and cut the money, you need to do everything exactly like me.
But I became a fucking developer to do interesting and important things. To build something, to bring something into the world. Solve a real and important problem, take pride in the quality of your work. And I lost all chance of it. And in return he received some incomprehensible show-off, the opportunity to do nothing, and an unfinished American dream. And on top - a huge, simply astronomical heap of cynicism.
Fuck with two, I will at least understand something, learn, or do something at all, until they drive me into a corner. And they'll drive me into this corner for two. I feel like a piece of shit at work, but I have no turning back - and I accepted it. They take, pay, don't drive - well, to hell with him. I was overwhelmed enough to learn to live by accepting that I was a piece of shit.
But if I could rewind time back, I would have done everything differently. You don't have to play 23-year-old signor to become a really good senior specialist. You need to get a job by rank, and preferably in all kinds of Yandex, where your three-year Junov experience will really make you a middle, and a three-year middle one - a novice signor. Yes, for five or six years you will receive less than me. But. Even a low June salary in IT is good money. You will still have imposter syndrome, but unlike me, you will not be an imposter. And the most important thing is that I then ran into my ceiling, and I will never become a developer who defines the industry. But you can. You fucking do the best you can.
Advertising
Powerful virtual servers with AMD EPYC processors for developers. CPU core frequency up to 3.4 GHz. The maximum configuration will allow you to come off to the full - 128 CPU cores, 512 GB RAM, 4000 GB NVMe.