Is it necessary or advisable to teach text-based input and output in a non-CS intro programming course?
I've been coding for 20 years in non-cs fields. I've worked on several >100k line code bases. 

Almost every program I write comunicates with the outside world via text, usually a file hand or file-handle-like connection to stdin and stdout. 

In addition, I also almost exclusively  do my debugging via print statements (or output to debugging logs). 

IDEs and graphical debuggers can be very useful tools, but they can become a crutch that excuses the student from thinking. Print statements encorage the student to really reason about the logical and flow of their program - they must be able to hold the program in their mind and understand where it is going to be important to output a variable state, or just ping "here" to the terminal. 

Now obviously I wouldn't insist that students must do this when working on large, complex code bases, but while they are making simpler things, things where holding the whole structure in your head is possible, then I think it is good for them.