I've found that many of the general principles for application "user interface" design also apply to code design itself. The code and config info is the programmer "user interface" into the application model. Similarities include: * Ease of understanding what is going on with data or state * Ease of navigating to what we are concerned with * Reducing the chance of making human mistakes. (Example in coding: avoiding two different variable names that are very similar-looking.) * Use or balance of consistency to make learning one part easier by borrowing concepts from another part. * Deciding whether to focus on (optimize for) newbies and average-skilled versus power-users or master programmers. * Balancing the myriad trade-offs of different design paths. -top I'd certainly agree that LanguageDesign (including API Design, as per ApiIsLanguage) needs the same principles as UserInterface. The 'user' is another programmer. And, vice versa, users (or at least an important subset) are often programmers, which leads to user-defined scripts and plugins and configurations and other extensions to applications. That said, the "ALL" in AllProgrammingIsUserInterface seems a stretch. Glue code and other sorts of code that you don't intend to share with anyone, especially if it's a one-off script, doesn't seem to qualify so readily as UserInterface...