Here is a question you can ask about any program ever written, and it is not “does it work?” It is: who is this for, and did anyone ask them? A program has a user the way a letter has a reader. You can write a letter to nobody in particular — people do it all the time, and it shows.
Look at two versions of the same line:
print("ENTER VAL:")print("How many hours did you work this week?")The program behaves identically. One of them was written by somebody imagining a person on the other side of the screen, and one was written by somebody imagining only themselves at 11pm. That difference is not decoration; it is the difference between a tool somebody uses and a tool somebody abandons.
Questions worth arguing about:
- Think of an app you gave up on within a week. Where exactly did it stop making sense? Was the failure technical, or was it that nobody like you was in the room when it was designed?
- “It works on my machine” is a famous programmer’s excuse. What is the equivalent excuse for a user interface — and have you made it?
- If the user is you, does that count? What can you learn about a program’s usability from being the only person who ever runs it — and what can you never learn?
- A program that is powerful but confusing versus one that is limited but obvious: which is more useful? Does your answer change if the user gets one shot at it, under pressure, in front of other people?
- Whose problems get solved by software, and whose do not? Make a list of small annoyances in this building that nobody has ever written a program for. Why those?
The practical edge is immediate. Every task in this course asks who the program is for, starting with The Helper Script and ending with The Community App, where “who” is a named person who agreed to talk to you. The skill of asking well is drilled in What Would You Ask and taught properly in Interviewing Your Client.