<< I will have to disagree. You have know about the hardware to write effective software. Everyone on the board complains about bloatware, but now we have people who think you dont have to know about the hardware. The less you know about the hardware the worse the code gets. >>
I agree. In any area of discipline, it is best to specialize in one particular area but maintain a relatively well-rounded knowledge of other related areas.
i.e. A European historian with limited knowledge of Asian history will not write effective history papers, unless he/she is dealing with very specific topics.
Similarly, a web developer who barely knows anything about server hardware, networking, etc, is very likely to create poorly designed apps.