DCSIMG
There are some things a good developer is NOT required to know - Dotmad (on .Net)

Dotmad (on .Net)

Just Another Web 5.0 Blog

Podcasts

Blogroll

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:

Know 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? 

פורסם: Jul 29 2008, 10:52 AM by Dotmad | with 8 comment(s)
תגים:

תוכן התגובה

ekampf כתב/ה:

Considering that the author works at Google, where they build their own distributed databases, file systems, and even the servers themselves...

I guess the knowledge required there is not quite typical to what

you'd expect from your everyday programmer...

Btw, C# Parallel extensions and DirectX (and now WPF) shaders kind of

remind me the days I was writing graphics in assembler (especially shaders..)

# July 29, 2008 1:54 PM

Helen כתב/ה:

I think I agree with Jeff that having knowledge about how the hardware works is a good thing. I think it helps debugging problems and understanding limitations. I don't think that you have to know everything about computers to write good code (that's impossible) but I do think it's a good thing to have as accurate a mental model of the machine that you're working on as possible.

# July 29, 2008 3:37 PM

Ens כתב/ה:

I certainly have needed to know how the hardware was used.  There are non real-time applications that are still perf-critical (web browsers, encoders, basically most enterprise-class software).  Further, as Helen says, it can really help with some confusing debug issues.  And it's when a problem crops up that needs hardware knowledge <i>but you don't even know it needs hardware knowledge</i> that you need this.

Still, I would agree that there are large classes of problems where sophisticated hardware knowledge is inessential.

And I also basically disagree with Jeff's post in that I don't think he gains a lot of hardware knowledge by selecting different parts to build a computer (although some of the background research may betray underlying principles if you steer clear of marketing sites and gamer/enthusiast forums).

# July 29, 2008 10:47 PM

dotmad כתב/ה:

Ens, you raise a valid point here:

Understanding how the CPU works internally and how it interacts with the BUS has nothing to do with assembling a computer.

# July 30, 2008 3:08 AM

Ayende @ Rahien כתב/ה:

There are some things a good developer SHOULD know

# July 30, 2008 5:39 PM

Jesse Ezell כתב/ה:

Eh... everyone wants you to know something different. Many things can be valuable in the right context and useless in others. Talked with a few MS recruiters recently. They seem to be huge on threading, data structures, and algorithms and wouldn't have given a damn about hardware knowledge. Read an article the other day where a dude was saying that you have to know how to build your own compilers and diagnose hardware bugs. You can't learn it all in one day. Every bit helps, but damn... the more I know, the more I know I don't know.

# July 31, 2008 12:24 AM

There are some things a good developer SHOULD know | What did you mean ? כתב/ה:

Pingback from  There are some things a good developer SHOULD know | What did you mean ?

# July 31, 2008 4:44 PM

Alkampfer’s Place » Blog Archives » There are some thing a developer is not required to know..really? כתב/ה:

Pingback from  Alkampfer&#8217;s Place  &raquo; Blog Archives   &raquo; There are some thing a developer is not required to know..really?

# August 5, 2008 6:53 AM