My definition of a good programmer

"A beginner knows a programming language, some portion of its standard library, and perhaps technologies, patterns and frameworks.

A good programmer knows how to apply them to solve and represent complex problems and real-world systems.

An advanced programmer can also make the solution maintainable, and meet other non-functional requirements."

— A. Hoffman
Unisys 1994