Software engineers resisted the advance of Human Factors Engineering into the software field because it meant an interruption of their role as user interface constructors and professional change to software coders that lie on given specifications of user interface. Software engineers work with highly efficient methods for coding, but user interface designers focus more on the user convenience than the efficiency of coding. In software engineers’ perspective, they were required to put much effort and time into functions that are not so important. For this reason, interface designers and software engineers had difficulties in maintaining amicable relationships.
컴퓨터 과학의 아버지라고 불리는 앨런 튜링은 1943년 콜로서스를 만들어 독일군의 암호를 수신자보다 먼저 해독, 독일 잠수함을 공격함으로서 연합군이 2차 대전을 승리하는데 최고의 공을 세우게 된다. 애플컴퓨터의 로고인 한쪽을 베어먹은 사과가 앨런튜링이 자살할 때 먹은 사과를 상징한다는 말이 있었을 정도로 그가 컴퓨터 산업에 끼친 영향은 막대한 것이었다. 애니악보다 2년 먼저 만들어져 실질적으로 세계 최초의 컴퓨터라고 할 수 있는 콜로서스 이후 오랫동안 컴튜터는 일반인들이 접할 수 있는 기기는 아니었다.
초창기 컴퓨터는 하드웨어의 한계로 인해 컴퓨터의 용량을 염두에 두고 그에 맞추는 운영에 모든 관심이 기울여 졌다. 프로그램은 운영자들에 의해 스위치, 다이얼, 연결선들을 이용해 로딩되었으며, 하루에 50여개의 진공관이 교체되었고 그때마다 컴퓨터는 몇 분씩 다운되었다. 카트에 진공관을 싣고 다니며 고장난 진공관을 교체하는 일은 당시 최첨단의 전문직이었다. 초기 컴퓨터의 목표는 ‘수학자를 계산으로부터 자유롭게 하는 것’이었고, 이것은 후에 ‘사용자를 과업으로부터 자유롭게 하고자 하는’ 목표로 전환되었다. 소프트웨어는 기계어를 이용하여 용량을 최소화 하였고, 값비싼 컴퓨터를 매초 효율적으로 이용하기 위하여 사용자(운영자)는 컴퓨터를 위한 도구처럼 인식되었다. 1960-70년대 컴퓨터의 용량이 증대되면서 더 이상 계산능력이 문제가 되지 않게 되자 관심의 초점은 소프트웨어로 옮겨지게 된다. 프로그래머의 시대(Programer Period)라 불리는 이 시기에 효율적이고 품질 좋은 프로그래밍을 위한 소프트웨어 엔지니어링 이 탄생하였고 프로그래머는 기획, 구조설계, 인터페이스설계, 코딩 등 모든 일들을 처리하는 역할을 담당하였다. 이 시기에 GUI의 기반이 되는 기술들이 개발되었다. Sutherland의 아이콘을 이용한 디스플레이, Engelbart의 마우스, Nelson의 하이퍼텍스트 등이 대표적이다.
1970년대 후반 HCI분야의 탄생과 더불어 소프트웨어 엔지니어가 유저인터페이스 디자인을 담당하는 역할을 인간공학자 또는 유저인터페이스 디자이너에게 넘겨주기 전까지 소프트웨어 엔지니어는 인터페이스 디자인과 소프트웨어 코딩을 직접 수행하였다. 이때까지도 컴퓨터는 펀치카드를 이용한 입력과 페이퍼 프린트의 출력방식이 이용 되었으므로 일반 사용자를 염두에 둔 유저인터페이스 개념은 찾아보기 어려웠다.
GUI를 장착한 컴퓨터가 나오면서 유저인터페이스에서 그래픽을 담당하는 부분의 역할이 그래픽디자이너에게 넘어가 현재와 같은 소프트웨어, 유저인터페이스, 그래픽 부분으로 분화되게 된다. 1990년대 이후 소프트웨어 선택의 중요성에서 유저인터페이스의 사용 편의성이 가장 중요한 요소로 등장하였고, 현재 코딩되는 소프트웨어는 절반이상이 인터페이스 단계의 내용을 담당하고 있어 소프트웨어에서 유저인터페이스가 차지하는 비중이 가장 커지게 되었다. 컴퓨터 사이언스의 발전을 통해 일반인들이 컴퓨터를 접하게 되는 환경이 만들어지면서 탄생한 Human Computer Interaction(HCI)는 다음과 같이 정의되고 있다. ‘HCI는 인간이 사용하기에 적합한 인터랙티브 컴퓨터 시스템을 설계-평가-구현하는 과정과 이를 둘러싼 주요 현상들에 대해 연구하는 학문이다’(ACM/SIGCHI, 1992). 컴퓨터를 위한 도구적 역할을 하는 인간에서 컴퓨터라는 기계 (SW/HW)는 인간의 입장에 맞추어져야 한다 개념으로 발전하게 되면서 HCI의 기본 개념이 만들어지게 되고 이는 인간공학이 지향하는 인간에게 맞춰지는 제품, 시스템의 개념과 일치한다. HCI는 학습, 사용의 용이성 등 기능적 요소 뿐만 아니라 안전성, 프라이버시 등 가치적 요소까지를 포괄하고 있으며, 제품의 인터페이스 뿐만 아니라 인간의 인지, 인체적 특성이나 시스템의 제한점, 사회 환경 등의 심층적이고 거시적인 분야까지를 다룬다. HCI는 최종결과물인 인터페이스/인터랙션과 그 이면의 인간 및 사회 환경에 관한 이해를 포괄하고 있다.
컴퓨터 하드웨어 용량의 발전과 정부 사업에서 컴퓨터의 활용은 컴퓨터가 연구소에서 나와 사회에서 활용되는 시대를 맞게된다. 전문가가 아닌 일반인들이 컴퓨터를 접하는 시기가 됨에 따라 일반인들이 사용하기 쉬운 컴퓨터 환경에 대한 요구가 높아지게 된다. 1970년대 중반 미국 정부에 의해 농업 및 사회보장 목적으로 개발된 대규모 정보 처리 시스템에서 스타일가이드, 사용성 랩, 프로토타이핑, 작업분석 등의 방법론이 개발되었으며, 1980년에는 VDT스크린 디자인 및 일반 가이드라인에 대한 저 서가 발간되었고, 1981년 컴퓨터 환경에 대한 ANSI (미국 표준)기준을 만들기 위한 그룹이 구성되었다.
1980년대 이후 인터페이스 환경에서 그래픽의 등장은 직접조작에 의한 직관적 인터페이스의 제공, 심미성 및 컴퓨터가 일반 사용자들도 접근할 수 있는 도구라는 인식의 전환을 가져왔다. 인간공학의 소프트웨어 분야 진출은 소프트웨어 엔지니어에게는 유저인터페이스 구성 역할의 중단과 더불어 주어진 유저인터페이스 스펙에 의한 소프트웨어 코딩자로의 전환을 의미하므로 소프트웨어 엔지니어로부터 저항을 불러왔다. 한편, 소프트웨어 엔지니어는 코딩에 필요한 가장 효율적인 방법으로 일을 하게 되지만 유저인터페이스를 담당하는 입장에서는 코딩의 효율성보다는 사용자의 편의성에 초점을 맞추게 되므로, 소프트웨어 엔지니어의 입장에서 볼 때 그들의 시각에서 그리 중요하지 않은 기능을 위해 많은 시간과 에너지를 요구받는 상황에 처하게 되는 것을 의미하므로 인터페이스 디자이너와 소프트웨어 엔지니어는 우호적인 관계를 유지하기 쉽지 않은 속성을 내재하고 있는 셈이다. 현재 만들어지고 있는 소프트웨어에서 유저인터페이스 부분이 용량이나 에너지면에서 절반 이상을 차지하고 있고 그 비중이 계속 늘어나고 있으니, 소프트웨어 엔지니어들은 원래 그 소프트웨어가 목표로 하는 기능보다 유저인터페이스에 더욱 더 많은 수고를 기울일 것을 요구받는 입장이지만 사용자들은 컴퓨터 환경에서 HCI가 지향하는 취지에 점점 더 적합한 환경을 제공받고 있는 셈이다.