The way I've been accustomed to User Interfaces is to see everything as a div. Where a div is essentially a box and they can be stylized in CSS. 

```
<div class='container'>
   <div class='header'></div>
   <div class='mainbody'>
       <div class='someusercontrol'>
       </div>
   </div>
   </div class='footer'></div>
</div>

```

But it seems like nowadays with React and Angular Directives, and now with Web Components people are slowly shifting to:

```
<container>
     <header></header>
     <mainbody>
             <someusercontrol someattribute='123'>
             </someusercontrol>
     </mainbody>
     <footer></footer>
</container>

```

The problem that I see with the second example is that now all elements are heterogeneous as opposed to homogenous with divs. Each element can have different attributes / properties and can work in different ways. This can lead to complexity when viewing someone else's code for the very first time as each one of these "things" works differently.

But some argue that now elements will be more modular and easier to re-use. But I'm wondering if it's worth it. Are web components really the way to go? It sure seems that the future indicates they are.