Non-interactive is far better than interactive. Faster, more efficient, more secure, less error-prone, less repeated effort. It's less work!<p>But there is an army of UI designers fighting against common sense. I'm sure we'll hear from some of them in this thread.<p>djb nailed this problem on the head when he wrote about the UNIX interfaces. Quoting rules, special characters... it's a minefield even if you are a "UNIX command line guru".
There's a high cognitive price to pay if you are trying to avoid all mistakes using this interface.<p>Solution: Remove the user interfaces. Programs interface with each other, not the user.<p>Non-interactive = less work. You start the system. It runs. There is no interaction. No ongoing cognitive price to pay other than monitoring.<p>And this is only the command line. Dare we look at the price imposed by GUI's?<p>Imagine a slide show where you had to click each and every time you want to see a new slide. Nice CSS! Wow, that Javascript is amazing! The page is so beautiful! Click, click, click. (Developers rejoice: We can track the clicks!) Now imagine you are the user and the slide show is 10,000 slides. Forget it.<p>Mechanize? Perl, Python, Ruby? JQuery? Give me a break. Why should people even have to waste their time writing such things?<p>Hey no problem! The kind developers decide to add an option to run the show on auto-pilot. Hurray. No more interaction is needed.<p>Think again.<p>Now imagine you have view 10,000 different slideshows to view and each one has a different way to start the auto-pilot mode based on the developer's own idea of "user experience".<p>You are right back where you started. Find the auto-pilot button. 10,000 times. Interaction.<p>A "slide show" is just a random example. You can apply this almost any sort of information intake where "interfaces" like GUI's are involved.<p>Go to a library and watch people trying to use various computer databases. In almost all cases, you will see them spending noticeable effort just to find things to click, and reading onscreen instructions. Every database is different. Every interface is unique. End-users: make 'em work.<p>The entire web is like this. Every web developer wants users to interact. Why? It's too much damn work. For users.<p>Will it ever change? Doubtful.<p>There is an entire industry built around forcing users to interact regardless of whether it is truly necessary.<p>For every person working to build an automated system there are two more building a system that forces user interaction.<p>Sometimes nerds, e.g. those familiar with Lisp or Scheme, say "everything is a list". Can mere mortals who know nothing of "programming" make lists? Is there any literate person on the planet who hasn't made a list?<p>"List processing".<p>Too _boring_. (It certainly isn't too _difficult_. Even the grandmother who can't use a computer can still make lists just fine.)<p>I know, let's build an "interface"! For humans!<p>Good grief.