Still, some engineers fail to recognize that software serves humans, often in many varying situations, organizations, locales and cultures, and therefore is a much more complex and difficult challenge than building a simple bridge (one locale, simple, clear purpose and very few use cases").