책정리/크리에이티브 프로그래머

크리에이티브 프로그래머 4장) 제약 조건

뽀글보리 2024. 2. 3. 13:45
반응형

4장 제약 조건

창의성을 발휘하는 데 있어서 제약은 가장 중요한 요소이다. 시간도 없어 비용도 너무 적어요. 자바 버전이 너무 낮아서 작업이 불편해요. 네트워크 연결이 너무 불안정해요. 초당 요청이 너무 많아서 이것을 잘 처리하기는 어려워요. 위와 같은 흔한 불평은 일종의 제약에 해당한다. 제약 조건이 나쁘다는 우리의 일반적인 생각과는 다르게 오히려 제약 조건으로 창의성이 향상할 수 있다.

 

제약의 종류

내재적 제약 조건

작업에 속해 있는 문제의 속성에 내제되어 있는 제약 조건

ㄴ 하드웨어 제약 조건: 하드웨어의 한계 때문에 16가지의 색상만으로 게임 아트를 구현한 <원숭이 섬의 비밀>

ㄴ 소프트웨어 제약 조건: 소프트웨어를 작성하기 위해서 개발 생태계의 본질적인 범위 내에서 작업해야 한다. 키보드, 모니터 등을 사용하고 컴파일을 위한 명령을 실행하는 등의 기본적인 작동 방식을 통해 컴퓨터를 다룬다.

 

부과적 제약 조건

내제적 제약 조건이란 작업하는 자료에 내제되어 있는 제약이라면, 부과적 제약은 이해당사자로부터 발생하는 제약이다. 고객이 정한 마감 기한, 예산, 이후 유지보수를 하기 위해 PHP를 사용하여 처리해야함. 등. 이런 제약은 내제적 제약 조건과 동일하게 자유롭게 선택할 수 있는 것이 아니다. 하지만 둘의 차이는 심리적인 것에 영향을 미친다. 내제적 제약의 경우에는 아무도 불평하지 않는다. 그러나 부과적 제약 조건에 대해서는 불평 불만을 한다.

 

우리는 이러한 부과적 제약 조건을 좀 더 긍정적으로 바라볼 필요가 있다. 제한된 리소스로 작업하며 당연한 것을 넘어선다는 생각으로 작업해보면 어떨까?

 

스스로 부과한 제약 조건

자발적으로 프로젝트에 시간이나 예산의 제약을 가하는 것이다. 비스크야르에 따르면, 스스로를 구속하는 행위느는 생산성을 높일 수 있고, 창의적인 행동을 위한 새로운 기회를 열어주는 수단이다.

 

제한된 프로그래밍 언어 고

고는 C와 유사한 정적 타입의 컴파일 언어이다. 고의 설계자 중 한 명인 롭 파이크에 따르면 고는 언어 사용의 공간을 ‘프로그래머의 머릿속에 모든 것을 담을 수 있을 만큼만’ 작게 유지하도록 설계되었다. 최소한의 언어 사양을 유지한다는 뜻이다.

고에서는 함수형 map, filter, reduce 유틸리티나 while문이 없어서 루프를 사용하려면 for만을 사용해야 한다. C에서 처럼 메모리를 할당하고 해제하는 malloc, free같은 함수도 없다. 이러한 제약 조건 때문일까? 최근 고 프로젝트를 살펴보면 독창적인 기능을 가진 프로젝트들이 많이 나오고 있다.

스위트 스폿 찾기

제약 조건이 너무 많으면 어떨까? 제약 조건이 너무 적으면 어떨까? 너무 적으면 지루한 작업을 계속 반복하게 된다. 너무 많으면 과제가 너무 어렵게 인식되어 학습 과정이 방해된다. 따라서 최적의 제약 조건이 있을 경우에 개인의 한계를 초과하는 ‘스위트 스폿’에 도달한다. 이를 위해서 의도적으로 스스로 제약을 부과하고, 일시적으로 제약을 제거하는 등의 적극적인 노력으로 균형을 맞추려고 해야 한다.

 

반응형