개발자 커리어와 덕목에 관한 이야기

Jun 28, 2019


‘현대 해상 하이웍스센터’ 에서 소.마 10기 2차 워크샵을 진행했다. ‘Smilegate Foundation’ 에서 후원을 하여, 창업 지원에 대한 설명이 있었고, 창업을 한 멘토님과 소.마 5기 수료생 창업 기업인 ‘AB180’ 공동 창업주께서 오셔서, 창업과 개발자에 대한 이야기를 해주셨다. 후에 레크레이션을 진행했고, 컬링을 했는데 재미있었다.


이튿날, 강대명 멘토님의 ‘개발자 커리어 패스’에 대한 강의와 오재철 멘토님의 ‘개발자 덕목’에 대한 강의를 들었다.


1. ‘개발자 커리어 패스’

career_path


커리어 패스


‘어떤 목표로 가기 위한 과정’ 이라고 할 수 있다. 연수생에게 커리어 패스란 무엇일까 라는 말을 하셨고, 예상외로 디자인 공방을 하고 싶다고 답변을 했다. 나중에 디자인 공방을 하기 위한 과정 중에 소.마 과정을 하고 있다고 했다. 그 최종 목표로 가는 과정을 그리는 것이 커리어 패스라고 설명하셨다.


개발자 직군은 매우 다양하다. 만약 브라우저에 ‘https://google.com’ 을 치는 순간 어떤 일이 벌어질 것이냐 라는 질문을 받는다면, 여러 부분으로 설명할 수 있다. 어떤 한 부분에 대해서 깊게 깊게 파고 들 수도 있다. 하지만, 중요한 건 본인의 커리어에 관련 된 부분에 대해서는 설명을 할 수 있는 사람이 되어야 한다.


StackOverflow Driven Developer


‘StackOverFlow’ 에서 모르는 부분을 검색하고, 적용하는 과정을 많은 개발자들이 겪어 왔을 것 이다. 그 과정에서, 단순히 적용하고 되는 것에서 만족하지 말고, 왜 이렇게 동작하게 되는지 알아야 얻는 것이 더 있다. 구체적으로, 예시로 제공된 코드의 일부를 변경해 보면서 어떻게 적용되는지 알면, 해당 코드가 어떤 방식으로 동작하는지 더 알기 쉽고 이해 할 수 있을 것이다.


  • 둘 중에 에러가 나는 코드는 무엇이고, 왜 에러가 나며, 어떤 에러가 발생하는가?
    public static void main(String[] args) {
      System.out.println(1/0);
    }
    
    public static void main(String[] args) {
      System.out.println(1.0/0.0)
    }
    


인간의 기억력은 본 것을 10분이 지나고, 하루가 지나고 하면서 기억력의 거의 70% 까지 잊어버린다고 한다. 모르는 것을 기억하기 위해, 정리하는 과정이 중요하고, 블로그를 활용하는 것을 추천한다. 궁금해서 찾아본 블로그 글을 보다, 본인이 예전에 쓴 글인 것을 보고 놀란 기억이 있다.


여러 회사들의 신입 입사 기준


네이버, 카카오, 우아한 형제들 등 대부분의 IT 기업들에서 알고리즘 테스트를 실시 하고 있다. 개발자는 문제를 해결하는 사람 이라는 기준으로 봤을 때, 알고리즘 평가는 필요할 수 도 있지만, 그리 적합한 테스트는 아니라고 생각한다. 웹 개발자라고 했을 때, 많이 쓰이는 자료구조 같은 것을 보아도 거의 ‘List’ 혹은 ‘Map’ 에서 해결되는 경우가 많다. System 개발자의 경우는 다를 수 도 있다. 그럼에도 현재 알고리즘 테스트가 중요한 이유는, 아마도 최소한의 기준을 만족시키기 위한 것으로 작동한다고 생각한다. 신입들이 경력자들에 비해 알고리즘이 30% 이상 뛰어나다는 이야기가 있지만, 업무적으로 봤을 땐 당연히 해당 분야의 경력이 더 중요한 것이 사실이다.


