Does a programmer need to have a deep understanding of digital electronics. Theoretical v/s practical. As what they teach us at college is pretty basic?

If yes, then do all kinds of programmers (software developers/web developers/app developers) need it (deep understanding), should a security enthusiast (hacker) have good knowledge of digital electronics?

  • 2
    No, not even slightly. Still interesting though – Richard Tingle Oct 28 '15 at 21:23
  • 1
    As described in the help center, questions of career advice and education are off topic here. – user40980 Oct 28 '15 at 21:24
  • @RichardTingle: I write software for medical devices for a living, and often have to use a scope to debug stuff. You're telling me my electronics knowledge is not even slightly important to my abilities? – whatsisname Oct 28 '15 at 21:48
  • @whatisname not for the writing of its software. For what it does probably, but those are 2 separate domains. You may well be involved in both domains but that's not really the point. I assume you're using the scope to get the real inputs to your software? – Richard Tingle Oct 28 '15 at 21:52
  • Not every programmer needs this. If you're using interfaces like RS232 or RS485, it's rather helpful. – ott-- Oct 28 '15 at 22:15

The computing world is a world of layers.

  1. Using semiconductor physics transistors can be design and built.
  2. Using transistors logic gates can be built.
  3. Using logic gates combinatorial logic and flip-flops can be built.
  4. From combinatorial logic and flip flops we build digital logic systems like processors and perhiperals
  5. Those processors interpret a machine code and communicate with the perhiperals through memory mapped registers (or occasionally registers in a specific "IO map".
  6. We use compilers and operating systems to abstract the details of the hardware
  7. We use high level interpreted or jit compiled languages with automated memory management to abstract things even more.

Someone working in an interpreted scripting language is going to find information about semiconductor physics totally irrelevant but knowing a layer or two below the layer you are working at is often useful in understanding why things are the way they are and what solutions are likely to be efficient.

  • Layers is the key. It's layers all the way down. – Móż Oct 28 '15 at 22:41

"deep understanding" - no. Is it helpful? - yes. You will get exposed to boolean algebra and Karnaugh maps in particular, which I have found helpful. You will get to really, really know your ANDs and ORs, but not exclusively.

  • 1
    "... but not exclusively" OUCH. Well played. – Dan Pichelman Oct 28 '15 at 21:30

Depending on what expertise the programmer wants to have the answer can vary. If the programmer is specializing in drivers on specialized hardware then a deep understanding may well be required. On the other hand, a web developer may have no need to get deeply into the hardware side and may just use abstractions in their career.

What you are taught in college should give you practice to know how you'll learn about a set that may well evolve over time. As new hardware is created, there can often be the challenge of how will you learn the new styles for things. Consider how there are so many gestures in mobile development that may not have existed 15 years ago.

Different specializations can require different levels would be the short answer here as while it can help to know about things, how you measure depth is also important. For example, are we talking about designing CPUs and GPUs here or just using what is already out on the market? What level of depth do you mean here? Would a Ph.D. in quantum mechanics be necessary or is it enough to know how electrons would hold a charge?

Not the answer you're looking for? Browse other questions tagged or ask your own question.