|Think about Loose Coupling|
As I mentioned in a slightly earlier thread, I was teaching my flatmate Eiffel for his comp sci course. What I didn't mention was the trouble he was having with basic concepts, and I think a large part of it was the way he was approaching the subject.
I couldn't get him to write simple programs like "Hello World" because they were 'too simple'. He wanted to crack systems right away, like the characters in the movie 'Hackers'.
I've noticed this attitude amoung a number of adults - the idea that having been alive for 20+ years gives someone the innate ability to - I don't know - code network apps, or use power tools, or fly an aircraft, all without prior training.
Back to the case at hand. I could get my friend to following the code on the screen with his finger and saying things like "if this is true, jump to the end, otherwise go into the block". But the moment I turned my back he'd just be mixing random bits of code in the worst 'shotgun' debugging style.
His main problem was conditionals at one point. He just couldn't quite get the hang of the program flow, or code pointer concept. So he'd put things inside conditionals that weren't meant to go there. He thought that because they were still in the surrounding loop construct they would magically get run somehow, each time the computer went through the loop. And because he wouldn't do something as childish as put his finger on the screen and trace, he'd miss the important logic statement that was tripping him up.
He's got a little better, but he still won't write little mini-programs to test ideas. He's going to fight to the last against doing something 'childish', even though I assure him that when I'm coding professionally I'm doing little test scripts more than I'm working on the 'real' program.
I'll leave you all with the suggestion that you should code something 'silly' as often as you can. In Perl you are lucky because it is legitimate to write silly little scripts like obfuscations and poetry.
Heck you should also do silly and/or childish things as often as you can. Life's more fun like that. But avoid karioke whereever possible.