A competent programmer is expected to have many strings to their bow, to keep up with the latest technologies and to produce beautiful, efficient and secure code - a non-trivial task.
To that end, here are some links on the nature of programming and the eternal quest to be a better programmer: through secure, optimised design; offering effective UI; and understanding and predicting what users want.
The Principles of Good Programming
by Christopher Diggins
An excellent round-up of acronyms (DRY, KISS, YAGNI) and precepts (Separation of Concerns, Principle of least astonishment etc).
Teach Yourself Programming in Ten Years
by Peter Norvig
Why programming is difficult, how you should approach it and the lessons learnt in the author's last 10 years.
Iterative vs. Incremental
by Bradley Holt
Thoughts on the conflation of "iterative" and "incremental" in software development.
Encyclopedia of Human-Computer Interaction
by Mads Soegaard et al
A new (as yet incomplete) free encyclopedia including videos and commentaries from luminaries in the many fields of HCI.
Front End Development Guidelines
by Tait Brown
How to understand your users with personas
by Brad Colbow
How to assign personas to you users in an effort to better understand their thought processes and needs.
OWASP Appsec Tutorial Series
The OWASP Appsec Tutorial Series breaks down security concepts in an easily accessible, friendly way.