서버/클라이언트 프로그램 첫 경험은 대학교 때 간단한 채팅 프로그램 과제였던 걸로 기억합니다.

프로그램을 두 개를 띄우고 채팅 프로그램을 짜니 머리가 빙빙 돌았습니다.
서버와 클라이언트 프로그램은 각각의 프로세스로 따로 화면에 보였지만 이 둘 사이에 경계가 있다는 생각은 하지 않았습니다.
다시 말해… 서버 프로그램은 누가 짜고, 클라이언트 프로그램은 누가 짠다는 생각은 전혀 하지 않았습니다. 다 내가 코딩해야 하는 일일뿐.

회사에 들어가니 서버 프로그래머와 클라이언트 프로그래머의 경계를 확실하게 나눠서 일했습니다.
제가 일했던 어느 대기업에서는 서버와 클라이언트 코드 저장소를 따로 뒀는데, 같은 팀인데도 불구하고 자기 역할의 저장소에만 접근할 수 있었습니다.
저는 충격을 받았습니다. 이해할 수가 없었습니다.
“아니, 클라이언트 개발자가 같은 팀 서버 코드를 볼 수 없다고?”
팀장님도 저를 이해하지 못했습니다.
“아니, 클라이언트만 코딩하면 됐지 서버 코드를 네가 왜 봐야 하니?”

저의 계속되는 불평에 팀장님은 결국 비밀번호를 알려주셨습니다. 덧붙이는 말과 함께.
“다른 팀원들에게는 말하지 말아라.”

저는 이런 경계가 싫었습니다. 나를 어느 한 쪽에만 두고 싶지 않다구.
내게는 그저 하나의 프로그램일 뿐인데 왜 선을 갈라서 이쪽 저쪽 나누는 걸까?
회사에서야 그런 분업 방식이 이익이 되니 그렇게 하는 것이겠지만, 개발자 개인에게도 이익인지는 생각해 볼 필요가 있습니다. 이런 환경에서 일하다 보면 자신도 모르게 스스로의 역할을 좁게 규정해버리게 되거든요.
어쩌면 많은 개발자가 (우연에 가깝게) 처음 부여받은 역할로 은퇴할 때까지 살고 있는 건 아닐까요?

저를 이런 상황에서 벗어나게 해준 건 코딩에 대한 호기심 때문이었습니다.
코딩이라면 어떤 분야든 다 재미있었거든요. 더 넓게 더 많이 알고 싶었기 때문에.
한 쪽에 익숙해졌다는 느낌이 들면 다른 쪽으로 도전했습니다. (2년 정도 지나면 충분히 익숙해졌다는 느낌이 들곤 했습니다)
후배들에게도 경계를 넘나들라고 조언해 줍니다만, 이게 말처럼 쉬운 일은 아닌 것은 저도 알고 있습니다.
고통스러운 시간을 꽤 오래 견뎌내야 하니까.

지금 와서 돌아보니 경계를 넘어서려는 노력들은 결국 다 저에게 이득이 됐습니다.
1인 개발자로 혼자서 코딩해서 먹고살 수 있게 되었을 뿐만 아니라…
모든 것을 내 통제 안에 둘 수 있게 되었습니다. 이 느낌이 참 좋습니다.
코딩 인생도 훨씬 재밌어지는 것은 덤이고요.

요즘에는 컴퓨터공학의 경계를 벗어나서 완전히 다른 분야들도 공부해 보고 있습니다.
늦게 하는 공부가 아주 재밌습니다. 풀스택 개발자를 넘어서 풀스택 인생.
제 능력으로 각 학문의 깊은 단계까지 깨우치진 못하겠지만… 이런 노력으로 세상을 지금보다 조금이라도 더 선명하게 볼 수 있게 된다면 충분히 기쁘고 만족스러울 것 같습니다.


함께 읽으면 좋은 글: