Wednesday, August 5, 2009

How to deal with Programmers, for DummiesShare

Dapet analogi bagus ini dari facebook temen, yang mana dia dapet dari temennya lagi. Jadi credit untuk cerita ini adalah untuk temennya temen g yang g gak tau namanya...
so.... here we go :


I started to receive request for English version of this little essey I posted some time ago to my diary.

I won't be able to literally translate it for you as I'm lazy. I'll just try to tell this story again in English with the promise to be as close as I can to original one.

It was a long time ago since I started to think of a ways how can I explain to different sorts of people just how the programmers work. To the people that aren't involved in any similar sort of activity or simply NOT programmers, NOT Software Developers as they are called these days. What happens in that geek mind when his eyes seem to be staring at the monitor and fingers sporadically cluttering over the keyboard ? I found it difficult - if not entirely impossible - to explain that sort of thing to just anybody.The whole human population seems to be split apart into those who do know how it works and those who don't have any idea. Obviously those who do wouldn't want to know any explanation except in the situation when they themselves are in a position requiring them to come up with an explanation. Those who don't have a clue on what happens in a geek’s mind may just not be interested at all - or have no chance to do that as it is all over their mind as they seem to think.

This year during my annual holiday I finally came up with an idea which I believe may shed some light on a subject. It may just allow an ordinary person to get an idea on what is going on in a geek’s mind when it works.

Enough with prelude! Here it is - how the programmer’s mind works:

The work of a programmer is practically A DREAM.

Sounds silly and simply untrue isn't it?

Well. If you would like to get yourself in programmer’s shoes and start to understand his work from the inside – then that is a concept you need to follow. You should simply imagine that The Programmer IS SLEEPING when he is WORKING.

Product of a programmers work is a dream, the vision of the sleepy night, the fantasy. It is written in a special language for electronic device to continue its existence when programmer is awake or switches himself to another dream.

You may want to think of it if it was like a programmer just taking a task or an exercise, writing some program and the task is solved. It is actually never working this way.

Let's take a maze for example. There is a task for the programmer to come up with an algorithm of finding the way out of the maze. When a programmer is working on this task he isn't just a God's Finger showing the directions to a little girl lost in a great maze. He isn't that girl or the walls of a labyrinth either. He is actually all of that in a same time. In order to solve the task he must BECOME the labyrinth, the walls, the lost little girl and whatever else may just came along with it. It is not a figure of the speech - the programmer is literally SLEEPING and DREAMING that all in his mind.

When you watch the programmers work from a side you are effectively watching a person sleeping and dreaming. Can I ask you if you are getting to sleep very easily?

Most people take the process of getting to sleep very seriously. For many it requires a special sermon to get to sleep. Some people do it quick, some do it very slow. Some even have trouble getting to sleep when they need to, so they take pills or make themselves some special tea. Basically there is a very tiny percent of people who are getting to sleep as easy as a snap of two fingers.

The same story is true about programmers. Process of beginning to work for them is just like it is for an ordinary person to get to sleep. None of them can just start working like most people can't just tell themselves - "Start sleeping" and become knocked off. There is also no common way of doing it as there is no common way of getting to sleep.

Some who count sheep in their mind live here in New Zealand. Some find it absolutely necessary to watch TV to become sleepy. Some can't switch themselves off without reading. There are all sorts of breathing, counting, attention dissipation, special pose practicing and even more bizarre ways of making yourself just to get to sleep. I In a programmer’s world, it’s the same procees for getting to work.

So what is it to be done in situation like that? How do we deal with all those high-salary professional sleepers, you may ask.

Here it is. Let's say you are NOT a programmer and somehow directly or indirectly your are interested in getting productive results from a programmer. In this case you are interested in understanding of how to deal with your programmer more effectively, so he would be able to produce the best productive results possible.

Imagine that there is EVERYTHING at stake and it all depends on results of your sleep. Everything - your life, the life and future of your children, your career and mortgage payments, literally everything. It is even more - there are lives of people flying in aircrafts, their money on banking accounts, their career and their personal little secrets in social networks. It is ALL depends on how good your sleep is going to be. Not just one sleep. EVERY ONE and EVERY NIGHT. Every night you are going to sleep knowing that it all depends on how good you are going to sleep today.


That is exactly how it is for programmers! Literally.

It is just for you it looks like you only asked a simple question. Just asked what the time is... just that.

How about I ask you what time it is sometime around three in a morning?

Nothing biggie isn't it? Just asked a simple question. I just asked. You just answered and then you can keep sleeping.

Not a biggie. Just once in a while I'd ask you something not very difficult to answer. Something like - "Have you checked your E-mail recently?" There is nothing to worry about, just yes or no answer would be sufficient and then you can go get your sleep again.

Is it now easier to imagine such situation?

Do you still remember that EVERYTHING is still totally dependent on how good your sleep is? It is still in account, no one taken that condition away. If you sleep is bad - people will die. And I am still asking those simple little questions time to time during your sleep.

Feeling like dreams a sweat now?

How about sleeping and just a little bit watching TV. AND just a bit listening to radio. AND just a little bit checking your E-mails time to time. AND may be sometimes helping me getting some stuff from grocery. Can you do that?

Would you be able to do it every day, five days a week, forty eight weeks a year?

If you want life like that - come apply for a job to our company. That will all come to you just like dream come true.

But of course it is not everything is that tragic. There are people who can sleep a little bit almost all the time. I knew some drivers who could fall asleep whenever opportunity presents itself. Just like battery-powered toys they can switch themselves on and off whenever it is required. You probably have experience of waking up driver like that when lights turn green and you happen to be behind. You just give it a little honk and it wakes him up, then you both go.

So are the programmers. There is a category of them which works just this way. They can easily get themselves to work at any moment. The downside of it is that when you sleep that quick and that "shallow" you don't dream much. You may have a little bit of dreaming but there wouldn’t be much to remember about after that. So it is in programming world.

The majority of software products are produced by that "shallow sleepers", not only because the majority of programmers prefer it that way. It is rather because the majority of people dealing with programmers don't let them get to sleep that deep. "Annoying" is today’s most popular way of management in software production industry so it keeps the great mass of software developers awake... awake when they actually have to be asleep to get the work done. Hence there are gazillions of poor quality software around.

I personally cannot work in environment like I described above. Yes I am just like you need to perform my little ritual to get me to start being productive. You can't get to sleep without reading a page in your novel. I can't get to be productive without reading my Livejournal a little bit, checking on news and just staring at my monitor with no obvious practical result. If I interrupt you getting to sleep procedure you would have to start it again. So do I - when interrupted I have to start all over again. You can't get to sleep progressively doing something in parallel, it can only be done in one go. So it is for me when I get myself to start working. Sometimes you just can't get to sleep at all fighting with your pillow and blanket till very early. It happens to me as well, I can't sometimes get myself to work at all because of no obvious reason.

I hope you can understand that analogy even if you have never had experience of being a programmer. I hope that when more people will understand this simple analogy between the programmer’s work and dreaming it would help them to understand what to do about it. It may help people to understand where the good high quality programs are coming from and why there is a vast of poor quality software around.

Do you want good programs?

Do you want your software developer husband be successful and earned all the money in the world?

Do you want your employees finally achieve the best you want them to?

There is a simple recipe for you:


No comments:

Post a Comment