Software Creation Mystery - http://softwarecreation.org

Introduction to programming for non-programming spouses

My wife worries about me. She worries when I’m staring at the monitor with the strange text for hours – sometimes desperately, sometimes in excitement. She worries when I skip movies, ignore parties and talk with my computer. She worries why I’m so excited about such boring activity as programming even outside my work. She shouldn’t worry – there are few good reasons to love programming. I want to take an opportunity to share these reasons with all non-programming spouses over the world.

Definition: Programming – writing a program that tells computer what to do.

1. Command and Control

If you tell a computer what to do, it will do exactly this.

It is quite different from what we see in our everyday life. You cannot simply expect your spouse, kids and mother in-law to do what you ask them to do. There are many nuances why they will not exactly follow your orders. There are many interesting theories about the human psychology explaining why we are so complicated. Even my small dog sometimes doesn’t listen to me and mark my carpet.


Computers are different. They will do what you ask. This is not that I’m seeking for domination and somebody to submit to my will. No, I just love the fact that something understand straight logic and behave predictably. So, I can focus on what to tell a computer without worrying if it has mood to listen, weird “feelings” or think that I am nuts or a lier. Programming for computers requires rational mind and logic without strings attached. This is the first reason to love programming.

2. Creativity and Complexity

Before telling a computer what to do, you should know what to do.

Some programs are simple – for example, you could write the program that prints on monitor “Hello, My Dear Spouse” or adds numbers. You shouldn’t graduate from an university to write this kind of programs. In real life tasks are more complicated. And here we have a problem – a programmer should know exactly what and how a computer should do. Unfortunately, there is no magic – a computer won’t do anything without instructions. And this is a dark side of the total control over computers.

Knowing what a computer should do is a tricky part – there are many things you should take in considerations for non-trivial problems. As a non-technological example, lets imagine that caring parents (customers) asked you to write a program for kids “The Kid in the School”, which provides detailed instructions what kids should do in the school. Lets assume they will exactly follow your instructions (we are talking about imaginary situation). As any program, your program will contain sequence of commands, conditional logic and responses on external events. You could provide instructions like this:

  • Find a classroom and sit down to your desk
  • Write down and remember everything what a teacher tells you
  • At 1 pm go and buy lunch. Eat it.

You could think about more complicated events

  • If your teacher and a friend talk with you in the same time – listen to the teacher only
  • If somebody offers you a cigar, refuse and tell about harm from smoking.


Your program should take care about thousands of different situations. In addition your customers (kid’s parents) could have opposite views about appropriate behavior and responses. Also, it is possible that your program is required to work in different environments (daycare, junior, middle and high schools, colleges). And still, as a professional programmer you have to provide clear, concise and unambiguous instructions. In the same time, you’ll have angry parents calling about flaws in your program and misbehaving kids, schools principals calling about crashed schools and managers demanding addition of many new features to the program so desperately needed by millions of zealous users.

The programmer should be cool, smart, creative and have a good mind control over the complex, wicked and growing program. It is the second reason to love programming.

3. People and Problems

Before you know what to do, you should understand people and their problems

To tell the truth, programmers cannot deal only with perfectly reasonable and predictable machines all the time. Computers and programs, that power them, solve real life problems. That means that we have to work with people (often irrational), understand their expectations and problems. As I mentioned before, it is not easy. Often customers don’t know what they want or cannot express it clearly. Often, they think that they know how to build a program, but often they are not in reality. Often their business and needs change after the start of the project. The worst thing is that people start truly realizing what the need only after the program is done. They might find that program doesn’t solve their real problems, it is not convenient or doesn’t work as expected.

Sometimes, it could be similar to building the program “The Kid in the School” based on requests from people who don’t have kids in the school. They have rose blurry picture what they need, which is far from reality and miss these tiny evil details.

A good programmer could read between lines and understand unspoken words. He or she could guide the customer in technological jungles, help each other on slippery curves of this journey and discover solutions together. Interaction with people, solving problems and translation of people ideas into the computer language is the third reason to love programming.

Executive summary for spouses

As you can see, a true programmer should have cool brains, creative mind and a strong heart. He should understand people needs, solve tough problems and clearly expess in the program what these brainless, but logical computers should do.

So, next time when you see a thoughtful programmer behind his desk, you should know he creates worlds of logic and reason for computers from vague world of people ideas. And he has good reasons to enjoy it.

AddThis Social Bookmark Button AddThis Feed Button


Comments

Hi,

I donot agree with you completly.You are right that programming is fun but recently i started balancing my life giving equal importance to wife,family and then programming.

remember i was a workalcoholic previously but now realized that life is not 100% about programming only..

Any thoughts???

thanks
prashant

Comment by prashant | August 7, 2008 10:55 am

Good little read. Programmers are naturally introvert (some even claim us to suffer from Asperger’s syndrome) and we do seem to have a hard time separating work from hobby, for better and for worse.

I tend to see it no different than other sciences, where curiosity and an unbound motivation to understand and experiment is almost a necessity in order to succeed. Programmers like other intellectually challenging trades are different in that we don’t necessarily base the choice of employer upon the paycheck.

It’s all a balance of course. It’s true that at our deathbed, we probably won’t be saying “Gee I wish I had spend some more time with my computer”. Then again, there are so much more we’d do different in hindsight and I am going to guess that is not particularly unique to programmers. And unlike a lawyer, at least I can be contend in knowing that I did it for the fun and not for the $.

Comment by Casper Bang | August 7, 2008 12:02 pm

What about programmers who don’t like programming?

Comment by Aakaash | August 7, 2008 2:00 pm

> What about programmers who don’t like programming?

What about them? They should probably pick a trade where they are more happy then. And they certainly don’t have the problem of explaining late programming-hours to their spouse, which is what this blog entry appears to be about.

Comment by Casper Bang | August 7, 2008 2:05 pm

Hello. Just want to know, if Programmer is She, not He, and She(programmer) has family (I mean children), how is a spouse has to love her job/hobby life, if He has the same lovely crazy (programmer) life ? Especially if She is more talent?
p.s. at least you try to resolve this situation. I like it, because it works not for only programmer life.

Comment by Andriy G. | August 24, 2008 10:34 am

What about situation if your five is true programmer with cool brains, creative mind and a strong heart? And… May be mother-in-low too.
In this situation you should be a good project manager. 🙂

Comment by Bohdan | September 2, 2008 10:10 pm

[…] Andriy Solovey har skrevet et lite innlegg om programering, tiltenkt ektefeller av utviklere. Han legger frem hvordan programmering virker, hva som er vanskelig og hvor flinke vi utviklere er. Innlegget kan anbefales til alle som har å gjøre  med utviklere i det daglige. Introduction to programming for non-programming spouses […]

Pingback by blogandtell » Introduksjon i programmering for ikke-programmerere | September 4, 2008 8:32 am

This blog have little value without you and your comments, thoughts and discussions. Please, leave your comments. You are welcome to debate and criticize any idea, but, please, don't attack other people. Thanks for your contribution!

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Subscribe without commenting

Software Creation Mystery - http://softwarecreation.org
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License .