그냥 뭐 이것저것
A little bit of this, a little bit of that
함수형 프로그래밍에서 특히 좋아하는 것은 조합입니다. 작은 프로그램들을 연결해 큰 작업을 처리하는 유닉스 철학처럼, 작은 기능을 서로 다른 맥락에서 재사용하고 새로운 조합으로 더 큰 일을 표현하는 방식에 매력을 느낍니다.
부수 효과와 순수한 로직의 분리를 중요하게 다룬다는 점도 좋아합니다. 시간에 따라 달라지는 상태나 외부 환경처럼 실행 시점에 영향을 주는 요소들을 걷어내면, 순수한 로직이 무엇을 하는지 한눈에 이해하기 좋습니다. 어떤 효과가 발생하는지 명시적으로 드러내고, 그 실행 시점을 제어할 수 있다는 점도 매력적입니다.
이러한 구조를 범주론처럼 전산학 바깥에서 출발한 이론을 통해서도 설명할 수 있다는 점에 끌립니다.
사용자 인터페이스는 제품의 첫인상을 만드는 데 큰 역할을 한다고 생각합니다. 제가 만든 것이 눈앞에 형태를 갖추고, 사용자의 행동에 반응하는 모습을 보는 것도 좋아합니다.
물론 구현하는 과정이 늘 즐겁지만은 않습니다. 서로 다른 기기와 환경에서 일관된 모습과 사용감을 유지하려다 보면 예상하지 못한 예외 상황에 부딪히곤 합니다. 그럼에도 눈에 보이는 것을 만들고, 다듬고, 유지해 나가는 과정이 즐겁습니다.
이펙트 시스템에서 좋아하는 것은 외부 입출력이나 실패 가능성을 포함한 계산을 값으로 다루고 조합할 수 있다는 점입니다. 특히 어떤 실패가 가능한지, 실행에 어떤 의존성이 필요한지를 명시적으로 드러내고, 그에 대한 처리를 빠뜨리지 않도록 돕는 점이 마음에 듭니다. 이를 통해 예상하지 못한 예외 때문에 뒤늦게 문제를 수습하는 일을 줄일 수 있다고 생각해요.
타입 시스템에서 좋아하는 것은 코드를 작성하면서 저지를 수 있는 많은 실수를 실행 전에 발견할 수 있다는 점입니다. 실행 중에 드러나는 문제는 원인을 찾기 위해 당시의 상태와 실행 흐름을 추적해야 하는 경우가 많습니다. 반면 타입 오류는 문제가 있는 지점과 이유를 좁혀주어, 비교적 이른 시점에 원인을 파악하고 수정할 수 있게 해줍니다.
타입 시스템의 표현력을 한껏 활용해, 생각지도 못한 일을 해내는 사람들을 보면 멋있다는 생각이 듭니다. 어디까지 가능한지 궁금해지는 점도 타입 시스템에 끌리는 이유입니다.
자연에서 온 것이 식재료가 되고, 유통과 손질을 거쳐 요리되어 입에 닿고, 맛으로 느껴지기까지의 모든 과정을 사랑합니다. 맛있는 것을 먹는 일은 물론, 직접 요리하고 그 과정에 담긴 지식을 알아가는 것도 좋아합니다.
게임을 통해 평소 쉽게 겪을 수 없는 경험을 일부분이나마 체험하는 것이 즐겁습니다. 다른 플레이어와 직접 경쟁하는 PvP를 제외하면, 대체로 다양한 장르와 요소를 가리지 않고 즐기는 편입니다.