The conversation

Lessons learnedExperience excerpt · English

When I graduated, I was shocked to learn that no company cared about any of the architectural …

… When I graduated, I was shocked to learn that no company cared about any of the architectural concepts that I had learned. UML class diagrams, sequence diagrams, ER diagrams, etc... had been on the way out. At one point, as large internet companies where scaling up, there was a brief resurgence of interest in sequence diagrams... But it didn't really last. Nowadays most software is riddled with race conditions and deep exploitable architectural flaws. Cryptocurrencies have been victims to many such attacks. Billions of dollars have been lost to race conditions... And that's just the ones which were discovered. The programming primitives that we're using today aren't optimized to avoid race conditions or even try to encourage good concurrency patterns there; quite the opposite; they encourage convenient but disorganized parallelization and they're optimized to put the focus on type safety which is a far less concerning issue. I have built some powerful async primitives for Node.js, nobody cared! NOBODY! It's so bad that it seems as though some people wanted it to be that way. …

Original discussionThe 'Hidden' Costs of Great Abstractions137 source comments · at import
3

What was this responding to?

Parent context · original excerpt

DO

I've come to the conclusion in the last couple years that being the guy who understands how the abstraction works under the hood is treated by companies is more of a liability than a virtue. More and more places just want Jira tickets done fast instead of someone that's going to push back or question if this is the best way to build some thing. They want the thing, they don't care if it works well. They don't care if it's efficient. They want it now. We've been moving to React, replacing an internal framework that's worked wonders for us we've been using for over a decade. The biggest part of the move is "hiring". My general sense is that nobody understands how React works under the hood. The answer I get when I ask questions is generally just "don't worry about it". Everything is giant overbuilt and terrible because most people never bothered to learn even a single level up from where t…

Full original

Community replies 0

No community replies yet. Add your perspective.

Replies from the source 3

Direct replies available in this import. Original-language excerpts.

GL

nice post, lately ive been dealing with concurrency, between threads and processes. trying to keep it cross platform as well, its a lot to learn. if you have large buffers and want to keep some semblance of performance, its VERY interesting understanding all the transfer mechanisms and cache levels involved. i feel these are the sorts of things my education skipped, it was all very focused on the static structure of objects not the dynamics of data transfer.

Full original
BU

Yeah, passing by value or "Value semantics" can prevent many programming errors. Passing references to immutable data can serve a similar purpose. In low-level languages where memory layout and calling convention map to target hardware, there are differences in performance to consider. Pass by value would indeed make a big difference to how programs are structured and make it easier to reason about programs. I just want to point out that "concurrency safety" is very much a word, although "thread safety" is more common. These are broadly part of memory safety, which is a topic mainly due to security concerns but also academic study. The two perspectives are not perfectly congruent. Non-concurrency-safe languages like go can also be considered broadly memory safe. The pragmatic rationale is that data races in GCed languages are much less exploitable. From a academic, principle based view t…

Full original
JE

My journey is quite similar. My mental model got a huge boost after I read and understood Leslie Lamports early work and the work of Edward Lee about getting deterministic results in the presence of concurrency. I even found the earliest paper with a mathematical proof that write and read must be separated in time or space (the math basics of the rust borrow checker), but don't find it anymore. - https://lamport.azurewebsites.net/pubs/time-clocks.pdf - https://en.wikipedia.org/wiki/Chandy%E2%80%93Lamport_algorit... - https://www2.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-...

Full original
Continue on Hacker News

Respect different perspectives. Share concrete experiences.

Sign in to post, reply, repost, and quote.