Program Design: a Human-Centered Approach