There are some things a good developer is NOT required to know
Jeff Atwood and Peter Norvig seem to think you must have a deep understanding of how computer hardware works to be a good software developer:
how long it takes your computer to execute an instruction, fetch a
word from memory (with and without a cache miss), read consecutive words from disk, and seek to a new location on disk
I did learn these things, but after reading Jeff's post I have been trying to remember a project I worked on during the past 10 years which required this type of knowledge - and I got nothing.
Let's put aside for a moment specialized area in software development in which this knowledge is important:
- Real time applications
- Embedded applications
Assuming you are developing using a modern, high level programming language like Java or C#. During development of applications in areas not mentioned above, did you ever encounter an actual need to know these things? why?