4장 제약 조건

2023.12.18

4.1 제약 기반 사고

  • 창의성을 발휘하는 데 있어 제약은 가장 중요한 요소이다.
  • 후대의 예술가들은 차분한 색상 팔레트를 고수하거나, 직사각형만 그리거나, 물감을 전혀 사용하지 않는 등 스스로 제약을 부여하는 방식을 자주 사용한다. 음악가와 사진작가도 종종 동일한 제약 기법을 사용하여 진정으로 독특한 예술 작품을 만든다.
  • 반면에 제약은 '강요된 것일 수도 있는데, 이런 경우에는 주어진 것을 가지고 작업하거나 그 제약에서 벗어날 방법을 찾아야 한다.
  • 제약이 없으면 창의성도 없다. 제약은 집단 창의성과 마찬가지로 창의적으로 문제를 해결하려고 할 때 고려해야 할 여러 가지 중요한 요소 중 하나이다.

4.1.1 그린필드 또는 브라운필드

  • 제약은 창의성을 크게 높여준다. 제약 조건은 나쁜 것으로 널리 알려져 있기 때문에 제약으로 인해 창의성이 오히려 향상한다는 것은 우리의 직관과는 맞지 않는 것처럼 보일지도 모른다.
  • 그린필드(greenfield)라고 불리는 프로젝트에서 일하는 것은 분명히 재미있고 창의적일 수 있다. 멋진 신기술을 선택할 수 있고, 개발 작업과 배포 파이프라인에 사실상 제약이 없다. 무엇보다도 중요하다는 이유로 들어내지도 못한 채 가지고 있어야만 하는, 오래전에 작성된 썩은 코드를 기반으로 작업해야 하는 불편함이 없다.
  • 반면에 이렇게 깨끗한 백지상태에서 시작할 수 없는 브라운필드(brownfield) 프로젝트는 처리해야 하는 제약 덕분에 더 창의적인 행동을 유발할 가능성이 높다.

4.1.2 제약의 종류

  • 부수적incidental) 제약 : 당사자가 의도적으로 선택하진 않았음에도 불구하고 여하간의 이점을 제공하는 제약 조건
  • 본질적(esential) 제약 : 어떤 창의적인 이익을 위해 스스로 부과하는 제약
  • 이 제약 조건들은 하드(물질적, 기술적, 재정적) 제약소프트(관습) 제약으로 다시 구분할 수 있다.

4.2 내재적 제약 조건

  • 가장 분명한 제약 조건인 내재적 제약 조건은 특정 작업이 속해 있는 문제의 속성에 내재되어 있다. 캔버스에 그림을 그리는 화가의 경우 캔버스의 물리적 재질과 물감이 내재적 제약 조건이다. 프로그래머라면 자바스크립트든 어셈블리 계열의 언어든 상관없이 코드로 작업해야 하지만 원리는 동일하게 유지된다.
  • 내재적 제약은 부수적 제약으로 간주되며, 단순히 존재한다는 이유만으로 우리는 그 제약과 함께 작업해야 한다.

4.2.1 하드웨어 제약 조건

  • <둠> 팀은 값비싼 NeXT 하드웨어에 투자함으로써 당시 일반적인 IBM PC 하드웨어에 얽매인 내재적인 제약을 벗어나고자 했다. 물론 쿼드 코어 CPU는 아직 발명되지 않았고, NeXT 마더보드는 기가바이트의 DDR RAM 슬롯이 제공되지 않는 등 여전히 본질적인 제약은 어떤 형태로 있었다. 컴퓨팅이라는 놀라운 세계에서 이러한 제약 조건은 끊임없이 개선되지만 완전히 사라지기는 어렵다.
  • 당대의 하드웨어의 단점을 수용한 게임 스튜디오도 있다. 루카스아츠의 <원숭이 섬> 시리즈는 픽셀화된 아트 스타일이 특징인데, 이는 개발 팀이 차분한 컬러 팔레트로 작업하기로 했기 때문이 아니라 하드웨어의 한계 때문이었다.

