For the degradation, I especially don't mean a lazy approach. In fact, having good degradation is typically harder for newer developers (or requires them to check in more browsers). The core way to do it is to develop for what's common across browsers (what's handled the same way), then for ambiguities in the spec (does the border count as part of the width of a div or not?). Once that's done, you then add the extra. The idea is, if browser A supports, say, easily defined gradients on a button, but browser B doesn't, should we have a special case for browser B to load an image to give the identical gradient, or should we let it be a flat colored button? Or let's say a browser has some extensions that make client-side form validation easy and simple. Using that functionality for that browser makes sense, but is the development effort to do the validation on all browsers worth it when server-side validation will happen also? The functionality is the same, the experiences are both good, but the experiences are not identical.