Things I Learnt The Hard Way (in 30 Years of Software Development)