4.2.2 소프트웨어 제약 조건

  • 소프트웨어를 작성하려면 키보드와 같은 주변기기를 사용하여 기호를 입력하고 컴파일(또는 인터프리트)을 위한 명령을 실행하는 등 소프트웨어 개발 생태계의 본질적인 범위 내에서 작업해야 한다. 캔버스에 코드를 그린다고 해서 마술처럼 이것이 컴파일되고 실행될 것이라고 기대하지 않는다.

4.3 부과적 제약 조건

  • 내재적 제약은 작업하기로 선택한 자료에 내재되어 있는 제약이지만, 부과적 제약은 이해당사자로부터 발생하는 제약이다.
  • 본질적으로 이러한 제약 조건은 동일하지만, 이번에는 내가 자료를 선택하는 것이 아니라 다른 사람이 선택한다는 점이 다르다. 고객은 다음 주 화요일까지 문제를 해결하기를 원하며 그 이후에는 (PHP를 사용하는) 유지보수 팀이 인수인계해야 하므로 PHP로 처리해야 한다. 예산, 시간, 효율성, 관련성 등 여러분이 어려움을 겪는 대부분의 전형적인 프로젝트에서 경험한 제약 조건이 이 범주에 속한다.
  • 내재적 제약과 부과적 제약의 차이는 미미해 보인다. 어느 쪽이든 제약은 여전히 부과된 것이며 자유롭게 선택할 수 있는 것이 아니기 때문이다. 하지만 내재적 제약의 경우는 거의 아무도 불평하지 않는다.
  • 부과적 제약 조건에 대한 부정적 관점을 좀 더 긍정적으로 바꾸도록 노력해보기를 바란다. 리소스가 제한되어 있고, 아이디어가 쉽게 거부되고, 따라서 창의성이 억압된다는 생각 대신, 제한된 리소스로도 작업할 수 있고 아이디어는 어쩌면 좀 더 숙고해야 할 필요가 있으며, 창의성은 당연한 것을 넘어선다는 생각으로 전환해 보자.

4.4 스스로 부과한 제약 조건

  • 제약 기반 사고가 창의성을 촉발하는 흥미로운 방법이지만, 창의성 및 디자인 연구자들은 내재적 제약과 부과적 제약을 여전히 부수적인 제약 조건으로 간주한다. 반면, 창의적 프로세스의 제약 전문 연구자인 마이클 모세 비스크야르는 욘 엘스터의 유익한 제약 분류법을 발전시켰는데, 그에 따르면 스스로 부과한 제약은 본질적인 제약 조건으로 볼 수 있다.
  • 이러한 유형의 제약 조건은 창의력을 높이고 독창적인 작품을 발명하는 등 기대되는 이익을 위해 의도적이고 자발적으로 부과된다.
  • 비스크에 따르면, 스스로를 구속하는 행위는 크게 두 가지 범주 중 하나에 속한다.
    • 생산성을 높이는 것
    • 창의적인 프로세스 자체에 영향을 미치고 변화시키는 것
  • 특히 후자의 경우 창의적인 행동을 위한 새로운 기회를 열어주는 수단이며 궁극적으로 더 독창적인 결과물을 만들어 낼 수 있다. 예를 들어, 시각화를 위해 64KB의 코드만 작성하도록 제한하는 것은 우리가 훨씬 더 창의적이어야 한다는 것을 의미한다.

