로우코드 개발이라는 약속은 너무나 유혹적이다. 일을 더 적게 할 수 있다면 누가 마다하겠는가? 기계가 잡일을 대신하는 동안 등을 기대고 누워 쉬는 것을 싫어할 사람이 누가 있을까? 어차피 수십년 동안 기계에게 온갖 명령을 해 온 참이다. 이제 기계는 하나 이상의 일을 해낼 줄 안다.
다행히 더 많은 기업이 아주 유명해진 문구로 잡다한 일을 해낼 방법을 찾았다고 생각한다. 바로 로우코드다. 더 멋지게 들리는 단어를 흡수할 준비가 되어 있는 기업도 있다. 바로 노코드다.
그러나 소프트웨어 스택이 복잡한 대화 상자, 방대하게 개선된 드래그 앤 드롭 인터페이스, 더욱 탄력적인 데이터베이스, 훨씬 통합된 개발 환경이 뒤섞인 무언가로 변모한 것이 현실이다. 인공지능이라고 부를 수 있는 기술 약간을 추가하면 더 복잡해진다.
로우코드와 노코드를 판매하는 업체의 시연도 한 두 가지가 아니다. 몇 번만 클릭하면 소프트웨어 스택이 알아서 돌아간다. 여기에 몇 번 더 클릭하면 로컬 LDAP와 통합되어 사무실에 있는 모든 직원이 작업물에 로그인할 수도 있다. 다행히 아직 워크플로우 일부인 인간 작업자에게는 모두 마법처럼 보일 것이다.
그러나 시연이 잘 되고 코드가 부드럽게 돌아간다고 해도 한 번 더 생각할 만한 이유는 충분하다. 반짝이는 표면 아래에 단순한 대화 상자를 클릭하는 것만으로는 해결되지 않는 문제가 있다.
로우코드 패키지를 배포하는 기업의 여러 가지 부정할 수 없는 성공 이야기와 확실해 보이는 약속에도 불구하고, 경계해야 할 이유가 있다. 보이는 것과는 다른 것들이 있다. 로우코드라는 이름의 음료를 벌컥벌컥 들이마시기 전에 생각해 보아야 할 6가지 이유를 정리했다.
자동화로 우스꽝스러워지는 인간
로우코드의 영업 전략은 컴퓨터와 자동화로 인간의 지능이 더 나아지고 똑똑해진다는 것이다. 그럴지도 모른다. 그러나 기계를 신뢰할수록 인간은 스스로 생각하지 않게 된다는 점도 있다. 알고리즘이 어떤 것이 옳다고 하면 인간은 그냥 따라간다.
무분별한 행동은 여러 가지 재앙을 초래한다. 2016년 컴퓨터 오류가 일어나고 공항 직원들이 혼란을 겪으면서 공항이 복잡해지고 많은 비행기가 지연되는 일이 있었다. 공항은 탑승객의 보안 게이트 통과 여부를 파악하지 못했다. 과거에는 시스템 장애가 발생해도 사람이 직접 비행기를 조종해 비상 착륙을 할 수 있었다. 그러나 로우코드의 유혹에 빠져 기계 의존도가 커진 상황에서 인간이 비상 사태를 제어할 수 있을까?
다수결 법칙의 함정
로우코드 솔루션은 대다수를 만족시키는 방향으로 설계되었다. 산업 특성이 조금만 달라지면 사용자 맞춤 옵션이 충분하지 않다. 결국 다수를 따라가면, 기업은 다른 회사와 비슷해진다. 중요하지 않은 문제일 수도 있지만, 독특한 워크플로우, 프로세스, 접근 방식에 의존하는 비즈니스를 지원하는 유일한 방법은 직접 코드를 만드는 것뿐이다.
불필요한 누적
사람이 코드를 작성할 때 자연스럽게 수행하는 최소한의 작업은 놀라울 정도로 효율적이다. 불필요한 기능을 구현하지 않는다. 로우코드 솔루션에는 이런 이점이 없다. 로우코드 솔루션은 컴퓨터 코드가 네트워크의 모든 우발 상황에 대응하는 끝없는 if-then-else문으로 가득 찬 라이브러리를 의미하며, 모든 것에 잘 맞도록 설계되었다.
로우코드는 항상 자가 테스트를 반복하기 때문에 자연스럽게 효율성이 낮다. 영업팀이 판매하는 마법 같은 기능은 결국 이러한 자동 조정 기능이다. 그러나 기업의 비즈니스를 잘 아는 사람이 직접 수작업으로 만든 코드보다는 훨씬 덜 효율적이다. 처음에는 이러한 추가 작업이 그렇게 나쁘지 않을 것이고, 클라우드 업체가 무료 크레딧을 대량으로 제공하기도 한다. 그러나 프로젝트가 거대해지면 결국 누군가는 모든 추가 루프에 대한 비용을 지불해야 할 것이다.
기계가 가진 편견
인공지능은 경외심을 불러 일으키지만, 얼마나 많은 편견과 부정확성을 내포하는지는 아무도 알지 못한다. 로우코드 플랫폼도 같은 문제를 안고 있다.
새롭게 나타난 문제는 아니다. 로우코드 플랫폼으로 대체되는 사람도 역시 항상 소프트웨어에 영향을 미치는 많은 편견을 지니고 있었다. 그러나 인류는 수천 년 동안 편견과 싸워 왔고, 편견 극복에 성공하기 위해 여러 시스템을 발전시켰다. 완벽하지는 않지만 인류의 실패를 이해하고 있다.
로우코드 시스템은 신문물이다. 인간은 로우코드 시스템이 어떻게 미묘한 실수를 저지르는지를 이제 막 이해하기 시작했다. 경외감을 극복하고 마법적 알고리즘에 자동적으로 의존하는 것을 멈춘다면, 로우코드 시스템 안에 숨은 편견과 싸울 방법을 찾을 수 있을 것이다.
모호한 개선 사항
소프트웨어 개발 작업 중 세미콜론과 변수 유형을 붙잡고 씨름하는 일은 얼마나 많은 비중을 차지할까? 버튼을 왼쪽으로 몇 픽셀 옮기고, 배경에 빨간색을 약간 더 추가해 달라는 타 부서 관계자의 요청과 회의에는 얼마나 많은 시간이 소요될까?
어떤 코딩은 정신적으로 힘들지만, 대부분은 기능적인 일이다. 진짜 일은 사람을 상대하는 것이다. 애플리케이션의 로우코드 버전은 라이브러리 프로시저 호출 대신, 원하는 배경색을 직접 고르는 RGB 음영 대화 상자를 넣는 경우가 많다. 매개 변수를 대화 상자에 넣는 것이 자바, 파이썬, C++ 코드를 작성하는 것보다 훨씬 쉬울까?
로우코드의 대화 상자가 시간을 절약해준다고 생각하기 쉽다. 그러나 대부분의 경우 로우코드 대화 상자는 디자인적 사고의 정신적 워크플로우에 겉포장을 씌운 것에 지나지 않는다. 멋진 로우코드 인터페이스가 프로시저 호출에 적합한 구문을 찾기 위해 여기저기 문서를 뒤지는 것보다 더 효율적일 수도 있다. 그러나 생각만큼 시간이 절약되지 않을 때도 많다.
숨은 비용
로우코드가 잘 작동하면 클릭 한 번만으로 모두가 행복해진다. 그러나 잘 작동하지 않을 때는 오직 인간 프로그래머만이 문제를 수정할 수 있다. 가끔은 로우코드 시스템이 다루지 못하는 비표준적인 것을 해야 한다는 것이 문제다. 가끔은 시스템을 무리해서 밀어붙여 결함이나 충돌이 발생하기도 한다. 어떤 경우든, 실제 코드 작성법을 아는 인간 프로그래머만이 해결책을 찾을 수 있다.
로우코드의 문제는 구문 같은 단순한 것만 해결하는 경우가 많다는 것이다. 표면 아래 보이지 않는 것에는 숨어 있는 구문과 논리를 추론할 수 있는 우수한 코더 기술이 필요하다. 로우코드 시스템도 소프트웨어이므로 바이트, 배열, 데이터 구조 등의 언어를 구사하는 사람이 필요하다는 사실을 외면할 수는 없다.
역사는 반복된다
새로운 이야기는 아니다. 1841년 기술로 인해 교통, 섬유, 전쟁, 사회의 모든 것을 바꾸는 것을 목도한 위대한 시인 에머슨은 ‘자립’이라는 에세이에서 “사회는 절대로 발전하지 않는다”라고 썼다.
한쪽에서는 발전하지만, 다른 쪽에서는 그만큼 빨리 후퇴한다. 야만적인, 문명화되는, 기독교화되는, 부유해지고 과학화되는 끊임없는 변화는 개선이 아니다. 어떤 것이 주어진다면 다른 것은 빼앗긴다. 사회는 새로운 기교를 습득하는 동시에 오래된 본능을 잃는다.
로우코드도 마찬가지다. 그렇다고 로우코드를 버리거나 로우코드로 가는 길을 포기해야 한다는 의미는 아니다. 인간은 운송이나 제조에 기술을 사용하는 것을 포기하지 않았고, 다만 현재 쓸 수 있는 솔루션이 완벽하지 않다는 점을 깨달았을 뿐이다. 기술에는 위험이 숨어 있기 마련이며, 그 중 대다수는 세심한 주의와 방대한 인간의 지능을 통해서만 해결할 수 있다.
editor@itworld.co.kr