목차

산업경영공학부 회고: 산업공학이 뭔가요?

시리즈 - 전공 알아보기

산업공학과에 다니면서 자의든 타의든 고민하는 가장 큰 주제는 바로 “산업공학이 그래서 뭐 하는 거야?”이다. 산업공학과 학생은 물론이고, 산업공학이라는 단어를 처음 듣는 사람도 이 질문을 던진다. 지금도 한 마디로 설명하는 건 어렵고, 스스로 깨닫는 데도 입학 후 수년이 걸렸다. 산업경영공학부 학부 졸업을 기념하여 지금까지 산업공학을 배우며 느낀 바를 요약한다. 오직 내 개인 경험에 기반한 주관적 내용이므로 재미있게 읽어주길 바란다.

산업공학은 한 마디로 시스템을 분석하고 최적화하는 학문이다. 아직 모호하니 키워드 단위로 쪼개보자.

시스템의 사전적 정의는 “하나 이상의 목적 달성을 위하여 유기적으로 연결된 여러 컴포넌트의 집합체”이다. 추상적이지만 도저히 더 줄일 수 없다. 처음에는 전쟁의 군수 문제를 해결하기 위해 연구가 시작되었다고 들었다. 그러나 민간 산업으로 넘어오고, 복잡한 세계에 발맞춰 대상이 다양해져서 이제는 단번에 표현하기 어렵다. 실제로 학과 내에서도 서로 관련 없어 보이는 여러 시스템을 두루 배운다. 산업공학에서 전형적으로 다루는 시스템은 제조, 물류, 품질 관리, 서비스 등이다.

시스템 분석은 현실의 복잡한 시스템을 약속된 형식으로 요약하는 일, 즉 모델링이다. 시스템을 편리하게 이해하고, 개발된 최적화 도구를 바로 적용하는 데 필요하다. 그렇다면 최적화는 무엇일까? 제약된 자원 아래에서 최선의 대안을 찾는 것이다. 주어진 분석 결과에서 가장 바람직한 성능이 나오는 결정을 찾는 절차(알고리즘)를 이른다. 제약 조건과 목표 성능의 정의는 시스템에 달려 있다. 시스템이 다양한 만큼 이를 분석하고 최적화하는 방법도 여러 갈래로 나뉜다.

아래 그림은 현실 문제를 수리적 모델로 형식화하고 그 해를 구해 현실에 적용하는 산업공학의 핵심 방법론 중 하나인 Operations Research (OR)의 문제 해결 과정을 통해, 산업공학의 요소들이 어떻게 연결되는지 보여준다.

전공과목에서는 대부분의 시스템에 통용되는 분석 및 최적화 도구를 익히고, 산업공학에서 주로 다루는 시스템에 그 도구가 적용되는 양상을 배운다. 산업공학의 핵심 도구는 수리적 최적화, 통계, 시뮬레이션이다. 어느 시스템을 만나더라도 자유자재로 꺼낼 수 있어야 한다. 전공과목 간 관계를 통해 도구와 시스템 도메인이 결합하는 양상을 살펴보자.

  • 물류최적화에서는 OR-1에서 배운 Mixed-Integer Programming (MIP) 모델링 방법을 가지고 입지 선정 문제를 수식화한다. 이어 MIP solver를 실행하여 자원 제약을 지키면서 최적 목적 함숫값(최대 생산량 혹은 최저 비용)을 달성하는 입지를 채택한다.
  • 품질공학에서는 수리통계에서 익힌 확률 분포를 통해 품질 데이터의 변동을 모델링하고, 응용통계의 가설 검정과 신뢰구간 원리를 토대로 한 관리도(Control Chart)를 운용한다. 이를 통해 공정의 이상 징후를 포착함으로써, 최적의 설비 점검 시점을 결정하는 통계적 의사결정을 내린다.
  • 생산계획에서 생산량과 일정을 결정하는 데 필요한 기간별 수요량을 예측할 때는 예측애널리틱스에서 배운 시계열 분석 기법이나 다변량 분석에서 배운 AI 기반 회귀 분석 기법이 활용된다.

반면 이 흐름과 무관해 보이는 시스템도 있는데, 산업공학의 범주에 들어가는 이유는 다음과 같다.

  • 인간공학은 학과 내에서 뼈 이름 외운다고 악명이 높았고, 나도 첫 수업 OT 들어가기 전까지 이걸 왜 배우는지 몰랐다. 전공필수라 신청해 놓고도 이게 왜 산업공학인지 의문스러웠다. 하지만 인간도 현실 시스템에 포함되며, 인간과 시스템 간 상호작용을 평가(Evaluation)하고 설계(Design)를 통해 성능(Performance)을 최적화하는 게 학문의 목표라는 교수님의 설명에 이해하게 되었다.

  • 정보시스템설계도 그냥 SQL 배우는 과목 아니냐고 물을 수 있다. 물론 Entity-Relationship Diagram (ERD), Relational Database (RDB) 같은 정보시스템에 특화된 분석 이론 자체도 중요하다. 하지만 컴퓨터학과 데이터베이스 수업과 달리 산업공학 전공답게 프로세스 분석 기법과 프로젝트 관리까지 두루 다루면서 현실 시스템과의 연결고리를 강화하고, 데이터베이스가 시스템을 묘사하는 수단이라는 배경을 보여준다.

