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 possess 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 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.
Stefan Priebsch unites expert knowledge with an extraordinary sense of when to use which tool. His specialities are object-oriented development and software architecture. As an internationally-acclaimed author and speaker he thrills auditoriums and likes to share his tremendous practical experience.