왜 구글 시니어 개발자는 코딩을 안할까(이다니엘) - 인프콘 2023

2023. 12. 15. 15:30개인노트

반응형

2023 인프콘에서 해당 세션으로 발표를 하던 걸 뒤늦게 나마 조금씩 보고서 글을 작성해본다.
왜 구글 시니어 개발자는 코딩을 안할까(이다니엘) - 인프콘 2023 의 발표 세션을 보고 작성한 글이다.

 

우리나라도 그렇고 외국도 그렇고 연차가 높아 질 수록 보통 실질적으로 코드를 만지는 코딩에서 멀어지는 것 같다는 걸 많이 느꼈다.

발표를 하던 분도 비슷한 이야기를 하셨다.
구글에 다닐 때 시니어 개발자들에게 질문을 다음과 같이 한다면

어떤 언어를 많이 쓰세요? —> 영어를 제일 많이 쓴다던가.
어떤 툴을 가장 많이 쓰세요? —> 구글 Docs를 제일 많이 쓴다
와 같은 대답을 들었다고 하였다.

여기서 드는 의문은…?

연차가 높은사람이 연봉이나 급여가 제일 높을텐데 왜 코딩을 안하게 되는 것일까?
좀 더 근본적으로 다가갔을때 바라본 개발자란 무엇일까?

영어상으로는 다음과 같이 나눌 수 있다.
프로그래머(programmer)
디벨로퍼(developer)
소프트웨어 엔지니어(software enginee)
그리고 영어권에서는 사람을 구인하거나 직종을 표현할 때 software enginee 라는 말을 가장 많이 사용한다고 한다.
구글상에서 검색해 봤을때는 컴퓨터 소프트웨어의 설계, 개발, 유지 보수, 테스트, 평가를 하는 사람을 말한다

 

결국은 개발자란 코딩과 시간과 사람을 합쳤을때 나오는 일을 하는 사람 이라고 표현한다.

  1. 버전 관리
  2. 코드 리뷰
  3. 코드 공유
  4. 린터,포맷터 를 사용한 컨벤션 지정

등등 모든 일들은 결국 코딩의 일부분이라고 볼 수 있다는 것.
위에 언급한 여러가지 것들을 모아서 소프트웨어를 지켜내는 일을 하는 것이 개발자 라는 것.

 

 

개발이란…

개발 = 코딩 + 시간 + 사람

연차가 낮을 때는 코딩에 시간을 많이 쓴다
연차가 높아 질 수록 시간과 사람에 많은 투자를 한다.
그렇다면 시니어 개발자는 무엇을 할까?

시니어 개발자로써만 바라 볼 게 아니라 결국 직장인이란 무엇을 할까????

일반적인 직장인은 조직의 아웃풋(output) 기여를 해야한다.
그건 실질적인 영업이익 이나 매출이 될 수도 있고, 성과 지표상에서 측정되는 무언가 일 수도 있다.

주니어 개발자 로써는…….?
개발조직의 아웃풋(output)에 기여를 해야한다.
업무상의 비즈니스 로직 개발을 기한 내에 마치는 형태로도 볼 수 있을 것 같다.

그렇다면 시니어개발자는……….??
개발조직의 전체 아웃풋(output )에 기여를 해야한다고 한다.

2023년 인프콘에서는 3가지 키워드를 가지고 이야기를 해 주었다.

  • 곱빼기 코딩
  • 진명
  • 정원사

#1 곱빼기 코딩

주니어 개발자 일 때 처럼 나 하나만의 업무를 해결하고 완료하는게 아니라. 개인의 기여보다 개발조직에 조금씩 더 투자하여 기여하게 되면 개발조직의 측면에서 볼 때는 전체적인 아웃풋(output)이 늘어나는 경우 사람 수 만큼 곱해서 늘어 났다고 볼 수 있다….!

대표적인 부분으로는 다음과 같이 접근 할 수도 있다.

  • 리팩토링
    • 리팩토링을 통한 개발적인 레거시 코드화 되는 부분을 막아준다던가.
  • 테스트 코드
    • 테스트 코드에 대해 작성 또는 방향을 지정하여 테스트 코드를 작성하는 문화를 정착시켜서 전체적인 개발팀의 방향을 잡아 줄 수도 있다.
  • 실수예방을 위한 컨벤션을 지정
    • 개발이외의 문제가 발생 할 수 있는 부분들을 룰(Role)로써 지정함으로써 실수가 발생 할 수 있는 부분들에 대해서 컨트롤함으로써 생산성을 늘릴 수 있다.
  • 새로운 기능이 개발 된 경우 A/B 테스트를 지원하는 방법을 잡아준다던가… 모듈화에 도움을 주는 등 다양하게 지원해 줄 수 있다.

만약 완전 새로운 기술이라 잘 모르더라도 전체적인 방향성을 잡아주고 더 괜찮은 방법으로 이끌어 가는 것.

