본문 바로가기

런던살이/여전히 직장인 2023

[일상] 개발자가 가지고 있으면 좋은 기본소양

비전공자로서 개발직으로 전향 해 일을 하다 보면 스스로의 무지함과 마주하면서 겪게되는 낯선 감정에 놀라 이 길이 정말 나와 맞는지 수시로 의심하는 맘을 품게된다. 그럴 때 마다 이 일을 처음 시작할 때 부터 키워놓았으면 좋았겠다 싶은 능력들이 머리속에 떠오르곤 한다. 혹시나 나처럼 어쩌다보니 혹은 이 직업이 가진 매력에 빠져 개발자의 길로 들어서려는 이들이 있다면 한번씩 생각해보면 좋을, 내 기준 개발자가 가지고 있으면 좋은 기본소양을 적어본다. 

 

 

1. 지구력(끈기와 삽질)

답이 안나올 것 같은 문제를 풀어내기 위해 해야하는 가장 단순하고도 중요한 일은 '계속 하는 것' 이다. 한 두 번의 시도에 답이 나온다면 '개발자'라는 직업은 너도나도 해먹을 수 있는 쉬운 일 중 하나였을거다. 반면 계속 붙잡고 있는다고 과연 답이 나올까 하는 불안감에 끝까지 못하는 경우(과거의 나)도 있는데 답이 있는지 없는지는 끝까지 파봐야 알게된다. 그리고 그 과정에서 한 삽질들은 개발인생에 아주 좋은 거름이 되어 오랜 기억으로 남고 같은 실수는 왠만해서 다시 저지르지 않게된다. 학습된 삽질로 머릿속에 실수 데이터가 꽤 쌓이면 업무처리시간이 단축되어 '일을 잘 하는 것' 처럼 보인다. 그 이후엔 낯선 문제에 직면하더라도 삽질은 운명이란 것을 알고있기 때문에 끈기있게 답을 찾아가는게 생활화 된다. 허황되 보일지라도 믿음을 갖고 참을성있게 파고 파고 또 팔 수 있는 지구력을 기르자. (사실 이건 포기만 안하면 알아서 길러진다.)

 

2. 차분함과 집중력

불안하고 격앙되면 코드가 안읽힌다. 졸려도 안읽힌다. 맑은 정신으로 차분히 긴 코드를 읽어내려갈 수 있다면 문제해결에 걸리는 시간이 단축할 수 있다. 튜토리얼을 보고 따라하는 예제들은 대게 짧아서 순간의 집중력으로 풀어낼 수 있지만 실무에서 좀 못된 페이지를 만나면 천 줄 정도의 코드를 위아래로 오르락 내리락 거리면서 읽어야 할 때가 있다. 머리가 수용할 수 있는 양을 초과하면 슬슬 집중력이 흐트러지면서 코드가 안읽혀 당황하게 되는데 이 때 스스로를 차분하게 가라앉힐 수 있다면 금방 다시 돌아가서 코드를 읽을 수 있기 때문에 좀 의외일 수도 있지만 마인드컨트롤이 코딩에 꽤 도움이 된다.  

 

3. 좋은데 싫은 '반복'

무슨소린가 싶을거다. 개발자는 어떤면에서 반복을 피해야 하고 또 어떤면에서는 반복을 즐겨야 한다. 피해야 하는 경우는 당연히 코드를 짤 때이다. 뭐든지 반복되는 부분이 있다면 generalise 해 코드의 양을 줄여야 한다. 그럼 언제 반복을 즐겨야 하는가? 테스트를 할 때 이다. 내가 만든 페이지가 제대로 작동하는지 확인하기 위해 무한반복을 해야할 때가 있다. 바로 열어볼 수 있는 페이지라면 그나마 수고가 덜하겟지만 해당 페이지로의 접근을 위해 거쳐야 하는 프로세스가 길다면 혹은 테스트 서버가 느릿느릿 거북이 걸음이라면 코드를 짜는 시간에 비해 테스트를 반복하는 시간이 상대적으로 길고 지루하게 느껴질 수도 있다. 그렇다고 테스트를 안하고 넘길 수는 없으니 이 때의 반복은 필수다. 지루한 반복과 친해져야 한다.

 

4. 회복탄력성 (계속되는 챌린지를 버텨낼 멘탈)