한계가 창의적인 설루션의 길잡이가 되게 하라

  • 서비스형 소프트웨어 회사인 베이스캠프(Basecamp)는 제약의 유용한 효과를 잘 알고 있다. 그래서 대부분의 주요 제품 작업에 6주라는 불가능해 보이는 예산을 적극적으로 부과할 정도로 제약을 부과한다. 이 회사는 더 많은 소프트웨어를 작성하여 경쟁사보다 뛰어난 성능을 발휘하는 대신, 더 적은 분량의 코드와 더 적은 수의 기능과 설정을 추가하기로 결정했다. 스스로 정한 예산과 비즈니스 제약은 좋은 성과를 거두었다. 시장 점유율은 높지 않지만, 현재 베이스캠프는 높은 수익을 올리는 회사로 성장했으며, 소프트웨어 개발에 대한 색다 른 접근 방식이 이제는 관행이 될 정도로 유명해졌다.
  • 반쪽짜리 제품을 만드세요. 경쟁사보다 적게 개발하세요. 회의는 거부하세요. 잠은 충분히 자야 한다. 천천히 성장해도 좋고 전혀 성장하지 않아도 된다.
  • 베이스캠프는 제약 조건의 이점을 염두에 두면 제한된 예산과 상대적으로 작은 규모의 개발 팀으로도 제품을 훨씬 더 빨리 출시할 수 있다는 사실을 증명했다. 이러한 정략을 ‘마감일이 아닌 예산에 맞춘 소프트웨어 출시'라고 부른다. 베이스캠프의 공동 설립자인 데이비드 하이네마이어 한손은 아래와 같이 말한다.

    제약 조건은 때때로 어려움을 주기도 하지만, 바로 그때 제대로 작동하고 있는지를 알 수 있다.

