I like to think of it as a sieve. The first, coarser filter is: "will this functionally work?" The second, finer filter is, "is this socially acceptable?"
An interesting problem is which filter apply first. On one hand, you don't want to waste time discussing if it is socially acceptable (such discussions tend to be long and nonconclusive) for things which we are not sure if they would work. On the other hand, you don't want to waste time discussing if it would work if the solution is clearly wrong from ethical point of view.