구글에 입사하기 위한 사람들이 보통 ‘LeetCode’ 라는 알고리즘 사이트에서 400~500 문제를 풀면 합격한다고 한다.



2. 개발자의 덕목

개발자덕목


직장의 시대 vs 직업의 시대


예전에는 무슨 일을 하냐고 물어보면, ‘삼성 다닙니다’, ‘현대 다닙니다’ 등으로 얘기를 많이 했다. 직장이 곧 직업이 되고, 직장이 나를 책임져주는 시대가 있었다. 하지만, 지금의 시대는 다르다. 돈을 잘 버는 사람들을 한번 보자. ‘BTS’, 직장이 있는가? 개인 방송을 하는 크리에이터들은? 다들 직장은 없지만, 어떤 직업을 가지고 있다. 우리는 직업의 시대에 살고 있으며, 개발자라는 전문직의 기술을 구사하는 직업을 가진 사람들이다.


개발은 마라톤


한번에 끝나는 것이 없다. 개발은 끊임없이 진행하는 것이다. 불과 몇년전만 해도 평균 수명이 80세였지만, 100세 시대가 도래하고, 아마 나중에는 140세 시대가 올 것이다. 아직 살날이 많이 남아있다. 어떻게 치고 올라오는 젊은 개발자들과 경쟁하며, 도태 되지 않을 수 있을까.


문서화


정말 중요한 개발자의 덕목이지만, 많은 사람들이 간과하고 있는 부분이다. 공동으로 작업할 수 있는 공간을 만들고, 그 안에서 작업을 하면, 최종본이 여러개 생길 일이 없다. Google Docs 등 클라우드 서비스들이 잘 되어있기 때문에, 그 안에서 문서를 작성하며, 협업을 하고 문제를 해결해 나아가야 한다. 지금은 혼자서는 어떤 걸 만들어 내기 힘들다.

‘File Base’ -> ‘URL Base’ 로 넘어가고 있는 추세이다. GitHub 이 사랑받는 이유는 무엇일까.


코드를 많이 읽어라


‘읽기 좋은 코드가 좋은 코드’ 다 라는 말을 많이 들어봤을 것이다. 맞는 말이다. 하지만 남의 코드를 읽기 정말 쉽지않고 지루한 과정이다. 그럼에도 불구하고, 다이나믹한 실력 향상을 원한다면 코드를 최대한 많이 읽어라.


적어도 단위 테스트


코드가 돌아가는지 적어도 확인은 해야 하지 않겠냐. MSA 개발 이라고 하는 부분에서 API 로 여러 통신을 하는 프로젝트에서 적어도 해당 API 의 결과값이 제대로 나오는 확인하는 테스트는 이루어 져야 한다.


코드 3번씩 짜기


한번에 완벽한 코드를 짜내는 프로젝트는 없다. 첫번째는 해결책이 가능한 방법인지 확인하며 짜게 되고, 두번째는 돌아가게만 짠다. 세번째야 비로소 올바르게 짜는 연습을 하는 것이다.


Fair Programming


꼭 해보라고 말하고 싶다. 시스템 개발자와 프론트 개발자가 페어 프로그래밍이 가능하다고 생각하는가? 신기하게도, 시스템 개발자는 프론트 개발자를 배려하는 코드를 작성하고, 프론트 개발자는 시스템 개발자를 배려하는 코드를 작성한다.


커뮤니케이션


여러분 생각해 봐라, 팀원 중에서도 ‘이 사람이랑 또 프로젝트를 하고 싶다’ 라고 생각이 드는 사람이 있는가? 있다면, 당연히 좋은 거겠고, 없다면….

정말 좋은 개발자는 커뮤니케이션을 잘 하는 개발자이다. 커뮤니케이션을 잘하기 위한 5가지 방법이 있다.

  • 노크의 법칙 : 먼저 다가가라.
  • 거울의 법칙 : 내가 하는 행동과 말은 나를 비춘다.
  • 베품의 법칙 : 옷을 먼저 벗어주고, 먼저 베풀어라.
  • 포기의 법칙 : 나를 좋아하지 않는 사람에게 연연하지 마라.
  • 이중잣대를 버려라.