종종 코딩이 감정노동이라는 생각을 한다. 내가 컴퓨터 언어에 진심으로 흥미를 느끼는 인간상과는 거리가 있어서 일 수도 있고 비전공으로 개발일을 시작해서일 수도 있는데 일을 하면 할수록 스스로의 무지함에 부딪히게 된다. 그동안 해온 다른 일들은 어느정도 일을 배우고 나면 일이 손에익어 적당히 딴짓도 할 수 있고 이따금씩 지루함도 느껴졌다. 그에 비하면 개발은 공부해야하는 양과 시간이 배로 필요한 일이라 경험이 쌓일수록 바빠진다. 오히려 초반에 더 널널했고 요즘은 퇴근할 때 까지 정신없이 하루가 지나간다. 어떻게보면 지루하지 않아 좋지만 낯선 문제에 직면할 때 마다 매일같이 불쑥불쑥 찾아드는 스스로에 대한 불신이 일의 즐거움을 찾는데 방해가 되기도 한다. 문제를 내가가진 결핍이 아니라 풀어야 할 문제 자체로 바라보는 힘이 있다면 챌린지 공격에 한 대 맞더라도 훌훌 털고 일어나 코딩을 진심으로 즐기는 참개발자가 될 수 있지 않을까. 

 

5. 두꺼운 얼굴

생각보다 협업이 많이 필요한 직종이다. 개발자 하면 조용히 앉아 컴퓨터만 들여다보고 있는 이미지가 그려질 수도 있지만 그건 위에 나열한 이유들 때문에 집중하는 시간이 길어서 만들어진 모습일 것이다. 그 인고의 과정에서 여기저기 말을 걸어야 하는 경우가 꽤 있다. 프론트 개발자인 내 경우 프로젝트 진행중에는 주로 디자이너, 백앤드개발자 그리고 동료 프론트 개발자들과 소통한다. 마지막에 결과물을 QA에 보낼 때엔 전달형식이라 대부분 짧은 메세지가 오가고 끝나지만 프로젝트 진행중에는 하루에 한 번 이상 누군가와 협업을 하게된다. 디자이너에게 아이콘을 보내달라고 부탁하거나 백엔드 개발자와 데이터 구조 혹은 경로 협의, 혹은 안풀리는 문제를 풀기위해 동료 프론트 개발자들에게 도움을 요청하는 등의 대화가 매일 오간다. 도움을 청해야 하는 경우가 심심치 않게 있기 때문에 부탁하는게 익숙하지 않은 사람이라면 쉽지 않을 수도 있다. 내 경우 부지런히 말 걸수록 방향이 뚜렷하게 잡혀 프로젝트를 일찍 끝낼 수 있다.

 

6. 꼼꼼함

위에 나열한 것들 다 안고 꼼꼼함 추가. 프로그래밍이 컴퓨터와의 협업이라 많은 부분에서 컴퓨터의 도움을 받기도 한다. 그러나 기계가 커버할 수 없는 부분들 예를들면 인간이 정의해놓은 acceptance criteria 같은 것들은 내가 알아서 챙겨야 하는데 컴퓨터와의 콜라보레이션에 심취해(묻어가다) 놓치는 경우가 많다. 다양한 경우의 사용자 경험을 고려해야 하다보니 다른일을 할 때에 비하면 프로그래밍에서는 마치 3D 꼼꼼함을 요하는 것만 같다. 모르고 놓쳤으면 몰라서 그랬으려니 하겠지만 알고 놓쳐서 꽤 황당하다. 눈에띄는 에러들은 오히려 티가나서 고치기 쉽지만 놓치고 가는 디테일들은 추후에 개발자의 삶을 꽤나 귀찮게 만들기에 꼼꼼함이 장착되어 있는 사람이라면 작업시간을 크게 단축시킬 수 있을 것이다.

 

 

수포자인 나도 상위 1% 는 아니지만 개발자로 일을 하면서 먹고살고 있다. 단지 위에 것들을 조금 일찍 알았더라면 더 즐겁고 편하게 일의 재미를 알아가지 않았을까 하는 약간의 아쉬움이 있을 뿐이다. 그러니 이 일을 하고 싶은데도 본인과는 근본이 다르다고 여겨 일찌감치 포기하지 않았으면 좋겠다.