Being the father of three-year-old twins, I like to call myself a scalability
expert. Besides dealing with quite a few scalability issues over the last three
years, I have also learned a thing or two about educating children.
In this column, I would like to share some of my insights about
three-year-old kids with you. Are you wondering how this might be relevant to
you and why you find this column in Web & PHP Magazine in the first place? I
would assume you do. But you will have to endure some tension before the
surprise ending. So please make a promise to me that you will read through to
the very end of this column (without peeking ahead!). In the end, everything
will become clear.
In my opinion, one of the most amazing facts about children is the passion
that they can develop for certain things. My son, for instance, recently wanted
to pet chickens as we spent time on a farm. Imagine the little man chasing
chicken around the place, complaining that they kept running away as soon as he
got close. This went on for about two days, until he had learned his lesson. Of
course, while at the farm, I had repeatedly told him that the chicken did not
want to be petted. As you can imagine, he did not really care about my advice.
He just had to gain his own experience.
Children strive for perfection. Their own definition of perfection might be
somewhat different from their parent's expectations, though. My daughter, for
example, can spend about 10 minutes with dripping honey on a slice of bread (or
even better, directly on her plate). I cannot say what shape or pattern of honey
distribution she is actually aiming for, but for sure it must be a very
meditative task to work on. My daughter will usually not stop before you remove
the honeypot, and I will not go into details about the "discussions" that follow
the removal of the honeypot. Suffice it to say that it is not guaranteed that
she will actually eat the honey.
Probably everybody has witnessed a child being given a new toy. Their eyes
light up, and they immediately want to try out the new toy. This "trying out"
can last for several hours or days, and might even include reverse engineering
the toy, or pushing the boundaries well beyond the toy's specification. In case
the toy breaks (which, unfortunately, is not uncommon), one can usually expect a
pretty emotional reaction.
In general, children do not posses a sense of time, or timing. In combination
with children's incredible desire to do things on their own (dressing, quickly
finishing up that puzzle, or wearing shoes, for instance), you quickly run into
trouble when you need to make good time. In my case, this usually happens if we
have an invitation, or want to reach day care in time, just this one time, for a
change. So what is more important: giving children the freedom to learn and
explore, or actually getting stuff done?
It turns out that learning is a long and difficult process. Children learn
based on their own experiences. Sometimes, explanations do not even seem to be
helpful, or needed. When my kids started to walk, for example, not only was I
completely unable to explain to them what to do, but any explanation would have
been beyond their comprehension. The same holds true for turning around,
crawling, or getting up. Have you ever tried to explain to somebody how you
actually get up?
To sum it up: children are awesome, and being a father, while being stressful
from time to time, is something I would not want to miss. But all of this has
nothing to do with development, or does it? I think there are a lot of
commonalities, because software developers are just like children. This is, by
no means, a devaluation of developers.
Most developers I have met, including myself, are perfectionists. We have an
intrinsic motivation to deliver high quality. Quite often, I find that customers
(regardless of whether they are internal or external) actually require "less"
quality than the developers think is appropriate. While it is important to
define SMART quality goals that align with the corporate strategy, developers
can quickly be demotivated if they are not allowed to reach the quality goals
they have set themselves. This happens in a very implicit process, and it helps
to make this process explicit.
Developers also have an intrinsic motivation to learn constantly. This
requires time and effort, and many work environments do not give developers
enough freedom to do this. This leads to developers trying out "new toys" in
business-critical projects, instead of creating a prototype, or playing around
with a new technology in a pet project for a while. If developers had more
freedom to try out things outside business-critical projects, there would be
fewer project risks.
I would now like to invite you to re-read this column. Whether you have
children or not, I am sure that you will agree with me that a lot of what I
wrote about children also holds true for software developers. I will leave it up
to you to reach your own conclusions on how this should affect the way you look
at how developers act, interact, and communicate.
This article originally appeared in Web &