Web and UI design, just like any kind of design used by real people, is not just about making things look pretty.
UI design involves multiple interdependent disciplines and requires knowledge in UX (user experience), accessibility and usability.
Choosing fonts, colours, and design elements involves thinking in all of these categories. Sometimes simultaneously.
Experience in writing code helps when making visual design decisions and vice versa. Same applies to system- and server-specific configuration knowledge when it comes to performance tuning and speed improvements.
I am by no means perfect in most things I do, so don’t just take my word for it. I’ve made smaller and bigger mistakes going by my best understanding at the time. Not always those decisions turned out to be correct but I’ve learnt a lot with every failure.
As Adam Savage of the Mythbusters fame once said: Failure is always an option
I’d like to add that failure can be total if one doesn’t take a lesson from it.