4 levels of competence of a programmer from beginner to guru are laid out in 15 conditional lists, here are just a few of them: - knowledge of algorithms, - ability to organize version control, - experience in designing complex systems, - code readability.