I think you miss at least a fourth point: soft skills
meaning things like:
communicational skills
organizational skills
stamina
appropriate dressing
and so on. Mostly things you don't learn at school nor at work. I think the communication stuff is at least as important for programming/CS as everything you learn at school/university. Ok, if it comes down to dress code, you can live without it....