Fullsteks are eternal midies. Do not go on this path if you do not want to suffer
When I started to learn how to code, I believed the old wise assholes with their mantra "programming language is not important." I had a fix idea - to be a developer who can do anything. The guy who transfers the experience of using one technology to another and rises above the details. But this idea failed miserably.
Idea fix - know everything
I learned C # and .NET with different applications (asp.net, wpf, xamarin), js / ts (react / redux, node) and convinced myself that now I can really do everything. I abstract, think in several programming paradigms at the same time and have practical knowledge in all aspects of professional software development. You can safely begin to make fun of these forty-year-old seniors of the same technology, who spent half his life on what I can comprehend in a week. It can be argued that immersion in the subject area is for doodles who want to work all their life in one place, whereas I am abstracted from it.
Everything around is the same, and I saw a pattern. Now, when I need to work on some ridiculous python, I say: “give a little time for a quick reading of specs, and I'm ready to work with this shit at the senior level. Well, in the end, there may be something so complicated that I haven’t seen yet? ”So I created for myself a cult of neglect of details. Let the junas in the details swarm, which cannot in abstraction.
Gaps in knowledge are not obvious and invisible.
Once I zafigachil design on abstract classes in typeScript, and I was ridiculed. Because in the Typscript, they don’t. I, of course, pretended that just my colleagues are worthless idiots. This usually helped, but this time there was a sediment.
The reputation of good development hides your gaps from both colleagues and yourself. You do not know a huge number of critical specific pieces, but you do not see it, just because you do not know.
Then began the black stripe. Figak! I don't know what the index types are in SQL. Bam! I forgot when the static constructor in sharps is called. Oops! I can not correctly implement IDisposable without Google. I'm trying to mutate the state into the reactant component.
I suspected that my abstraction was not working. That technology is still different, and the details are important. Each technological ecosystem has its own unique best practices. Experience in .NET does not hurt when working with jvm, but it does not replace it. My self-appropriated skill “I learned to learn quickly” was not true. I studied no faster than everyone else. And it took me too long to understand.
My skill turned out to be like a wagon, a swan, cancer and pike were trying to drag it in different directions. I did not automatically become senior in everything. I just became a multi-magazine, a laughing stock for forty-year-old seniors of the same technology. And then I came to the conclusion that choosing the path of fulstek is a mistake.
And here self-blame begins
The problem is that businesses need full stack. But not like me, but signor in everything, guys who have five years of experience in each of the full-stack technologies.
But these do not happen, and the business goes on self-deception. They take the weak middle in three major technologies, and call it the senior full-stack developer. This title turns a person into an impostor and becomes an inexhaustible source of an inferiority complex. Any ordinary developer who fumbles in one technology - fumbles in it better. And now I understand well that I am not ready to work on equal terms with a team with people who rummage much better than me. Otherwise, in a week I will die from self-blame.
Self-blame is a huge problem for our industry, but we treat it incorrectly. We write for each other manifestos that we are Dartanyans, and all around are goats. That the deigns of seniors do not exist, we just underestimate ourselves that we need to throw modesty into the dustbin and believe in our inner goddess of development. What we need to pull on the skin of arrogance and send away all those who doubt us.
And you just have to admit that the development is difficult not only for people from the outside, but for us too. Not knowing something at the moment is normal. If you have a space, it does not mean that you are worth less money, and you have to be driven into the desert.
But at the deepest levels of reflection, self-blame still remains in us. Full steaks bite themselves that they do not know the technology deeply. Odnoyapnye specialists - they do not know widely.
To teach in breadth vs to teach deep
Here is an old conflict: you can study into the depths, and you can expand, but not both at the same time. I noticed this effect - when you start learning a new technology, the old one becomes uninteresting. But in IT, if you do not update your knowledge of technology within a year, you are no longer relevant.
If you want to stay full, you will have to force yourself to read the release notebooks of some TypeScript, while also trying them out - even if you don’t want to. And you will still be unattainably worse than the developer, who writes every day exclusively in type script.
The main problem of this conflict is that we do not know how best. We, and especially business, want both so and so. What would all rummaged in everything, and rummaged deeply enough.
What is better, I do not know, but I know what it is like to be full stack on this path. You will have to spend a lot more time on training than single-language developers. This will continue your whole career, but compared to them, your level will still be lower.
You will always be your own, but everywhere among strangers. Despite your enormous efforts, every connoisseur of a particular language will argue with foaming at the mouth that you are not worthy of being called a seigneur.
You will be the eternal middle.
I personally decided that I had no way back. I can really learn one thing deeply, I can try to go into management - that's where only superficial knowledge is needed - but I'd rather stay on my way and suffer until I really know everything about everything.