There are many advantages of XAML, but disadvantages as well as you pointed out. In the case of WPF, XAML is a non-language specific description of the UI using a more natural hierarchical relationship between elements. This also enables easier code sharing between languages, and enables tools to generate XAML without knowing the nuances of a programming language. Expression blend is one such tool, and there are converters for many other third party tools as well, such as Adobe Illustrator. You can write a feature-rich app with just XAML and never touch a line of VB.NET or C#. That being said, there are advantages to both XAML and procedural code and those trade-off decisions need to be addressed in your design. I personally like to see the hierarchical relationship, but do have some gripes when it comes to debugging complex XAML.