Front-end programming is easy these days -- most folks are using jQuery or other similar libraries which insulate you from the problems with implementing complicated effects in various browsers.
Web "design" on the other hand is a vague term. Do you mean the graphic design aspects -- layout and graphics in general -- or do you mean the translation of layout and graphics to HTML + CSS?
If it's the former, then -- in my opinion, which really isn't worth much -- good programmers just aren't good graphic or layout artists. The two fields require diametrically opposed skillsets.
But if it's HTML + CSS, then that's just a matter of studying sites like cssplay, smashingmagazine, and csszengarden.