또한, 아웃풋(output)에 기여하는 방법 중 하나라고 볼 수 있기도 하다.

#2 진명 키워드 로써 말하는 시니어 개발자란?

기술적 문제나 비즈니스 문제의 실질적으로 가능한 것 인지.

또는 그 방향으로 가는게 맞는지 등을 정말 필요한건지에 대해서 접근하고 설명 할 수 있는 사람이다.(실질적으로 해결하고자 하는 방향을 잡아주는 역할에 대해서 말하는 것 같다.)

 

다음과 같이 말도 안되는 예시를 줄 수 있을 것 같다.

PM이 비즈니스 적으로 우리는 이런게 필요해요 라고 하면서 들고온다.

  • 회사 내부에 아침마다 여기저기 움직이면서 시간을 알려주는게 있었으면 좋겠어요..
  • 아침의 특정 시간에는 알람이 울릴 거구요.
  • 어디로든 움직일 수 있구요.


여러가지 거창하게 설명을 하고 대략적인 모습과 어떤 행위를 할 것인지에 대해서 알려준다.

주니어 개발자로써 바라본 요구사항

  • 저걸 어떻게 구현해야하지?
  • 탁상형 알림시계인것 같은데 어디로든 움직일 수가 있나?
  • 뭘 원하는 거지?
  • 이게 맞나?

시니어 개발자가 듣고 가져다준 해결책은?

  • 그 부분은 기술적으로 해결이 어려울 것 같구요.
  • 대신 을 한마리 사무실에 두겠습니다.

 

위의 예시는 엄청 뜬금 없어 보이지만…

실질적으로 업무요청이 들어왔을때 시니어 개발자는 대략적인 방향을 잡거나 그 방향이 맞는지 등에 대한 판단을 하는 주체가 되는 경우가 많다.

다음과 같은 일화도 비슷한 개념으로 볼 수 있다.

거울 없는 엘리베이터를 타본 적 있으신가요? 
엘리베이터 안에 거울이 없으면 왜인지 모르게 허전하고 올라가는 길이 지루하게 느껴지는데요. 엘리베이터를 처음 만들었을 때에는 거울이 없었답니다. 계단을 오르내리지 않아도 되는 것이 너무나 편리했기 때문에 사람들은 아무도 신경을 쓰지 않았지만 시간이 점차 지나며 엘리베이터에 익숙해지자 사람들은 불만을 이야기하기 시작했습니다.
 속도가 너무 느리다는 것이었죠. 
이런 불만은 미국의 한 여성 관리인의 아이디어 하나로 해결할 수 있었는데요.

바로, 거울을 설치하는 것이었습니다. 
엘리베이터 안에 거울을 설치하자 사람들은 거울 속에 비친 자신의 모습을 보면서 지금 몇층을 올라가고 있는지 보다는 자신의 모습에 관심이 쏠리게 된 것입니다. 이처럼 엘리베이터 속 거울은 느리게 느껴질 수 있는 시간을 단축하는 역할을 하고 있답니다.

 

만약 내가 엘리베이터를 개발하는 회사에 있었고 PM이 저런 문제를 들고 올 수 있다.
엘리베이터가 너무 느려서 지루하다고 합니다..! 속도를 빠르게 안될까요? 와 같은것이다.

 

#3 정원사로써의 시니어 개발자.

개발팀의 문화를 가꾸는 사람이다.

그 방법으로는 멘토링이 될 수도 있다.
아니면 코드리뷰가 될 수 있고 팀내에서 인터뷰를 하면서 팀을 키워 갈 수도 있다.

거기서 더 나아가면 다음과 같이 방향을 잡을 수 있다.
직접 멘토링 팀을 운영하여 회사에 멘토링이 자리잡도록 방향성을 제시 한다던가….
코드리뷰를 어떻게 하면 좋을 지에 대한 자리를 교육자리를 마련 하게 될 수도 있다.
위와 같이 개발자가 자라기 좋은 환경을 만들어가는게 시니어 개발자들의 역할 중 하나로 볼 수 있다.

그리고 구글에서는 위와 같이 기여하는 부분들을 취합하여 승진이나 성과를 판단하는 지표 중 하나로써 사용한다고 한다.

 

#4 그리고 어디에서 무엇을 하던지…!

결국 어디에서 무엇을 하던지 업무는 조금씩 바뀔 수 있다.

비즈니스적인 코딩을 할 수도 있고… 나 처럼 갑자기 인프라쪽 환경을 구성한다던가 CI/CD 쪽을 건드려 본다던가 여러가지를 하도록 일이 주어 질 수도 있다.

결국 시니어 개발자가 된다는것은…?

개발자로써 다른사람이 일 하기 좋은 환경을 만들어 줄 수 있는 사람이 되어가는 것 이라고 보면 될 것 같다. 아직은 멀었지만 언젠가는 그렇게 되겠지..!

 

반응형