같이 일하고 싶은 개발자 (2)
2024. 07. 31.
같이 일할 개발자가 아래의 능력도 부수적으로 갖추고 있으면 좋겠다.
- 직관, 감. 어떤 문제를 보았을때 어떻게 풀면 될지 떠올리는 능력을 말한다. 좋은 감을 가지고 있다면 문제를 보고 코드를 짜기 전에 풀이를 떠올릴 수 있을 뿐만 아니라 풀이의 효율, 그리고 혹시 있을 수도 있는 풀이의 취약점까지도 파악을 끝낼 수 있다. 나는 감이 좋은 사람들을 눈이 좋다고 표현한다.
- 재현 능력. 다르게 말하면, '제발 당신이 만든 것을 저도 실행해볼 수 있게 해주세요'. 컴퓨터를 활용한 작업의 큰 이점 중 하나가 바로 이 재현 가능성이라고 생각한다. 그러니까, 내 로컬 환경에서 작동하는 무언가를 구현했다면, 다른 곳에서도 똑같이 작동할 것이라고 기대할 수 있는 것이다.
위의 두 능력 중 직관은 단기간에 만들어낼 수 있는 능력이 아니기도 하고, 팀원보다는 리더급에 있는 사람들에게 좀 더 많이 요구되는 능력이므로 부수적이라고 생각했다. 하지만 재현 능력은 조금 다르다. 어떤 개발자들은 재현은 능력이라고 생각할 필요도 없는, 모두가 신경쓰고 있는 요소라고 생각할지도 모르겠다. 하지만 안타깝게도 건축가들에게는 이 능력이 매우 부족하다. 내가 지금까지 봐온 건축 설계의 과정은 재현과 거리가 매우 멀었는데, 아마 이로 인해서 건축가들은 재현에 대해 신경쓰는 방법을 모르는 상태로 지금까지 지내왔을 것으로 생각된다. 그래서 개발을 처음 공부하는 건축가가 팀에 들어오면 개발자들이 말하는 재현이란 무엇인지, 어떤 도구를 활용해서 재현 가능한 프로젝트들을 만들어내는지 기초부터 설명하는 과정을 꼭 거친다. 재현이 가능하다는 것은 그만큼 중요한 것이다.
그렇다면 재현이란 도대체 무엇인가? 설명을 위해 누군가 그래스호퍼로 어떤 기능을 구현한 상황을 떠올려보자. 그리고 나는 이 기능을 직접 테스트해보고 싶다. 그렇다면 무엇이 필요할까? 적어도 기능이 구현되어있는 그래스호퍼 파일은 있었으면 좋겠다. 만약 로직을 작성한 사람이 food4rhino에서 다운받은 플러그인을 사용했다면 내 컴퓨터에서 그래스호퍼 파일을 열려고 할때 누락된 컴포넌트가 있어 작동하지 않는다는 메세지가 뜰 수도 있다. 이를 방지하려면 처음 기능을 구현한 사람은 어떤 플러그인의 어떤 버전을 사용했는지, 어디서 설치할 수 있는지 미리 명시해주는 것이 좋다. 구현한 사람이 사용한 라이노3D 버전과 내가 쓰는 라이노3D 버전이 다를 수도 있다. 이 경우 구현한 사람은 어떤 라이노3D 버전에서 작동하는지 미리 명시해주고, 가능하다면 다른 버전에서도 호환이 되도록 기능을 구현하는 것이 좋다.
하지만 현실은 어떠한가? 대다수의 건축가들은 그래스호퍼 캔버스를 캡쳐해서 이미지 파일로 만든 뒤 이를 그대로 포트폴리오에 첨부해서 pdf로 만들어버린다. 심지어 그래스호퍼 로직이 복잡하고 거대해진 경우 무슨 컴포넌트를 썼는지 전혀 보이지 않을 정도로 줌아웃 해서 캡쳐한, 스파게티처럼 꼬인 덩어리 이미지만 들어있는 경우도 있다. 여기서 끝이 아니다. 작업자 본인도 나중에 gh파일을 열어보고 나서 각종 호환 문제로 영영 작동하는 모습을 보지 못하게 되었다는 것을 깨닫게 될 때도 왕왕 있다. 건축가들은 미래의 본인도 확인이 불가능한 정도로 확실하게 재현 불가능한 작업을 하고 있는 것이다.