Shameless plug follows.
I think shells are horrible not only from (today's) programming perspective but also from UI/UX perspective. In response to commands, shells dump text to your screen: from stdout, from stderr, from different programs, humanly unreadable amounts - they just don't care, it's "not the shell's job" apparently.
Here is my take: the shell's job is to do everything for my productivity. Imagine programmers arguing that "notepad" is the best, IDEs are not needed, we need to keep text editing pure.
How about shells output objects on the screen and these can be interacted with? Amazing for shells, right? This exists for decades everywhere else.
My vision for UI in NGS - https://github.com/ngs-lang/ngs/wiki/UI-Design