Just because it’s not easy, doesn’t mean it’s ultra-hard
Concurrency is hard. I like to think I’m a pretty smart guy. I’m definitely a very good programmer, and I’ve had plenty of theoretical and practical experience with concurrency. I still find concurrency very hard.
Concurrency is viewed as black magic, even by programmers who use it on a daily basis. When people tell me that concurrency is easy, it generally means one of two things – They are super-humanly smart, or the way they are using concurrency is restricted to nice simple patterns of interaction to which we can apply some simple mental analogy. Thread pools are fairly easy to think about, for example.