Title says all, and I hate for this to sound like I'm being a snobby critic, but I am merely curious why coding programs/apps/whatever is usually buggy.
It's the nature of software. Logic is a lot harder than it looks because there are always edge cases. For example, try to give yourself foolproof instructions for walking forward. "Put one foot in front of the other", right? What happens when you reach a curb? If you follow the instruction to the letter (which computers are very good at), you're going to trip and fall. Now you need more complicated instructions. "Put one foot in front of the other, unless there is a curb that will intersect with the next step. Then raise foot 5 inches and then step forward." That's better, but it's easy to imagine situations getting more complex. Throw stairs into the mix and your instructions fail again. Worse yet, stairs are not always of a regular size. Higher stairs may mean that 5 inches is too little. Shallow steps (e.g. in front of a museum) may make your steps too high, thus causing you to fall over when you step. Perhaps you should feed your sensory data into the height calculation? Of course, you can only estimate. If you get the estimate wrong, you will fall over again. Now you have an intermittent problem. If your judgement is good, everything works. If it's bad, you crash. I don't want to bore you too much, but hopefully this should give you an idea of the difficulties that programmers have. More rigorous testing can find issues before the release, but that tends to be costly. Costs which independent developers have a hard time incurring and large developers (looking squarely at Gameloft) can't seem to completely justify.
Wow, I learned more in that post about programming than my entire 'Intro to PASCAL' class in high school. Probably why I got a C-....
Another answer I'll suggest is "because it can be". If you're designing a car, you have to get it right, or people will die. When designing any hardware really, there is no "do-over", there are no patches, only recalls. Apple would love to release a patch to fix the iPhone 4 antenna issue, but they can't. If iPhone 4 were a piece of software, we could quickly patch this bug and everyone would forget about it. Apple was sloppy with their testing of the hardware, and got burned for it. If it were a game, no one would be talking about it, because it'd be patched already. With software, we can afford to be sloppy because we know we can just patch it later. This is especially true with games. There is certainly software out there that is more or less fool proof. Medical software, rocket hardware... needs to be perfect, and more emphasis is put on quality and regression. With most software, we have a concept of an acceptable level of 'risk'. No product is bug free. All we can do is reach a point where we think the risk of any game-breaking bug is low enough that we can ship.