9 Types of Programmers: A Comprehensive Look