반응형

보통 사람들이 개발자가 하는 일은 주로 코딩(텍스트 창에 영어를 잔뜩 타이핑하는)이라고 생각한다. 그렇기 때문에 코딩을 잘 하는 개발자가 좋은 개발자라고 생각하는 분들도 많다. 나도 처음 개발자로서 월급을 받을 때에는 그렇게 생각했다.
요즘에는 생각이 조금 다르다. 좋은 개발자의 조건 중 코딩이 있는 건 맞지만, 코딩을 잘 한다고 해서 좋은 개발자는 아니라는 생각이 든다.

좋은 개발자가 되기 위해서는 일단, 개발자가 하는 일이 무엇인지 나열해봐야할 것 같다.

 

개발자에게 코딩이란?

첫 회사(SI)를 다닐 때 참석했던 회의에서 받았던 질문이 아직도 기억에 남는다.

"이 화면 개발하는 데에 얼마나 걸렸어요?"

 

이 질문을 들었을 때 많이 당황했다.
그 질문을 한 고객과 함께 회의에 참여하고 요구사항을 논의한 게 벌써 4 개월 전이고, 그 회의는 테스트가 끝난 프로젝트 결과를 시연하는 자리였다.

그때 들었던 생각은 '우리 함께 4 개월 동안 일했는데, 개발하는 데에 시간이 얼마나 걸렸냐는게 무슨 뜻이지?' 이었다.
그 분이 어떤 걸 궁금해하는 지 이해는 가는데, 그 분이 생각하는 개발의 범위와 내가 생각하는 개발의 범위가 달라서 어떻게 답변을 해야할 지 몰랐다. 그때는 그냥 '개발하는 데에 진짜 4 개월 걸렸고, 이 화면(간단한 화면이었다)이 동작할 수 있게 코딩(타이핑)하는 데에 걸린 시간은 반 나절 정도입니다.' 라고 대답했다. 나도 대답하면서 '이건 아닌데...'라는 생각이 들었고, 그 분도 만족스러운 답변을 얻지 못했다.
대부분의 사람들이 개발==코딩 이라고 생각하기에 발생한 일화였던 것 같다.

 

사실 구현(코딩)을 하려면 내가 뭘 만들고 싶은지 알고 있어야 한다. 만약 개발자가 요구사항을 잘못 이해하고 그 잘못된 요구사항을 완벽하게 구현했다면, (고객 입장에서) 그건 제대로 된 개발이라고 할 수 없을 것이다.

방향(요구사항 분석)이 잘못 되었는데, 그 방향으로 전진(코딩)을 하는 게 의미가 없다고 생각된다. 그래서 개발자들은 요구사항 분석과 설계 단계에 최대한 집중하려고 한다(하지만 여러 불가피한 이유로 개발 기간이 단축되곤 하지).
이건 효율성의 문제도 있는데, 잘못된 방향을 향해 전진하다보면 어느 새 가속도가 붙어서 방향을 바꾸는 데에 많은 시간과 노동력이 필요하기 때문이다. 그래도 중간에 방향이 잘못된 것을 눈치채면 다행인데, 최악은 방향을 바꾸기에는 늦은 시점에 누구도 원하지 않는 방향이라는걸 깨닫는 것이다.

 

어쨌든 개발자의 메인 업무에 대해서 아래 포스팅을 작성하였다.
간단하게 요약하자면 요구사항 분석, 설계, 구현, 테스트, 반영, 유지보수 이다. 개발자에게 개발은 이 과정을 일컫는 것이고, 흔히들 생각하는 코딩(타이핑)은 구현 단계만를 의미한다.

https://prohannah.tistory.com/112?category=870131

 

개발자를 존중하는 회사 (feat. 역할별 책임)

흔히들 말한다. "우리는 개발자를 존중합니다. (그러니 오세요.)" 나는 개발자를 존중하는 회사에서 일하고 싶다. 사실 기획자든, PM이든, 디자이너든지 본인의 역할과 그에 따른 책임이 존중되는

prohannah.tistory.com

하지만 개발자의 책임이 '서비스 구현과 유지보수' 뿐이라면 왜 개발자들이 아키텍처 구조와 시스템의 확장성을 고민하고, 주말에 직무 공부를 하겠는가.

 

그럼 진짜 개발자의 임무는?

내가 경험한 개발자 동료들은 단순히 단편적인 요구사항만 충족하는 개발을 하는 사람들이 아니었다.

내가 생각하는 직장인(참된 노예)은 자신에게 할당된 업무를 하는 사람이 아니라, 자신에게 부여된 역할의 책임을 다하기 위해 본인의 기술과 경험으로 조직과 서비스에 기여하는 사람이다.
그렇다면 직장인으로서 개발자의 업무는 이런 게 아닐까?

  • 변화하는 비즈니스 요구사항을 수용할 수 있는 시스템(서비스) 가꾸기 ⇒ 시스템(서비스) 개발
  • 추상적인 비즈니스 요구사항을 구체적인 시스템 요구사항으로 도출 ⇒ 개발자는 동료들(비즈니스)과 시스템(서비스) 사이의 컴파일러이자 커뮤니케이션 채널

이런 추상적인 말 말고 구체적인 개발자의 업무 범위는 뭐냐고 묻는다면...

