“I’d rather buy them cheese then buy bombs.”
“This scene is the bloodiest of the movie. We used, uh, 30 gallons of blood in the movie. I remember my shoes always sticking to the ground. I thought we’d had the record for blood, until I met Peter Jackson, who said for Braindead, or Dead Alive as it was called in the States, that he’d used 3,000 gallons. I guess that’s progress.”
“You’re fired. Clean out your desk.”
“I don’t have a desk.”
“Oh…OK, could you at least clean the windows then? OK. Bad Joke. Well, not really bad joke, just bad time for a joke.”
“This is what I thought you meant when you said plug in your guitar. I thought something was wrong because I had to use a hammer. And, I thought, this is totally going to electrocute you.”
“Yo tengo un porko en nalgas.”
“What does that mean?”
“I have a pig…in my nose.”
“Oh, God. What is happening in Mexico?”
“Donde esta la hotel that we were staying at?”
You are communicating with two different parties when you write a program: the compiler and other human beings. The language behaves in particular ways because constructs have certain kinds of meaning. For example, when I say public inheritance means IS-Aas in an ArrayList IS A Listthat is reflected in the language’s explicit conversion rules. If you’re trying to make public inheritance mean something other than IS-A, you’re then fighting the language, because it will probably perform conversions that your semantic model would not normally allow. If you want to represent something using a language mechanism, and you don’t understand to what the language mechanism corresponds, the language will not enforce the rules that you want enforced for the particular semantics that you need. One reason understanding meaning is important, therefore, is you are communicating with the compiler and you don’t want to fight the language. You want the language to work for you and back up your semantics.
Ain’t that the truth…
“It’s nice to see people drinking for fun; not just to stop the shakes, or get the invisible snakes off them.”
It comes down to showing that you care. Take for example some code that is kind of shared among the team, but primarily is mine. There’s some code in there that is obviously bad, but it doesn’t look like I care about it. I’m just leaving it bad. Anybody else coming into that module might say, “Well, Dave doesn’t care about it. It’s his module. Why should I care about it?” In fact, if you come into my module and do something else that’s bad, you can say, “Well, Dave doesn’t care. Why should I care?” That kind of decay happens to modules as well as apartment buildings.
On the other hand, suppose I notice an edge condition that doesn’t work in my code. I know it’s a bug, but the bug is not critical to the application today and I don’t have time to fix it. I could at least put a comment in there. Or, even better, I could put assertion in there, so that if the edge condition ever hits, something’s going to happen that shows I’m on top of it. By doing that, first of all I make it easier to identify the problem. But I also show other people that I care about that enough that they will fix problems too when they encounter them.
I experienced this just the other day. Someone had written some code that simply threw
Exception and they said, almost word-for-word, “well, that’s bad, but that’s how the rest of the code does it. So fix those windows!
This guy lived in a super mansion. He had a tapestry hanging on his wall a little too close to his fireplace, and one day it caught fire. The fire department rolled in. The fire was blazing. The house was about to go up in flames. But the fire department did not simply come charging in the front door. They opened the front door, and they rolled out a little carpet. Then they brought their filthy dirty hoses on their carpet and put the fire out. They rolled their carpet back up and said, thank you very much.
Even with the fire raging, the fire department took the care to put down the carpet and keep their hoses on it. They took extra special care not to mess up this guy’s expensive mansion. It was a crisis, but they didn’t panic. They maintained some level of cleanliness and orderliness while they took care of the problem. That’s the kind of attitude you want to foster on a project, because crises do happen. Stuff bursts into flame and starts to burn up. You don’t want to go running around crazy and causing more damage trying to fix it. Roll out the carpet. Do it right.