I don't think it's just a matter of a junior programmer messing things up. To really maintain concurrent code, you have to fully grasp a lot of pieces in your head, like what's the correct locking order etc. This is huge mental debt that needs to be transferred between teammates. And if there's no testing for it, errors creep in. The largest source of heart burn in my career has been just this.
That said, I agree with you that imperative languages will be around for a long time to come.
That said, I agree with you that imperative languages will be around for a long time to come.