Perhaps NOTHING was the wrong choice of words.
I write driver level embedded code for a living. Everything from bootstrapping embedded linux to SoC level power management.
Power management is usually the last thing to get done (if at all)... why? Because management usually sees it as icing on the cake. Attitudes are typically just make it work and we'll ship a bigger battery to make it last. Or we'll ship an upgrade in 6 months, if the product starts to take off and we decide to fund further development.
Time to market is everything.
Power management is also really hard to get right 100% of the time. It's really hard to debug code/hardware where stuff is shutting itself off, or worse, a controller uP is shutting you off unexpectedly.
It has NOTHING to do with 'bad code' or 'shitty programmers'. It's just management grinding down on the engineers to do it: better, faster, cheaper, pick two. Usually faster and cheaper win.
I hate to state the obvious, but a hash by nature is breakable. You are (typically) distilling a large number of unique bits down to a smaller number of bits.
Of course there will be more than one set of inputs that generate the same output.
Its more an issue of:
1. How hard it is to find colliding inputs.
2. What the hash is used for.
Passwords typically generate more bits, so different rules apply.
The moon is made of green cheese. -- John Heywood