altair의 프로젝트 일기
은 탄환은 없다(No Silver Bullet)에 대한 생각 본문
개요
<No Silver Bullet -Essence and Accident in Software Engineering>은 튜링상 수상자 프레드릭 브룩스가 쓴 에세이다. 개강한 기념으로 오랜만에 도서관에서 책을 빌렸다. 프로그래밍 공학 분야의 유명한 고전 <맨먼스 미신>을 빌렸는데, <은 탄환은 없다>가 그 안에 수록되어 있었다. 책 전체 내용도 매우 흥미로웠지만, 먼저 <은 탄환은 없다>에 대해 생각해본 바를 적고자 한다.
은 탄환
저자는 늑대인간과 늑대인간을 죽일 수 있는 수단인 은 탄환을 이야기한다. 늑대인간이 무서운 이유는 평소에 사람이라고 생각했었던 존재가 밤이 되면 무시무시한 괴물이 되어 날 공격할 것이라는 두려움 때문이다. 그렇기 때문에 우린 은 탄환을 간절히 원한다. 그것만 내 손에 있다면 늑대인간을 무서워할 이유가 없기 때문이다.
소프트웨어 공학에도 늑대인간이 숨어있다. 많은 프로젝트가 팀 단위에서 개발된다(이 부분의 효용성을 저자는 의심하지만 그건 책의 다른 부분이니 넘어가자). 그리고 동시에 많은 프로젝트가 일정 때문에, 잘못된 설계와 요구사항 분석 때문에, 너무 오래되거나 너무 새로운 기술 사용 때문에 실패한다. 실패한 소프트웨어 프로젝트의 이유는 정말 많다. 저자는 이렇게 소프트웨어 공학 전반에 지뢰처럼 숨어 터지길 기다리는 위험을 늑대인간으로 비유한다.
소프트웨어 공학의 은 탄환
컴퓨터 공학 분야 종사자들은 지수적인 기술 발전을 눈 앞에서 직면한 탓인지 모르겠지만, 앞서 설명한 공학의 실패 가능성을 한 번에 해결할 마법의 "은 탄환"을 간절히 원한다. 하드웨어 분야의 역사를 보면 이런 경향은 오히려 당연할지도 모른다. 대표적인 초기 컴퓨터 에니악은 30톤의 무게에 150kW의 전력을 소비해 초당 5000번의 계산을 수행했지만, 현대 데스크탑 컴퓨터는 100에서 200W의 전력을 사용해 초당 3.3억번의 계산(3.3GHz)를 할 수 있다. 단순한 계산으로 전력 사용량은 750배 줄어들었고, 처리 속도는 66만배 증가했다. 저자가 말했듯이, 인류 역사 상 이렇게 기하급수적으로 발전한 기술은 존재하지 않았다.
너무나 발전해 이제는 마법과 구별할 수 없게 되어버린 하드웨어처럼, 소프트웨어도 발전했을까? 저자는 그렇지 않다고 주장한다. 사실 지금 와서 생각해봐도 크게 달라진 점은 보이지 않는다. 고수준 언어가 쏟아져 나왔고, 객체지향 프로그래밍이니 에자일이니 말은 많지만 여전히 우린 책상에 앉아 키보드를 두드린다. 발견하지 못한 메모리 누수는 엔드 유저를 괴롭히고, 누더기처럼 기워 이젠 원래 형체를 알아볼 수도 없게 복잡해져버린 프로그램은 유지보수를 포기하게 만든다. 개발 막바지에 새로 주어지는 요구사항은 절망적이고, 도식화하기 어려운 소프트웨어의 구조는 본인의 머릿속을 넘어 상대방이 이해하지도 못하게 만든다.
눈부신 하드웨어의 발전에 부끄럽게도 소프트웨어 공학의 이런 어려움은 초기 컴퓨터 시대와 비교했을 때 그렇게 바뀌지 않았다. 그때보다 더 복잡하고 어려운 과업을 수행해야 하는 점은 맞지만 그걸 고려해도 마법과 같은 해결책이 보이지 않는 것은 부정할 수 없다. 수백명의 수학자, 암호해독가, 계산원이 달려들어 분석했던 에니그마를 지금 와서는 임베디드 컴퓨터가 단 몇 십줄의 스크립트 만으로 해독할 수 있는 것은 놀랍기 그지 없지만, 그때나 지금이나 개발자들을 엿먹이는 위험은 그대로 존재한다.
그렇다면 은 탄환은 없는가? 저자는 이전에도 없었고 앞으로도 없을 것이라고 단언한다. 항상 그렇지만 진실은 시간이 흘러야 밝혀질테다.
구리 탄환
총알은 보통 구리를 씌운 납으로 만든다. 이를 풀 메탈 자켓이라고 부르며 동명의 유명한 영화도 있다. 마법의 은 탄환이 없다면 그 대신 우리의 구리 총알이라도 퍼부어야 한다. 저자는 글에서 구리 탄환이 될 후보들을 나열하고 있다. 놀랍게도 인공지능도 그 안에 들어가 있다. 먼저 저자가 예견한 인공지능과 그 여파를 설명하겠다.
저자는 인공지능이 완전한 은 탄환이 되지는 못하지만, 프로그래머를 보조하는 입장에서 굉장히 효율적인 도구가 될 것이라 주장한다. 가장 뛰어난 프로그래머들이 가진 통찰력을 인공지능이 제공해줌으로써 서툰 프로그래머도 더 나은 생산성을 확보할 수 있다고 말이다. 다른 어떤 분야보다 큰 차이를 보이는 프로그래머들의 경험과 지혜를 인공지능의 지원으로 높이 끌어올릴 수 있다면 그것이 얼마나 큰 발전이겠는가?
새로운 인공지능
ChatGPT를 필두로 OpenAI의 GPT3, 3.5, 4가 차례대로 발표되었다. OpenAI의 가장 큰 투자자인 마이크로소프트는 이를 사용해 코드 생성 인공지능 Copilot을 출시했다. 검색엔진 Bing에도 GPT-4를 넣어 인공지능이 사용자 대신 검색해주는 New Bing을 선보였다. 그리고 심지어 Office 365의 제품들에도 이 인공지능을 적용해 사용자가 단 몇 줄로 요청사항을 적으면 알아서 워드 파일, 파워포인트, 엑셀 데이터 분석과 시각화까지 모두 해주는 Copilot을 시연했다.
과연 인공지능은 소프트웨어 공학의 은 탄환이 될 수 있을까? 적어도 구리 탄환 정도는 될 수 있을까?
결론
나는 인공지능이 우리 시대의 새로운 구리 탄환이라고 생각한다. 소프트웨어의 복잡도는 본질적으로 인간이 이해하기 어렵고 천재적인 시니어 개발자의 놀라운 직관은 그것을 가지지 못한 사람에 비해 엄청나게 큰 생산성 격차를 가져온다. 이 두 부분에서 인공지능이 돌파구를 마련해줄 것으로 보인다.
먼저 첫 번째 경우를 생각해보자. 대중적으로 사용되는 알고리즘이라고 해도 그 절차적 특성과 분기는 인간의 사고 흐름과 놀랍도록 동떨어져 있다. 예를 들어 퀵 정렬 알고리즘을 생각해보자. 일상적으로 퀵 정렬을 사용하던 사람도 퀵 정렬의 자세한 흐름을 바로 떠올리기 힘들 수 있다. 만약 쉽게 떠올리고 설명할 수 있다고 해도 그것이 코드와 상당히 다른 모습이고 종종 치명적인 디테일을(예를 들어 조건문에서 > 와 >=의 선택) 놓치고는 한다. 여태까지 우리는 이런 인간의 약점을 라이브러리라는 재사용 가능한 코드 뭉치로 해결했다. 잘 작동한다고 검증된 도구를 계속 사용하는 것처럼 말이다.
인공지능은 알고리즘을 비롯한 관념들의 구현을 대신 해줄 수 있다. 물론 인공지능도 올바르지 않은 코드를 제출할 수 있지만, 노련한 개발자 입장에서는 처음부터 모두 작성하고 디버깅하는 것보다 인공지능이 짜준 코드의 무결성을 검증하는 것이 더 쉽지 않겠는가? 때로는 노동집약적인 이 과정을 인공지능이 대신 해줄 수 있을지도 모른다.
두 번째 경우는 특히 중요하다. 저자는 책에서 노련한 개발자가 그렇지 않은 개발자보다 10배의 생산성을 보여준다고 주장한다. 그렇다면 그 둘의 차이는 무엇일까? 많은 것들이 있겠지만 그 중에 하나가 바로 직관이다. 수 많은 경험에서 비롯한 놀라운 직관을 가진 개발자는 다른 개발자들이 생각하지도 못한 곳에서 돌파구를 찾아낼 수 있다. 그 뿐만 아니라 위험한 코드를 더 쉽게 찾아내고 더 효율적인 방법을 생각해낸다.
지금까지는 직관이라는 능력이 경험과 재능의 영역이었다면, 앞으로 인공지능이 그 능력을 대신 제공해줄 수 있을 것이다. 우리의 예상과 전혀 달리, 여러 예시에서 직관은 인공지능이 따라하기 제일 쉬운 능력이라는 사실이 밝혀졌다. 학습된 데이터에서 도출된 출력이 바로 우리가 말하는 직관과 그렇게도 유사했던 것이다. 인공지능은 노련한 개발자의 직관을 더 많은 개발자들에게 제공할 것이다. 미처 생각지도 못했던 부분을 인공지능이 짚어줄 것이다. 습관적으로 작성했던 불안정한 코드의 위치와 이유를 말해줄 것이고, 하이젠버그를 쉽게 찾아내줄 것이다. 클래스 다이어그램에서 잊어버리고 그리지 않은 클래스들을 대신 그려줄 것이다. 다르게 말하자면 마이크로소프트의 말 그대로 노련한 부조종사가 항상 옆에서 날 지켜본다고 생각하면 편하다.
인공지능이 은 탄환, 또는 구리 탄환이라고 벌써부터 선언할 수는 없다. 하지만 그 시작부터 이렇게 엄청난 충격을 사회에 안겨준 걸 보면, 적어도 소프트웨어 공학 분야에서는 인공지능을 시리 같은 비서 정도로 치부하기엔 너무나 유능하다. 우리를 구원할 은 탄환이 될지, 아니면 모두의 일자리를 빼앗아버리는 새로운 늑대 인간이 될지는 모르겠지만 분명한 것은 이 충격이 메타버스와 같은 허풍은 아닐 테다.
'IT > 책' 카테고리의 다른 글
Operating Systems: Three Easy Pieces 리뷰 (1) | 2023.03.15 |
---|