주변에 본받고 싶은 동료, 팀장, CTO와 대화를 많이 나누거나, 인터넷에서 좋은 글들을 찾아서 읽어보라는 말 밖에는 못하겠다.
다들 지향하는 바가 다르기 때문에, 좋은 개발자와 개발자의 진정한 업무의 범위에 대한 생각도 다를 수 있다. 우선 스스로 지향하는 개발자의 모습을 찾는 게 먼저인 것 같다.그리고 솔직히 모든 이들이 개발자의 할 일이라고 생각하는 그 업무! 그 업무 영역을 잘하기도 쉽지 않다!

어쨌든 다소 추상적인 개발자의 모습을 좀 더 구체화해보겠다.

 

내가 지향하는 개발자의 모습

  • 같이 일하고 싶은 신뢰할 수 있는 동료
  • 팀 전체 혹은 조직의 생산성을 높일 수 있는 사람
  • 현실과 비즈니스에 맞는 적절한 구현을 할 수 있는 사람

일단 내가 여러 동료 분들을 만나면서 그 분들의 장점을 뽑아서 만든 나의 이상향이다. 사실 하나만 잘해도 너무 좋을 것 같고 제대로 하기도 쉽지 않을 것 같지만, 목표는 창대해도 괜찮다!

좋은 개발자가 어떤 개발자인지 정답은 다들 다른 것 같다. 근데 하나 확실한 건 개발을 잘 해야한다는 것이다. 그래서 개발자는 두 가지 방향으로 노력해야한다. 개발을 잘 하기 위한 노력과 본인이 지향하는 개발자가 되기 위한 노력.

 

내 현재 상태

목표를 정했으면 현재 내 상태와의 갭을 확인하는 게 중요하다. 조금씩 무뎌지기는 하지만 확인할 때마다 여전히 절망적이다.

  • 공대를 나왔지만 컴공과가 아니라 전공지식 부족 ⇒ 기초 CS나, 실무를 하면서 듣는 키워드들을 그때 그때 쌓는 중
  • 경력은 많지만 웹 기술 스텍으로 전향한 지 얼마 안되서 모르는거 천지 ⇒ 한 달 ~ 6 개월 단위로 계획 세워서 공부 중 (중간중간 회사 업무가 치고 들어오면 그거 공부하느라 계획이 자주 바뀌긴 함)

 

그래도 요즘 티끌만큼 나아지긴 했다. 보통 아래와 같은 순간들에서 성장했다고 느꼈다.

  • 업무와 관계없이 그냥 기초 CS를 공부했는데, 업무에서 공부했던 키워드나 개념이 나왔을 때
  • 잘못 이해한 것도 몰랐던 업무를 우연히 공부하다가 제대로 이해하게 됐을 때

상태를 점검할 때 개선해야할 사항을 찾는 건 중요하지만, 잘했던 것을 찾는 연습도 중요하다. 안그러면 슬럼프에 빠지기 쉽다. 나는 오랜 시간 제대로 노력하는 것 없이 스트레스만 많이 받고 못난 모습만 찾게 되서 슬럼프에 자주 빠졌다.

개발자로서 무기력하고 회의감이 든다면 공부를 멈추고 잠시 좋아하는 사람들과 편하게 놀고 취미생활을 가지면서 기분전환 하기를 추천한다!
그건 당신이 개발자로서 부족하기 때문이 아니라 목표가 너무 버겁다고 느껴지기 때문일 것이다.
예상보다 늦더라도 언젠가는 목표에 도달할 수 있을 것이다. 응원응원!

 

내가 의식적으로 노력하고 있는 부분

어쨌든 내 목표와 현재 능력치의 갭은 어마무시하다. 하지만 천리 길도 한 걸음부터라고, 티끌을 모으다보면 어느 새 먼지라고 부를 수 있는 크기가 되어있더라.

어쨌든 신뢰할 수 있는 동료가 되려면 최소한 일 하는 데에 방해가 되면 안되잖아요? 개발자에게 코딩이 전부가 아니라고 말했지만, 어쨌든 서비스를 구현하는 데에 있어 핵심 능력이다. 기본 능력도 안되는데 신뢰, 팀의 생산성 향상, 서비스 개선을 운운할 수는 없다. 그래서 개발을 잘 하기 위해 노력하고 있다.

  • 업무 외 시간에 개인적으로 관련 서적을 읽거나 강의를 들으며 지식 쌓기
  • 개발자 유투버 구독 및 개발 지식 공유 카톡방 참여
  • 기술 블로그 운영

 

회사에서 업무를 할 때에는 즐겁게 일하기 위해 노력하는 편이다.

  • 동료들의 장점 찾기
  • 재미와 성취감을 느끼기 위해 비즈니스에 관심을 갖기
  • 협업이나 조직문화에 대해서 불편할 때 마다(ㅎ) 개선할 점 고민하기

나는 특히 좋은 동료들과 함께 일하고 있다는 생각이 들 때 제일 즐거웠다. 그래서 나와 함께 일하는 분들이 얼마나 좋은 사람들이고, 어떤 생각을 하면서 살아가는 지 조심스럽게 알아가고 싶다. 물론 모든 사람들과 맞을 수는 없었다. 그래서 최대한 좋은 사람들이 많은 조직에 가고 싶다.

 

어쨌든 결론

개발자는 가성비가 없는 직업인 것 같다. 다들 그런 노력으로 재태크를 했으면 인생이 달라지지 않았을까?

사실 어떤 직업이든 근로자의 위치에 있다면 가성비가 있을 수 없는 것 같지만... 그래도 개발자의 장점은 본인이 노력하고 실력을 쌓은 만큼 조직에 자신의 가치를 역제안할 수 있다는 것이다.

자본주의 시대에 월급쟁이로 살아가는 우리, 모두 화이팅!

반응형