In development - every man for himself. But sometimes it leads to a dead end.
I spent a hell of a day on TASK. It was necessary to design an independent module, and people with severe forms of perfectionism should not be given design tasks.
I had a week - a whole infinity, which was not enough for me. Again and again, I went over in my head the options for using what I had to do, but the picture of the ideal module did not go well. There was always a case that showed well: such a design is shit. I thought, I played the guitar, I tried to write, I stupid at the monitor, googled, I played with the children, again I thought that the head was always busy with a stupid module.
On the last day I was at the limit, I spent twenty hours at work without getting out. And now - Sunday evening, I madly want to sleep, but I'm still sitting and trying to come up with a suitable name for a class in my pseudocode, whose design, of course, go to the trash as soon as I finish it, because it is too imperfect. A few hours before Dyudetate, I had nothing but a week searching for it.
On Monday morning, I sent a pull request. He was accepted with delight. But the way I went ... I never thought I'd dare to do that.
They say the development - collective work. I would say differently: in the development of collective everything, except for the development itself. Collective result, collective discussions, syncaps, where you pronounce the plans. But the process of working on the code itself is simply solipsically isolated from other people.
When tasks are distributed (and the task description is 1% of the case), every man for himself. You think your code alone, write it alone - and God forbid anyone to look into your monitor at this moment. You get out of your head into people, when you already have something to show them. You discuss, and then again isolate yourself in your solitude.
Show unprepared sketch - a disaster. As if they see you not just naked, but without skin, without a skull. They will see all your ordinary imperfect thoughts that have not yet formed into smart solutions.
That is, “collective work” is not some kind of ten-brain organism, where everything is together, everything is ten times faster, better, and basking in synergy. Teamwork is all the same work alone, just with the ritual of discarding what is done alone in a common heap.
In finished projects, the lines of hundreds of people are mixed, and merging into one file, they lose authorship. But you can’t come to the team and say “here are my hands, the cerebellum, and the right brain arc, take, dial the code”. In the team, everyone independently does his own thing alone. In general, loneliness of consciousness is a terrible thing. We laugh at the idea of solipsism, as if it is a religion of stupid people. But here is the irony: all that we have to refute it is only our own subjective perception.
To feel part of a team, you need to bring results to the team, talk about them and listen. This is always the way of thousands of compromises. And with compromises I have a big problem.
Here is one of the worst - if you want to work well, sometimes you need to write bad code to keep up with the deadlines. I tried and could not. I don’t know whether this is a disease, costs of hvc or something else, but I just can’t commit what I consider to be shit. On the one hand, this is not a problem. The quality of my decisions creates a reputation for a guy who works justifiably long. They never give me a task that burns, because I will immediately begin to “fuck the brain for everyone”. They ask me why for so long, I lucidly explain what problems I tried to solve, why it was not trivial, and why it was important to make it really high-quality. I do not listen, but believe.
For some reason, it is so important that people think that not only my results are perfect, but also my thoughts. And if someone sees my thinking process in raw code, they will immediately expose me.
Of course, I too often found myself in situations where I lacked understanding or brains to make the task perfect. But I have always believed that only weaklings ask for help. This is also part of self-deception. Allegedly, to become a worthy team, you must be able to be completely independent.
In other words - in order for me to feel complete, I want to be both in a team and a loner inside him at the same time. Feel the contradiction? I, too, but I can not help it. And the way of deception and self-deception has always seemed to me more pleasant than the way of compromise.
I have a friend, also a developer. We have never worked at the same job, we have absolutely perpendicular stacks, but we have been discussing programming a lot. Working in approximately the same positions, we really liked to meet, and to lie to each other enough, how cool we all carry in their work.
The moment when you were first called Senior - oherenny, it happened with us at the same time. While talking, we ridiculed our colleagues (sometimes fictional), because our friendship with him always contained a very high degree of competition and mutual respect. It was impossible to just come and say: "Anton, but today I really screwed up." We are two impostors who fan their self-esteem to an astronomical scale in order to escape their worthlessness.
But when my week of designing the module came to an end, it was no longer escape from worthlessness.
My Skype called Anton. I wanted to discuss how cool he is today Naham PM, who does not understand how the design works. Apparently, I was in such despair that self-esteem did not work. I just fumbled the screen, opened the description of the task and asked: "How can I do this?". It was a powerful violation of the unspoken contract of our friendship, but Anton simply said: “open IDE”.
The code had to be written in C #, with which it had never worked, so it flashed through my head - I would spend a lot of time to no avail. It is better to sleep, and on the blue to say that the estimate was incorrect, I will continue to work. The IDE was just opened a text file, where I described the latest version of the module design. And Anton immediately - "I would call this thing like this." Oheret can, the name fits perfectly.
He began to ask questions - why is it like this, what is it, how are these things related. Work has begun to boil. We argued a lot in the process, but this is like an interactive review code, and this one that is done conscientiously (when not just pointing out problems, but also offering a solution). We quickly left the pseudocode. Solution, folders, interfaces, dock, implementation, IoC. The module did not work out perfectly, it turned out to be good, and the fact that I was not the only one who thought so - my perfectionism easily defeated.
We did a weekly job in a few hours. Without closing Skype, I am pretty impressed with git commit, push. Together they wrote a description of the pull request. I said that it was an honor to work together, and I went to bed.
The next day, I started thinking about it all and realized that some kind of shit happened. Anton does not know C #, he has never worked with a dotnet, but he worked with me on an equal footing, if not better. It turns out that he is an asshole, is he better than me?
I immediately wanted to do his work with him in order to test myself once again. But how to suggest this, I did not know. I decided to wait, suddenly he would ask, secretly starting to study his stack. And he asked. Rummaged the screen, showed where stuck. I immediately saw several solutions. Started to discuss, he began to code. Quick and cool. From my js-nickname, like a generic from a goffer, but I really helped him. Fuck knows how it works, but since then, whenever I write code, I have an imaginary Anton in my head that helps me. You involuntarily try on the manner of thinking of your partner, and to be able to think differently is a very valuable quality developer.
There is, however, one problem. Wacky NDA. I ignore it, because I believe that Anton will not have to lay out the pending IMessageReceiver in his instagram.
I thought for a long time why this works, and decided that it was not a fresh look. Each developer approaches the tasks in their own way. There are things that a person with my way of thinking decides in a minute, and there are those where my brain just drives itself into a hopeless labyrinth of wrong decisions.
But the concept of teamwork that is now does not work. When you are afraid to be a weak link, it is scary to realize that your contribution is less than that of others. What if you're somehow weak - the team will throw you out.
I heard that writers who sit together and compose plots on the move have the term “emotional nakedness”. This is a state where people in general are not afraid to think raw thoughts out loud and in public, and other people's thoughts sound like their own. So, if you find a partner with whom you can work as easily as with yourself, consider that all your professional problems have been solved.
The strongest cure for all doubts and professional ills - when someone relates to your imperfection is normal.