Discussion about this post

User's avatar
Eric Nickell's avatar

Hey, Bruce, it's been quite a while.

Yup. Concurrency is hard, and is too frequently shoe-horned into software that became too successful too quickly.

I've helped add concurrency to two different huge Java projects. Both fit the description above. One became nearly unreadable but performant The other has a very subtle bespoke concurrency layer built to match an engine replacement, but sidestepped a rewrite of the single-threaded business logic. Neither felt satisfactory.

My Go experience (in green field projects) has been much more palatable. For computationally-intensive or backend-rpc-limited tasks, the concurrency can be encapsulated in a single compilation unit.

That said, I think the real win for concurrency for both languages is having an invisible concurrent server framework that magically works as long as you (correctly) coordinate work through a transactional persistence later.

Eric Nickell

Expand full comment

No posts