제한된 프로그래밍 언어

  • 기술적 제약은 하드웨어 요구사항에만 국한되지 않고 프로그래밍 언어에도 쉽게 적용될 수 있다. 대표적인 예로 C와 유사한 정적 타입의 컴파일 언어인 고(Go)를 들 수 있는데, 메모리 안전성, 가비지 컬렉션, 구조적 타입 등의 장점이 추가되었다. 고의 공동 설계자 중 한 명인 롭 파이크(Rob Pike)에 따르면 고는 언어 사양의 공간을 '프로그래머의 머릿속에 모든 것을 담을 수 있을 만큼만' 작게 유지하도록 설계되었다. 롭과 고 팀은 언어 설계 관점에서 바라본 통 찰을 많이 공유합니다(https://go.dev/blog).
  • 머릿속에 담을 만큼만 언어 사양을 작게 유지한다는 말은 다른 언어에 있는 익숙한 개념이 없다는 것을 의미한니다. 예를 들어 함수형 map(), filter(), reduce() 유틸리티가 없기 때문에 간단한 for {} 루프를 사용해야 합니다. 루프를 구성하는 유일한 방법은 for {} 루프이고 while {} 이나 do {}도 없다. 지루하지만 동시에 자유롭다!
  • 고 애호가들은 고와 같은 단순한 언어가 가독성이 뛰어나 커뮤니케이션 불일치, 코드 검토 불일치를 줄이고 궁극적으로는 프로젝트 비용을 크게 줄인다는 사실을 증명했다.
  • 고의 제약 조건 때문에 지루하다고 여겨질 수 있지만, 오히려 그것이 새로운 흥미를 불러일으키고 창의성을 자극하기도 한다.

크랙 인트로와 데모 장면

  • 일본적인 코딩 대회에서는 인트로 바이너리가 최대 64KB, 때로는 4KB를 넘으면 안 된다. 이러한 위업을 달성하려면 많은 창의적인 노력이 필요하다.
  • 데모씬에서는 스스로 만든 엄격한 제약이 독창적인 시각화와 칩튠 음악을 위한 길을 열어주는데, 이러한 것들은 그러햔 제약을 준수하지 않으면 결코 빛을 보지 못할 것어ㅣ다.

4.5 스위트 스폿 찾기

  • 제약 조건은 창의성을 위한 비옥한 토양이다. 채소밭에 비료를 너무 많이 주면 식물 뿌리가 타버리고, 너무 적제대로 자라지 못한다. 제약 조건도 마찬가지이다. 마이클 모세 비스크야르 감독은 이러한 최적 조건을 스위트 스폿(sweet spot)이라고 부른다.
  • 의도적으로 스위트 스폿에 도달하고 x 팩터를 높이려면 스스로 부과한 제약을 유도해야 한다.
  • 제약 압력을 완화하고 x를 줄이려면 일시적으로 제약을 제거하거나 무시하는 등의 방법으로 제약을 줄이면 되는데, 균형이 중요하다.
  • 팀 기반의 스위트 스폿 값은 개인의 균형점에 근접하지 않거나 개인의 한계를 초과할 수도 있다. 프로젝트 제약 조건을 잘 파악하고 공유할 수 있는 스위트 스폿은 커뮤니케이션 개념의 중요성을 다시금 환기시켜 준다.

4.6 실제 제약 조건으로 작업하기

발산적 사고

  • 창의성 연구가 학문의 새로운 분야였던 70년대에 연구자들은 제약을 극복하는 유일한 방법이 틀에서 벗어난 사고를 하는 것이라고 생각했다.
  • 그 당시 연구원이었던 폴 토런스는 창의적 사고에 대한 토런스 테스트Torrance Test of Creative Thinking (TTCT)를 개발했다. TTCT 테스트의 높은 점수는 높은 창의적 잠재력을 나타내는 훌륭한 지표로 여겨졌지만, 사실 이 테스트는 오늘날 심리학자들이 창의성을 정의할 때 고려하는 사항 중 하나인 '발산적 사고 능력’만을 측정한다.
  • 발산적 사고는 사실 (부과된) 제약 기반 사고이다. 즉, 엄격한 제약 조건에 따라 즉흥적으로 많은 독창적인 용도를 생각해 내는 것이다.
  • 많은 기술 면접에는 주어진 제약 조건을 어떻게 처리하는지 물어봄으로써 창의적 잠재력을 측정하는 행동 질문이 포함된다.

순진함과 제학

  • 교육 철학자이자 창의성 비평가인 카테리나 모루치는 창의성의 중요한 특징으로 문제 해결(problem-solving), 평가(evaluation) 다음으로 순진함을 언급한다.
  • 그녀는 순진함을 창의성의 핵심 특성인 자발성, 무의식적 사고 처리, 영역 규범에 대한 도전, 경직된 사고 구조로부터의 독립성 등 다양한 측면과 연관 지었다.
  • 순진함은 창의성에 대한 어린아이 같은 장난기 어린 특성일 수 있다. 또는 당면한 상황의 속성에 대한 사전 노출이 부족하여 무지에 기대고 있음을 나타낼 수도 있다.
  • 때로는 무지가 행복일 수 있다!

4.7 요약

  • 창의적인 문제 해결 능력에 도움이 되는 유익한 제약은 부수적 제약(내재적/부과적 제약)과 본질적 제약(스스로 부과한 제약)으로 분류할 수 있다.
  • 자신에게 불리하게 작용할 것 같은 가혹한 내재적 하드웨어 제약이 실제로는 오히려 창의력을 발휘하는데 유리하게 작용할 수 있다.
  • 오래된 비주얼 베이직 브라운필드 프로젝트에서 조금 어색하더라도 최신 소프트웨어 개발 모범 사례와 이상을 준수할 수 있다. 부과적 제약을 완화할 방법만 찾아내면 된다.
  • 식별된 제약 조건에 대해 침묵하는 것은 결코 좋은 생각이 아니다. 팀과 소프트웨어, 궁극적으로는 고객에게 영향을 미칠 수 있습니다.
  • 같은 맥락에서, 아이디어가 실현 불가능한지 파악하기 전에 '불가능하다'는 이유로 너무 빨리 아이디어를 폐기해서는 안 된다.
  • 제약에는 적당한 지점이 있습니다. 제약에 얽매이면 창의적인 잠재력을 발휘하지 못하게 된다. 스스로 제약을 가할 때는 그 스위트 스폿을 지나칠 수 있다는 점을 염두에 두어야 한다.
  • 스스로 제약을 가하면 창의적인 해결책에 더 가까워질 뿐만 아니라 지루함이나 평범함과도 싸울 수 있다.
  • 내면에 있는 순진한 아이와 같은 흥분을 항상 억압하기만 해서는 안 된다. 그 목소리는 특히 어려운 제약을 해결하는 데 도움이 될 수 있다.
  • 발산적 사고도 제약 조건에서 작업할 때 도움이 될 수 있다. 다만 다양한 발산적 사고 테스트에 너무 많은 관심을 기울이지 않도록 주의해야 한다. 창의력은 단순한 측면적 사고 그 이상이다.