That's a very mild way to express my feeling about it.
Maybe I'm asking too much, but Yocto/openembedded is the worst piece of software I've ever dealt with.
The build system is a huge pile of opaque and fragile scripts. It's so fragile, that if you don't put a space before a list of options, it would be concatenated with other options without a space, leading to incorrect options.
Because there are no lists, lists are just strings of space-separated words. Who needs proper data types?
There are no modularity either, everything is configured through strange variables with names like CONFIG_image_graphics_mesa_package=... God knows how this naming works.
Of course nothing is documented, and the discoverability is extremely low: everything is done through hundreds of opaque shell scripts, python scripts, half-baked python scripts for their build system.
The overall design of the build system is abysmally bad and fragile, and it's harder to get a notion how the things work than to just build everything with your own scripts.
Oh, and when something is wrong, build system just returns python stacktrace.
Is it that hard to use proper abstractions, data types, docstrings, introspection mechanisms so that everything would become transparent, obvious and sane?