월간 리딩 - 2019년 7월

요즘 너무 기억할 게 많아져서 기록하고 정리하는 습관을 연습하고 있는데, 매월 말에 그달에 읽은 글들을 정리하고 짤막하게 코멘트를 달아보려고 한다.
사실은 Ethan 블로그의 Monthly Reading 따라하기.

뛰어난 개발자는 뽑히는 게 아니라 길러집니다

Great developers are raised, not hired

얼마 전 충격적인 소식을 들었는데, 대학교 입시결과(입결)에서 컴퓨터 관련 학과가 의치한(의예/치의예/한의학) 다음이 되었다고 한다. 전화기생(전기전자/화학/기계/생명)이 밀려났다기 보다는 컴퓨터 관련 학과의 인기가 급상승한 탓일 것이다. 코딩 열풍은 식을줄을 모르고 개발 인력은 쏟아져 나오는데 회사들은 맨날 좋은 개발자가 없다고 노래를 한다. 그 많은 개발자들은 어디로 갔나. 모두가 뛰어난 개발자만 찾기만 하지 길러낼 생각을 하기는 쉽지 않다. 일은 항상 바쁘고 일손은 모자라기 때문인데, 그러면 뛰어난 개발자는 누가 길러낼 수 있을까. 최근 회사에서 채용 프로세스를 적극적으로 진행하고 있는데, 우리가 가진 자원을 제대로 활용하고 있는지 돌아보고, 집중적으로 살펴봐야 할 역량에 대해서 다시 한번 생각해보게 된 글.

Redis SKIP List of ZSETS (SORTED SETS)

이번에 코딩 인터뷰 문제를 내다가 ethan의 추천으로 보게된 글. Skip List가 풀고자 하는 문제를 잘 풀고 있다는 점에 한번 놀라고, 이런 좋은 문서가 한국어로 있다는 점에 또 한번 놀랐다. 홈페이지에 다른 글들도 읽어보면서 바쁘다는 핑계로 영혼없이 갖다 쓰던 레디스의 인터널을 더 깊게 들여다보면 좋을 듯.

Tech야,놀자 준비 후기

지금 일하고 있는 베이글코드에서 다음주에 있을 PyCon KR 2019에 스폰서로 참여하게 되었다. 회사 개발조직이 이름을 걸고 공개적으로 활동하고 있는 것은 처음이기 때문에 준비하는 내내 첫 단추를 잘 꿰어야 한다는 부담이 컸다. 준비하는 과정에서 여러가지 우여곡절을 겪고 나니, 이 글의 첫 문장처럼 행사 준비는 아무나 하는 게 아니라는 것이 정말 크게 와닿았다.

소프트웨어 환멸감

Software Disenchantment

최근 개발자들 사이에서 크게 회자되며 논란을 일으킨 글이다. 엔지니어링의 관점에서 오늘날 과도하게 비대해져 효율성과 본질을 잃어버린 IT 산업 전반을 비판하는 글이다.

논란의 크기만큼 말을 좀 길게 덧붙여 보자면, 글의 전반적인 논지에는 동의하지만, 과정을 소거하고 비대해진 것 만을 보기에는 조금 무리가 있다는 생각이다(글 역시 과정을 소거한 채 비판하는 것은 아니다). 소프트웨어들이 비대해진 것은 컴퓨팅 성능에 발전에 따라 아무 생각없이 코딩하고 넘어가는 것도 당연히 있겠지만, 비즈니스의 니즈에 맞추어 발전하면서 그렇게 된 것이 더 크다고 생각한다. 니즈에 맞추어 제품과 기술을 발전시키다 보면 기능이 많아지고 비대해지는데, 이때 주기적으로 기술부채를 해결하며 나아가야 하는데 또 막상 그렇게 하기란 쉽지 않다.

글쓴이는 느려진 구글 인박스, 비대해진 윈도우, iOS, 안드로이드 등을 예로 들었는데 구글에서 이미지 검색으로 2~3년 전 그 제품들의 스크린샷만 찾아봐도 얼마나 촌스러운지를 알 수 있다. 기업들의 욕심 때문에 덕지덕지 붙은 기능을 차치하더라도, 사용성과 미려함이 더해진 것은 절대 무시할 수 없는 측면이다. 사용자와 비즈니스의 니즈에 부합하지 못한 엔지니어링만을 위한 엔지니어링은 시장에서 얼마나 많이 사장됐는지 항상 생각해볼 필요가 있다.

그럼에도 한편으로는, 글쓴이가 지적하는 엔지니어링의 본질은 모두가 한번씩 돌아볼 필요는 있는 것 같다. 우리는 향상된 컴퓨팅 파워와 다른 사람들이 만들어 놓은 것을 갖다 쓰는데 너무 익숙해지고 있다.

3년 전 고작 48줄짜리 라이브러리인 left-pad 때문에 발생했던 npm 대혼란 사태를 돌이켜보자. 수많은 의존성과 복잡한 빌드 파이프라인이 기본이 된 웹 프론트엔드 개발 프로세스를 생각해보자. 얼마 전 웹서버를 개발하는 프로젝트를 진행하는 팀이 있었는데, 몇일동안 웹서버를 설계는 뒤로 하고 프로그래밍 환경 세팅과 CI/CD 구축만 하고 있던 것을 보았다. 당연히 프로젝트는 지지부진했고 팀은 공중분해 되어서 흔적도 없이 사라졌다.

쓰다 보니 길어졌는데, 항상 엔지니어링과 비즈니스의 균형을 잘 맞추는 것이 중요하지만 쉽지 않다는 것을 느끼게 된다.

소프트웨어 엔지니어링이 현재의 최신 기술에 머무르는 것이 아니라 향상되는 것을 바랍니다.