Sometimes I wonder if I picked the wrong profession.
Think about it. I spend all my work day trying to teach a computer what to do and how to behave. I come home from work and have to do the same thing with my children.
The difference is... a computer must blindly obey with exactness; a child gets to choose whether to accept your instructions and perform them, and can choose whether or not they'll follow some, all or none of them.
When the computer doesn't produce the desired outcome I can't give it a timeout, scold it or punish it (trust me, I've tried... it doesn't get me anywhere.) Instead I reword the instructions until it learns the correct way to produce that outcome. The cool thing about that is; I always know I've taught it wrong until I see the desired outcome.
When a child doesn't produce the desired outcome, I have to perform some analysis; decide whether or not I gave the instructions incorrectly or the child didn't perform the instructions correctly.
In Software Development, there are different types of errors... in compiled languages, you can get compile errors and run-time errors.
Compile errors are those that happen when the computer tries to analyze your instructions to see if it can even do what you've asked. If you've given instructions in a way the computer can't understand; it lets you know right away if your instructions have been such that it can't understand them, much less execute them. It's very handy. I wish God would've installed that feature in my children; it would save much time, contention and frustration.
Run-time errors occur when you've given instructions in a format the computer can understand, but there is a flaw in the logic/flow of execution. These errors rear their ugly heads when the computer is in the middle of executing your instructions and can't complete the task. Again, with computers, it's very easy to recognize that when the computer can't complete it's task, it's usually because the Software Developer failed to instruct the computer successfully.
As a Child Devleoper, I don't get that luxury... I can't know when my child displays a run-time error that it's the fault of the Developer. Of course, because of pride, I assume first that the child has encountered a "Memory Fault" error and commence and immediately execute the Child.Chastise(), Child.Scorn() or Child.Discipline() subroutines.
Instead, I should get smart and think like my Software Developer side... assume it's my fault first and look to reword my instructions. Maybe I'll have more and quicker success with reaching desired outcomes from my children.
Maybe I DID pick the right profession...