I respectfully disagree. People who are not programmers use abstract reasoning and modelling skills all the time in their daily lives. They more than have the skills to solve this problem: You have a list of friends and where they are, you have your own location. Find the list of friends that are near your location, and send an alert (text, e-mail, whatever). How hard is that?
There is absolutely no inherent complexity to this problem.
I frequently use software specifications as a counter argument to this. Non developers can't write specifications without leaving out major key bits in the information, my point then would be that since they are not constrained by limitations of programming language but only their own expressions in written text that should not be a limiting factor.
Your example is extremely simple and could work for a new coder but once things get just slightly more complicated things get messy. I can already find exceptions in your very simple example: how exactly are user supposed to be alerted? Do all users have a mobile number so they can be texted? If not do you try email? What if they are online, do you send an im-message? Should you send to all available addresses? In which order do you prioritize message if you only send to the first available destination, email first or sms first?
This can be solved by having sensible defaults. So instead of having to specify everything, there's a baseline behavior. Most may be acceptable, some is not. Fine, then the user can change what needs to be changed.
The most important part is that the user is not spec'ing in the dark, instead they are modifying existing behavior to suit what they want.
The spec is a bit more complex than that. It's not "Friends who are in your location" but "Friends who are not usually in your location but are now" (prodigal sons?)
You cannot just give a smart person with common sense some pages of API docu and suddenly they are software architects. This takes years of experience to do. What you can do is be a code monkey and solve a very specific small problem space that an architect has assigned to you.
You are supporting cmontellas point, not negating it.
His point is that the inherent complexity of the problem is fairly trivial, and he stated it concisely.
And you are correctly pointing out that to realize the solution to the problem requires a great amount of work and expertise. Meaning, the actual programming has a great deal of additional (accidental) complexity.
Maybe some non-programmers manage to solve the problem itself. But only a tiny part of them will be able to write down what they actually did (step by step) in a precise way suiteable to tranlate it into a computer program.
There is absolutely no inherent complexity to this problem.