| > Unless you're doing SEO, everything semantic is just a distraction Accessibility and SEO are (usually) desirable system effects that rely on meaningful semantic code-inputs to the system. But that doesn't mean that only software system effects matter, and everything else is a distraction. Consider that when you're programming your various identifiers -- the names of variables, functions, classes, types that you choose -- are largely without any semantics to your system. To the computer, they're simply keys. And yet we sometimes say that one of two the hard/important problems in computer science (besides cache invalidation) is naming things. Why? Because the actual system isn't just the software & machine. The system includes the developers groking and shaping the software. And names and their relationship with domain concepts matter to people and help them manage their work. I've found that the first benefit to semantic markup -- not necessarily the most important, but the first -- is helping me better conceptualize the domain and my code. It functions as an orientation anchor when I'm working with components that look different between their source and rendered as part of a sprawling document in the browser. And it helps me get reoriented faster when I've been away from it for days/weeks/months. The heart of "semantic" anything is the idea that code is for people too. Maybe not all people, but definitely at least anyone who's writing it. |