How much should a "software guy" (or "software gal") know about hardware?
Aside from the software developers working on embedded systems and hardware modeling or any other job that deals with software for or on hardware, how much should a software engineer know about the underlying hardware that they might be developing for? Should it be treated as a black box that just works or should there be a very strong working knowledge of the hardware systems?

EDIT: This question was inspired by [this post][1].


  [1]: http://stackoverflow.com/questions/22088/why-do-the-others-think-you-can-fix-their-computer
How much should a "software guy" (or "software gal") know about hardware?
===

Aside from the software developers working on embedded systems and hardware modeling or any other job that deals with software for or on hardware, how much should a software engineer know about the underlying hardware that they might be developing for? Should it be treated as a black box that just works or should there be a very strong working knowledge of the hardware systems?

EDIT: This question was inspired by [this post][1].


  [1]: http://stackoverflow.com/questions/22088/why-do-the-others-think-you-can-fix-their-computer