There have always been visual editors for the web. As the author suggests, they have relied on abstractions of the underlying code. For example, the CSS box model (width/height, padding, border, margin) are often abstracted as draggable handles on bounding boxes. Yet these systems suffer from some fundamental limitations:
1. They obscure the underlying implementation, making it harder for designers to understand and fix problems when they inevitably occur. On a related note, the lack of visibility into the code inhibits learning.
2. They lack the power to express more advanced styling rules, such as the following:
/* Paragraphs have 20px margin above unless they follow a heading */
p {margin: 20px 0;}
h1 + p {margin-top: 0;}
/* Don't indent the top-level UL, but indent 20px for each level of nesting */
ul {margin: 0;}
ul ul {margin: 0 0 0 20px;}
/* Divs that are immediate children of forms get 20px margins, but divs nested
within those don't. */
form > div {margin: 20px 0;}
Or, if they do have the power to express those rules, they're doing so in one of two ways: Letting you write CSS ad-hoc, or building a complex GUI that maps to those CSS rules. In the former case, you're back to hand-coding. In the latter case, you're using a clunkier proxy for hand-coding.3. They lack the power to express idiosyncratic JavaScript interactions. They can provide some generic primitives like rollouts. But many, many real-world apps need fine-grained control over interaction. For example, today I built a system of nested lists with sorting, deletion, and insertion to arbitrary depth. It was so idiosyncratic that it couldn't have possibly been made into a generic component in a visual editor. Problems of that nature are fairly common in my work. And no, the idiosyncrasy is not a sign that something's wrong: Different problem domains often call for (slightly) different interfaces.
4. They don't play very well with dynamic websites. If you need forms or for HTML to be generated from a database--both of which are very common needs--you can't express that generically in a visual editor. Expressing that kind of logic is an act of programming. Historically, efforts to abstract programming into a visual process have been disappointing or outright failures. Source code is the only workable way to express a computer program.