개발자로서 첫 협업 프로젝트를 하며
좋아하는 와인을 한 잔 마시며 프로젝트 막바지에 쓰는 간단한 회고
운이 좋게 웹디자이너인 친구 덕분에 커리어 전환을 시작한 이후 개발자로서의 일을 돈을 받고 하게 되었다. 시간이 넉넉한 프로젝트였다면 친구 혼자서 할 수 있었을 테지만, 연말에다가 해야 하는 일도 많고 완성을 해야 하는 날이 촉박해서 일의 일부는 나에게 맡기기로 한 것이다. 이렇게 처음으로 일을 해보다니! 잘할 수 있을까 걱정이 되기도 했고 거의 혼자서 공부를 하다가 정식으로 협업이라는 걸 처음으로 해보는 것이기 때문에 어떨지 궁금하기도 했다. 그렇게 프로젝트를 하기 시작한 지 2주 차... 다른 사람들이랑 일을 해본 적도 없고, 어디에 소속돼서 하는 것도 아니기 때문에 뭐랄까 진짜 얼랑뚱땅 굴러가는 느낌.
협업을 처음 하면서 느낀 건 왜 이 일을 하면서 다른 무엇보다 의사소통이 중요하다고 한 것인지 몸소 느낄 수 있는 계기가 되었다. 누구나 바라보는 시각이 다르고, 가지고 있는 지식도 다르기 때문에 주어 다 자르고 머릿속에서 나온 말을 그냥 한다면 상대방은 절대 알아들을 수 없다. 디자이너인 친구가 평소에는 일을 하면서 쓰는 용어들을 난 알아들을 수 없어서 질문을 했고, 개발자로서 공부를 하며 알게 된 용어들 중에서 친구가 알아듣지 못하는 것도 있다. 그리고 개발자로서 처음으로 디자인을 받아 일을 하는데 디자인 자체가 움직이는 것이 아니기 때문에 움직이는 효과가 필요하면 그것이 어떻게 표현되어야 하는지 명확히 할 것. 아니면 애써 쓴 코드를 다 지워야 하는 불상사가 있을 수 있다...
그리고 또 느낀 건, 프리랜서는 내공이 많이 쌓여야 하는 것이구나! 구현해야 하는 페이지가 그렇게 많지도 않았는데 실제로 개발을 하면서 풀리지 않는 부분은 진짜 열심히 구글링을 했지만, 시간을 너무 허투루 보내며 작업을 하고 있는 건 아닐까라는 생각이 들었다. 6개월 넘게 공부를 하면서 당연히 부족한 부분이 많겠지만, 엄청난 기능들을 구현하는 것도 아닌데 이렇게 시간이 많이 걸려도 되나 싶은. 그리고 그렇게 힘들게 구현했는데 고객의 피드백이 다른 방향으로 제시한다면, 힘들게 구현한 코드는 무용지물이 될 수 있다. 하하(실성) 친구는 개발보단 디자인 쪽을 더 많이 해봤던 터라 어떤 문제점이 있을 때 물어보기도 어려웠다. 그래서 속 시원하게 물어볼 사람이 있었으면 좋겠다는 생각이 들기도 했고.
친구가 한 디자인이 어떠한 작품들을 보여주는 디자인에 많이 치중해서 내가 평소에 코딩을 하던 거랑 달라 어떻게 해야 할까 고민을 많이 했다. 최근에 리액트 강의를 듣고 챌린지를 끝낸 상태라 처음엔 리액트로 개발을 시작했다. 동적인 부분의 기능 구현은 바닐라 자바스크립트로 하는 것보단 프레임워크를 사용해서 하는 게 더 수월할 것 같아서. 그런데, 이 리액트랑 스타일 컴포넌트의 조합을 내가 아직 그리 잘 다룰 수 있는 상황이 아니라 한 번 엎었다. 나중에 친구가 본인의 작업이 끝나면 나에게 도움을 주거나 유지 보수를 해야 할 때 리액트로 하면 힘들 거 같기도 했고 그래서 거의 몇 시간 작업한 걸 엎었다. 그리고 다시 HTML, CSS, Vanilla JavaScript로 작업을 하기로 마음먹고 다시 시작했다. 와... 스크롤 제어를 마음대로 못하겠네? CSS가 이젠 좀 익숙해지려나 싶었는데, 나의 크나큰 착각이었다. 그래서 스타일링 한 거 뒤엎고 다시 각 잡고 한 번 더. 공책으로 레이아웃을 그려가며 마크업을 하고 스타일링을 하고 스크립트 짜서 기능까지 구현했는데 웬걸 어느 해상도에서나 잘 구현되는 반응형으로 만들어야 하는 거다. 개발자 도구로 여러 번 확인하며 괜찮다고 생각했는데, 고객 측에서 어느 부분이 잘려 보인다며 피드백을 주었다. 그래서 다시 한번 수정의 수정을 거듭하고 그러다 보니 시간이 이렇게 흘렀다.
마음대로 안 풀리니까 새벽까지 눈이 뻑뻑하게 아프지만 계속 앉아서 작업을 했고 그래서 어찌어찌 결과물을 만들어놓긴 했다. 이번에 프로젝트 하면서 내가 얼마나 HTML과 CSS의 손톱만큼의 지식도 없는지와 바닐라 자바스크립트로 얼마나 더럽게 코드를 쓸 수 있는지 깨달았다. 여태껏 일을 하면서 직업 특성상 하루 이상의 일을 끌고 진행해 본 적이 없고, 고객의 피드백으로 인해 수정의 수정을 거듭하며 동시에 협업자와 소통을 계속 주고받으며 일을 한 적이 없었는데 개발이라는 게 이런 것이구나를 아주 조금이나마 깨달을 수 있었다. 이번 주 주말이면 다시 받은 피드백으로 작업을 마무리할 텐데 그동안 수고했다며 나 자신을 다독여줘야지. 그리고 고객한테 피드백 받으랴, 디자인하면서 본인 작업하랴, 나한테 전달해 주고 다독이며 일을 프로젝트를 끌고 가준 친구에게 너무 고맙다. 어찌 보면 이제 막 시작한 나한테 이런 경험을 할 수 있게 해준 것 또한.
[이번 프로젝트를 하며 느낀 것들]
☻ 작업을 시작하기 전, 어떤 도구를 선택해서 하는 것이 좋을지 고민하고 또 고민하기
: 여러 사항들을 고려하지 않고 현재의 상태에서 가장 익숙하다는 이유로 그 도구를 선택해서 일을 시작하면 때론 썼던 코드들을 뒤엎고 다시 작업을 시작해야 할 수도 있다.
☻ 모르는 것에 대해선 솔직하게 모른다는 답을 한 뒤에 명확하게 질문을 하기
: 질문하는 것에 대해 두려워하지 말자. 이번에는 다행히 친구랑 작업을 하는 거라 모르는 것은 모른다고 솔직하게 물어볼 수 있었는데, 회사에 취직을 하고 일을 시작할 때에도 질문하는 것에 대해 너무 두려워하지 않기. 당연히 처음 시작하는 것이기 때문에 모를 수밖에 없다. 모르는 상태에서 질문하기 두렵다는 이유로 일을 진행하면 더 수습하기 어려운 상황을 만들 수도 있다.
☻ 그렇다고 무작정 질문을 할 것이 아니라 혼자서 충분히 고민해 보고도 답이 안 나온다면 정리해서 질문하기
: 혼자서 할 수 있는 충분한 시도와 고민을 하지 않고 질문을 하면, 도리어 질문을 듣는 상대방의 시간을 빼앗는 것일 수도 있다.
☻ 이럴 것이라는 지레짐작으로 일을 진행하지 않기
: 상대방과의 충분한 대화를 통해 일을 진행해야지 안 그러면 원하지 않는 결과물이 나와서 일을 처음부터 다시 해야 할 수도 있다.
☻ 레이아웃을 잡을 때 무작정할 것이 아니라, 전체적으로 어떻게 구성할 것인지 충분히 계획을 세운 다음에 실행하기