selected publications academic article Bad software architecture is a people problem. Communications of The ACM. 59:42-43. 2016