이처럼 시대에 따라 변화무쌍한 산업을 쫓아 새로운 시스템을 분석하고 최적화해 보려는 유연한 자세가 산업공학의 묘미이다.

산업공학이 무엇인지 정리했으니, 이번에는 산업공학이 나에게 어떤 영향을 끼쳤는지 돌아본다.

전공을 듣다 보면 자연스럽게 다양한 시스템을 접하게 된다. 이는 배경지식을 쌓고 시스템을 넓게 바라보는 시야를 길러줄 뿐만 아니라, 진로 결정의 씨앗이 되기도 한다. 시작이 반이라고, 깊지 않더라도 여러 분야에서 첫발을 내딛게 해주는 것이 진로 고민의 폭을 넓혀준다. 내 경우엔 우연히 들은 전공 수업이 백엔드 개발자를 시작하는 계기가 되었고, 거기서 이어진 나비효과가 프로그래밍 언어 연구자를 꿈꾸는 데까지 닿았다.

2학년을 마치고 산업기능요원 복무를 위해 구직 사이트를 둘러보았다. 산업기능요원은 TO가 있는 회사에 취직한 후 복무를 시작하는 방식이라 우선 취직이 되어야 했는데, 막상 보니 내 역량이 자격 요건에 한참 미달하여 좌절이 컸다. 당시엔 미적분학, 통계, 선형대수, 자료구조, 알고리즘 같은 기초를 막 뗀 상태였기 때문이다. 2학년 1학기 정보시스템설계 수업에서 다룬 MySQL이 그때 내가 채용 공고에서 아는 유일한 용어였다. 웹 개발이나 백엔드가 뭔지도 몰랐지만, 자격 요건 하나 갖췄다는 이유만으로 백엔드 개발자를 해보기로 정했다. 만약 정보시스템설계가 전공 필수가 아니었다면, 그리고 원래 들으려던 다른 과목 수강 신청에서 미끄러지지 않았더라면 그 기회는 없었을 것이다. 복학 후에는 2년간의 백엔드 개발자 경험을 발판으로 프로그래밍 언어 수업을 들었고, 그것이 지금의 진로로 이어졌다. 개발자 이후 자세한 전개는 대학원 가기로 정한 계기에 담았다.

흔히 산업공학과에서는 넓고 얕게 배운다고 하는데, 맞는 말이다. 그래서 제네럴리스트이면서 한 분야에 전문 지식이 있어야겠다는 생각을 1학년 때부터 품었다. 이수체계도의 갈래 중 유일하게 경험이 있던 컴퓨터를 골라 이중전공을 마음먹었다. 비록 지금은 일반적인 산업공학의 범위에서 벗어나 컴퓨터 과학자에 가깝지만, 산업공학에서 두루 쌓은 지식이 개발자나 연구자로서 차별점을 더해준다. 입학 초에 원했던 T자형 인재의 구색은 갖춘 셈이다.

수업 이수 측면에서 두 전공의 시너지가 좋았다. 학과 간 내용이 겹치는 수업이 많아서, 학점을 아끼면서도 각 전공을 충분히 배울 수 있었다. 산업경영공학부에서 미적분학, 통계, 선형대수, 수리적 최적화를 필수로 듣기 때문에 컴퓨터학과의 확률및랜덤과정이나 공업수학을 따로 들을 필요가 없었다. 반대로 자료구조와알고리즘, 데이터마이닝은 컴퓨터학과에서 이미 커버하기 때문에 해당 학점을 산업공학에 특화된 다른 과목에 투자할 수 있었다. 또한 컴퓨터학과에서 대놓고 가르쳐 주지 않는 Python 심화나 객체지향 프로그래밍은 산업경영공학부의 실습 과목에서 배워 구현 역량을 키우기도 했다.

나는 산업공학이 좋아서 입학했고, 컴퓨터학과 대학원에 가기로 마음먹고 나서도 산업공학도라는 정체성을 놓지 않았다. 4학년 1학기 어느 날 동기가 내게 그랬다. “형이 뭔 산업공학자야.” 객관적으로 맞는 말이다. 애초에 산업공학과 대학원도 아니고, 컴퓨터 과학에서도 AI 응용이 아닌 전통적인 CS니까. 거대한 산업 현장보다는 좁은 범위의, 말 그대로 프로그램의 이론적인 의미론과 씨름하는 건 아무래도 산업공학과 거리가 멀어 보인다.

한편, 나는 소프트웨어를 나만의 시스템으로 인식하고 있다. 소프트웨어는 프로그래밍 언어라는 도구로 기술되고, 컴파일러를 통해 상호 변환되며, 프로그램 분석을 통해 원하는 성질을 조사한다. 그중에서 Python 생태계라는 특정 종류의 소프트웨어를 집중적으로 연구하고 싶다. 물론 산업공학에서 배우는 방법론을 그대로 적용할 수는 없지만, 시스템을 분석하고 최적화하겠다는 목표는 여전히 공유하기에 산업공학도로서 자부심을 가진다.

관련 글