Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I agree with a lot of what you say!

When I was a kid, my first computer had 4k of RAM; my next one had 48k. I learned a lot about how everything worked, because there was very little to it. Over the years things have grown, but I've had a chance to grow along with it.

But somebody starting out today start in the middle of vast layers of complexity. From processors and hardware that are hugely more complicated up through virtualization, containerization, rich OSes, languages and standard libraries with decades of history, tons of add-on libraries, and then out to user platforms with their own tangled ecosystems and decades of history. It's a lot!

I think it's so much harder now for developers to develop "mechanical sympathy", that intuitive understanding of the rhythms of machinery. Apparently slight shifts in code can be 3 orders of magnitude difference in performance. So much of what they deal with is historically determined. (E.g., what percentage of working developers has every actually seen a carriage returning or a line feeding?) And it's all running on much shorter cycles with an ever-updating mass of tools, libraries, frameworks, and operating systems.

On the one hand, people can do some amazing¸valuable stuff with very little training. That's great! But I think it's a lot harder to truly master the craft, and I'm concerned that a lot of programmers spend their time in professional contexts where the feedback loops are long or broken such that they are encouraged to be less analytical than superstitious, cargo-culting their way to from one overly-aggressive sprint deadline to the next.



> I think it's so much harder now for developers to develop "mechanical sympathy"

This has always been something that’s fascinated me, how some people don’t have this feeling of “mechanical sympathy”.

Feeling “bad” (not the exact right term but I don’t know how best to describe this very intangible feeling) for a high-revving engine, or a CPU wasting cycles, or a structural component being under too much stress. Even if all of those things are within spec.

It feels like the drive to avoid that feeling ends up creating better solutions: more efficient code, a better distribution of stress across a structure, etc.

But I wonder if it’s something learned, or something that people just “have” to a certain degree. Not trying to pathologise everything, but it feels like the sort of thing that would be correlated with ASD


I expect it's both! Easier to learn for some, but nobody's born knowing it.

However, we have to set ourselves up so that it's easy to learn. With my early gear, I could hear it. Hear the disk seeks. Hear the bits streaming down the wire. I could see it via the blinkenlights.

In recent years, I've had to activate it, even build it. E.g., at the top of my screen I've got mini graphs of CPU, RAM, net, and disk activity. I'm constantly re-confirming and re-challenging my intuition of what's going on. And with distributed systems, I find various ways to keep feeding myself the sort of data that, over time, turns into intuition.

And that's so hard these days! Not sure how fresh-out-of-college developers are developing those intuitions, but I hope they're finding ways.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: