Honestly? You're always learning. The day you stop picking up new things and trying new approaches, you're in trouble.
I have a degree in computing science, and I left university in 2007. I've been building sites since: as my own one-man business, for a company in the city I live, and for a huge educational establishment. Looking back now, the code I wrote when I left uni is horrific. Even when I look at code I wrote a
year ago, I see ways I could drastically improve it.
Although I do write PHP often, I really enjoy writing front-end code: HTML, CSS and Javascript. When you're dealing with this stuff, there are a few underlying concepts you really need to get. You can tell when people don't 'get' these concepts because their code grows into a monster, even when they try something mildly complex.
These tips are aimed at people who know how to write some HTML, and have used CSS before, and want to take their skills to the next level. If you're just starting out, you might not fully understand what they mean, but they'll keep you right.
The best lesson you can learn is about document flow. Block level and inline HTML elements, the styling limitations of both. What happens when you float (and clear) elements, what happens when you position elements absolutely or relatively, and how these ideas affect everything else on your page. People who don't understand these ideas tend to absolutely position everything, and give everything explicit heights and width. You really don't need to do this, and it makes your front-end code a nightmare to maintain.
Another important lesson to learn is CSS specificity. If you're new to CSS, you'll probably write rules and wonder why they're not appearing on your page. It's frustrating, but everybody does it at some point. There are times when certain CSS rules override certain other CSS rules: it's all in the selector that you apply the CSS rule with. #myID is more important than div.myClass, which is more important than .myClass, which is more important than div. People who don't understand specificity often end up with CSS with complex selectors, and often end up fighting to understand why certain CSS rules impact other things on their page. Nicole Sullivan
gave an excellent presentation on this, calling it 'specificity war'.
If my first job after university, I was lucky enough to have a boss that really cared about writing neat HTML and CSS. He had crazily high standards, but they really helped me keep my HTML simple and meaningful, and my CSS clean. If you're going to be building themes for CMS and blogs, this is another important thing to learn. We call it 'semantic markup'.
Here's a link that tells you a little bit about it.
The last lesson: don't arrange your site using tables. It's a tired cliché, but it's very important. There
is a better way. I remember the first time I had to build a semantic XHTML site using CSS (without tables). I hated it and thought "this would be so much easier if I just used a table". But once you 'get' how to lay out content (which comes from lesson 1: document flow), you'll wonder why you ever used tables.