Alexthunder, a nice guy I think, posted an article to his live journal. It is about every developer’s self perception. It’s a great stuff. So, here it comes:
So, I’ve been on vacation first time in my life… somebody never got a chance of going to one in his entire life, I suppose.
I don’t know if it is healthy or not – to be this distracted from work for almost a month. I don’t know yet how it will effect my work productivity. But in my vacation time I finally realized something I had lots of thinking about but couldn’t form a complete thought of.
There was a problem giving me a headache for a long-long time – how to explain to people who have never had anything with this kind of work, never did anything like it, how to explain them what goes on in my head when I work? How non-developer can get an idea of developer’s work and finally understand what’s going on and what to do with this?
So, I think I got it. Probably it is because I was off this process for almost a month, but had in mind getting back to it.
Enough with the history, let’s begin. How does a developer work?
Developer’s work process is a DREAM.
Sounds silly, doesn’t it?
If you want to know what exactly a developer does working, then the easiest way would be like this: He is having a dream!
Result of the developer’s work is the result of his sleep – chimera. Dream written in a special language and transferred to some electronic device to continue its existing there while developer is awake or just has switched to another dream.
You think developer looks at a problem, writes an application and the problem is solved. It is not like this.
Let’s take, for example, problem of finding the exit from the maze. Working on the solution to this problem developer is not the magic finger pointing the imaginary lost child in the right direction through unfamiliar path. He is not this child either. He is not maze walls. He is not the exit which should be found. He is the whole package.
To solve this problem developer must make his mind to be the maze, the exit, the lost child and the pointing finger, even those little rocks that child scatters while walking to recognize already visited places. All this developer DREAMS while working.
This is not some kind of a metaphor. LITERALLY he dreams it. Solving a problem developer virtually lives in the created world of chimers which looks something like conditions of the problem.
Looking at developer at work is much like looking at sleeping man. Do you fall asleep immediately after deciding to?
Most of the people take the process of falling asleep as a ritual. Somebody got a short ritual, another has very sophisticated and long one. Everyone has a ritual of their own. Somebody requires reading before going to sleep, some has to do 30 squats before getting into bed. One way or another everyone have some lights-out ritual, it is not just one, two, three and it’s done. Though it’s also possible.
Same thing in developer work. Beginning of the working process is the very same. Developer cannot just sit and start working as you cannot say “GO TO SLEEP ALREADY!” to yourself and conk out. There is no common technique as there isn’t any in go-to-sleep ritual.
Somebody counts sheep, who were bring to life by this process, somehow have to manage their living here in New Zealand. Somebody lets his imagination run away. Another one watches his breath. And somebody just having his camomile tea and he’s done.
By the way the whole falling to sleep process could change from time to time: today you just lay down and voila, tomorrow you toss and turn for hours and there is no chance you’ll have some sleep. Once again, the very same is going with the developer work.
So, what are you supposed to do with this?
Let’s think. If you are NOT a developer but you are somehow directly or indirectly interested in a developer doing his job, then you just have to understand this as well as possible.
Imagine that your life depends on your sleep, your kids’ lives depends on it, everything does. Imagine that future of your kids depends on your sleep – will they go to college or will they sweep the streets. Imagine that on your dreams’ beauty, success, vitality and completeness depends lives of passengers on a plane, or maybe service quality in malls. The weight of your wallet on payday depends on it after all.
So, you’ve imagined, right?
This is how it looks for us, developers. Literally like this.
You think you’ve just asked what the time is.
Let’s say, I will ask you of the time at 3 AM.
What is it with you? So what that you’ve just fell asleep?
I’m just asking, answer me and go on sleeping. What is wrong?
It would be easier to understand with this example, I think.
So, you imagine that EVERYTHING depends on your sleep! The whole lot. From how you will sleep tonight depends will be there any food in the house tomorrow. Will your daughter every get married. Will your son be a looser or will he score. All these depends on how productive you sleep tonight.
And here we are, you’re going to fall asleep. And this will be the sleep EVERYTHING does depend on and this is totally clear to you.
Now tell me, what about sleeping and simultaneously talking to someone just a little, or just helping your son do math, watching TV a little and just a little, just a little bit going to grocery? Just for a moment…
Sleeping well, sport?
Now think what happens with a developer who’s been asked two-three times an hour some simple questions, asked to help with one thing or another, to fill out some forms, to note something and not to forget another thing.
Could you live like this FROM DAY TO DAY?
Means you go to sleep every day KNOWING that everything and even more depends on it. And during your sleep happens all this reminding, remembering, helping, calling, talking right in your ear and so on. Every single night. So, how do you like to live like this?
You want it?
Then you should come working for the same company I do. You’ll get it in full!
Yet it is not this tragic. Of course there are people able to take a nap at any circumstances. There are drivers this like taking a little nap at every traffic light stop. You have to honk them to bring back to life, you know. Probably you’ve been in a situation like this.
So, there are developers like this too. They are in the state very close to sleeping every minute. Once nobody is disrupting they go fell asleep right away. Not too deep, just a bit. No serious chimers to be dreaming up, but a few little hazy ones – that’s for sure. Just like this.
That is how huge part of all the software is made. It is made by people who do not have a clue of what they are doing, or by ones who for some reason just cannot have sleep to be deep enough. Results do correspond.
That’s because disrupting is constant. It’s because WAKING UP is constant! People just don’t get it that you do sleep and their f*cking “manager activity” just making things worse, it just interfere with the work. Most of the people who are not developers just do NOT get it.
I hope understanding this analogy of the developer’s work with the sleeping process will help other people treat developers right and they will finally understand problem of making good software. Maybe they will at last understand that this f*cking LJ is the thing I write BEFORE MY SLEEP. Just like you. You cannot sleep until you are full of reading a book or watching TV. You just can’t, right?
Just like this I cannot work till I’m tired of reading, going to bathroom, brushing my teeth, writing in my freaking live journal, alltheseshitdoing. And if I don’t get to finish this before I fall asleep really deep, if something meddle in this ritual, then I’d have to start over. Just like you have to start over counting your sheep once you’ve been waked up just falling asleep.
Do you want software to be good?
Do you want your developer husband to be successful and to make all the money?
Do you want your developer employees finally doing everything just like it supposed to be?
Here’s a simple solution for you:
DO NOT WAKE A DEVELOPER TOO OFTEN!
Here is link to the original post (it’s in Russian):