back

by madrox·14y ago·view on hn ↗
In every technology stack, there's always some layer below which is unnecessary to understand and above which is essential to writing good code. Where you think that cutoff belongs is usually the layer at which you, yourself, understand it.

I mean, we live in a world where we have programming languages that COMPILE TO JAVASCRIPT.

That said, I applaud this guy's OCD fascination with low level optimization. It's only because of people like him that higher level programmers can even exist.

1 comments
> In every technology stack, there's always some layer below which is unnecessary to understand and above which is essential to writing good code. Where you think that cutoff belongs is usually the layer at which you, yourself, understand it.

It's important to be able to work nominally at the N'th level of abstraction but be able to jump to level N - 1 if need be. Computer systems are full of leaky abstractions, and if you work long enough they will probably impact you at some point.

I read that as a statement of arrogance. We are not überprogrammers able to delve down to all levels of the system.

When was the last time an Excel macro developer needed to know semiconductor physics in order to debug a fault lying in the silicon layer?

When has a Ruby on Rails programmer ever needed to know quantum electrodynamics to track down a hard disk error?

Abstractly you may consider that knowledge to be useful, but concretely, there's a reason people specialize - each of those domains takes years to gain competence, and there's a good probabilistic argument against everyone being "able to jump to level N - 1" all the way down.

I doubt the poster meant it as a recursive statement. Rather, if you work in Java you should know how the JVM works, if you work in Javascript you should have a good grasp of how the browser works, etc.
madrox wrote: "In every technology stack, there's always some layer below which is unnecessary to understand", which is a fully recursive statement." cwzwarich's comment is in the form of an inductive argument. Why should I not see it as also being recursive?

Most people can't "jump" to a level lower than they are used to working. They have some idea of the overall concepts, yes, but it takes time to get up to speed. Most Java people have some ideas of how the JVM works, but few can jump to (say) the JVM's memory allocator code (even when available) in order to fix problems.

In any case, does a Java programmer need to know chip layout design in order to program, or do you agree that that is "some layer below which is unnecessary to understand"? Yes, someone, somewhere, might have had a problem in Java code caused by noise leaking across from one circuit to another, but you can't seriously expect that most people will be able to jump there if needed.