Программисту - Стива Круга. Дело в том, что мышление разработчика кардинально отличается от мышления обычного человека и поэтому интерфейсы, созданные программистами, часто непонятны, сложны и неудобны для рядового пользователя. Стив Круг - это один из отцов-основателей UX и очень детально разбирает эту проблему (если кратко - программисты слишком умные).
Визуальный дизайн (типографика, колористика, композиция) - уже второй вопрос.
По типографике очень хороша "Типографика и верстка" Артема Горбунова. В ней хорошо описаны и проиллюстрированы базовые принципы построения хорошей верстки. Ее я бы читал первой, а потом уже все остальное - поскольку формирует четкую базу. Потом, при необходимости - углубляться.