자유도
당신이 고집이 세고 그저 하고 싶었던 일을 하고 싶을 뿐이라고 해 보자. 하지만 상황과 문제에는 제약이, 요구사항이 있다. 어떤 비제약이 존재하는지, 어떤 비요구사항이 존재하는지 생각해 보는 것이 중요하다. 제약을 이런 것에서:
X는 할 수 없다
이런 것이 되게 만들 수 있다면:
X는 할 수 없지만, X의 이 완화된 버전은 할 수 있다
그러면 어차피 하고 싶었던 일을 하고 인생을 해킹하고 이길 수 있다.
자유도
인생에서 자유도란 제약되지 않은, 할 수 있는 것들에 관한 것일 수 있다. 이론적으로 우리는 거의 무엇이든 할 수 있다는 점에서 이건 당연해 보이지만, 우리는 우리에게 부과된 제약을 우리 욕구를 좌절시키는 것으로 보는 데 집중하는 경향이 있다. 그것들을 우회하는 것과 제약 바로 옆에 존재하는 자유도를 써먹는 것에는 특유의 만족스러운 느낌이 있다. 케이크를 가진 채로 먹기까지 하는 특유의 "이거나 먹어라" 하는 냄새.
물리학에서 자유도는 무언가가 자유롭게 움직일 수 있는 축들을 나타낸다. 둥근 문손잡이는 그것을 돌리는 축을 따라 자유도를 하나 갖는다. 문에서 앞뒤로 움직이는 것은 제약되어 있지만, 문 안에서 회전할 수는 있다.
문제 공간을 다룰 때, 보통은 도메인 모델에 대한 설명을 갖게 된다: 이건 저것으로 만들어져 있고, 이런 것들을 주기적으로 하고, 겨울에는 이런 종류의 음식을 먹여야 하고 안 그러면 굶어 죽을 것이다. 또한 이건 할 수 없고 저것은 매우 중요하다.
우리는 제약에 많이 집중하는 경향이 있다. 우리는 시스템 설계를 하고 기능 요구사항과 비기능 요구사항에 대해 이야기하고 제약에 집중한다. 하지만 너무 자주 우리는 문제 안에 숨어 있는 것에 집중하지 않는다: 우리가 어떤 자유도를 가지고 있고 해법을 뚫고 나가는 데 써먹을 수 있는지.
나는 어떤 문제에서든 사용할 수 있는 자유도를 강조하는 것이 중요하다고 생각한다. 우리가 할 수 없는 것을 강조하는 것도 중요하지만 우리가 할 수 있는 것을 강조하는 것 또한 중요하다, 특히 그것이 명백하지 않을 때, 그리고 이 액추에이터를 쓰는 것이 풍부하고 다양한 해법을 낳을 수 있을 때.
창의적인 해법과 해킹의 풍부한 원천
내 경험상, 언제든 사용할 수 있는 자유도를 기억해 두는 것은 창의적인 아이디어를 캐낼 아주 풍부한 원천이다. 특히, 겉보기 제약 뒤에 어떤 자유도가 숨어 있는지 알아낼 수 있을 때 훨씬 더 만족스럽다.
다음에 어떤 문제의 해법을 설계할 때는, 존재하는 자유도를, 그리고 겉보기 제약을 완화해서 끌어낼 수 있는 숨은 자유도도 꼭 적어 두라.
스스로에게 이런 것들을 물어보라:
- 이것이 미래에 대한 전지적 지식을 갖는다면 어떨까?
- 이것은 X 형태로는 할 수 없지만, X' 형태로는 할 수 있는가?
- 내가 대체 우주에서 왔고 이 땅의 규칙 따위 알 바 아니었다면, 상식을 정면으로 거스르는 어떤 미친 짓을 할까?
- 이건 항상 참인가, 아니면 다른 어떤 입력에 따라 선형적으로 점점 덜 참이 되는가?
이게 통했던 비기술적 사례들: