실력 있는 개발자가 되고 싶다면? Back To Basics

Seunglak Choi
네이버 플레이스 개발 블로그
4 min readFeb 20, 2022

--

소프트웨어가 혁신을 주도하고 있습니다. 새로운 산업을 만들고 기존 산업을 변혁하고 있습니다. 소프트웨어 개발자를 꿈꾸는 분들이 많습니다. 이 글이 도움이 되면 좋겠습니다.

네이버 광고 플랫폼 개발을 리드하고 계신 윤종호님의 글로 시작하겠습니다.

“작금의 기술생태계는 변화가 빠르기 때문에, 의욕만 앞서 귀납적으로 모두 다 경험해보겠다는 태도는 그다지 효율적인 접근 방법이 아닙니다. 이럴수록 기본기에 충실해야 지만, 새로운 기술 흐름에 압도되지 않고, 스스로의 방향성과 페이스로 앞으로 나아 갈수 있습니다.

FE, BE, 데이터와 관련하여 하루가 멀다하고 새로운 구현체들이 온갖 미사여구로 무장하여, 공부하지 않으면 마치 도태될것 같은 느낌을 줄텐데, 이들 기저의 구현철학과 원리를 이해하고, 우리가 사용하려는 응용의 특성에 맞게 잘 활용할수 있는 연역적인 혜안을 갖추는 것이 바로 기술 기본기라고 생각합니다.

더불어 이들 기술 기본기는 명멸하는 구현체들에 비해, 그렇게 빠른 속도로 변화하지는 않고 축적되기 때문에, 효율성차원에서라도 먼저 우선순위를 가지고 투자할 가치가 있다고 생각합니다.”

새로운 기술을 빠르게 학습하고 제대로 활용하려면 전산 기초가 중요

예 1. Functional Language 기초를 알면 쉽게 이해되는 것들

  • 왜 React Hooks은 class를 없애고 function 만 사용하지?
  • 요새 새로 나온 언어들은 모두 Higher-Order Function 개념이 있던 무슨 얘기야? Closure는 뭐야?
  • Redux의 Reducer를 Pure Function으로 작성하라는데 이게 뭐야? 왜 그렇게 작성해야 해?
  • Swift의 ‘struct’가 immutable하다는데 무슨 얘기야? 왜 그래야 해?

예 2. OS 기초를 알면 쉽게 이해되는 것들

  • 왜 Nginx가 Apache 보다 성능이 좋아?
  • Node.js 프로세스를 core 개수만큼 실행시키는 이유가 뭐야?
  • PostgreSQL은 왜 multi-process로 만든거야?
  • 장애 시 CPU Load가 튀었네. 이유가 뭐지? Swap memory는 왜 늘어나는거야?

예 3. DB 기초를 알면 쉽게 이해되는 것들

  • like 연산자는 왜 이렇게 느려?
  • Parquet, Kudu가 columnar storage라는데 왜 그렇게 해?
  • PreparedStatement를 어떨때 사용해야 해?
  • mongodb는 어떤 경우에 사용해야 해? normalization vs. denormalization, scale-out vs. consistency
  • 데이터가 깨지는 경우가 있는데 원인이 뭐지? Isolation level

전산 기초를 탄탄히 하는 방법 1. Bottom-Up

  1. 항상 “왜?” 질문을 한다.
  • React Hooks이 class을 없애고 function만 사용하는 이유가 뭘까?

2. 검색을 해 보자. Medium, StackOverflow 등에 좋은 글들이 많다.

3. 그래도 이해가 안 간다면 Top-down으로 공부해야 한다.

전산 기초를 탄탄히 하는 방법 2. Top-down

Bottom-Up 방식으로의 이해가 어렵거나 비전공자라 체계적 학습이 필요하다면 이 방법이 좋을 수 있다. 각 분야의 유명한 교과서들을 독파하는 것이다.

교과서가 좋은 이유는 이해가 쉽고 정리가 체계적으로 되어 있다.

어떤 책을 읽을 것인가? 대학교 때 공부했던 그 책을 다시 읽어도 좋다. 새로운 책을 찾고 싶다면,

  • Amazon에서 찾는다. 가령 운영 체제라면 ‘operating system’ 이라고 검색.
  • Edition 숫자가 높을수록 오랫동안 사랑 받아온 책이다.

몇 개의 책을 추천하자면,

요새는 높은 수준의 온라인 강좌가 많다. 유명 대학교 교수가 가르킨다.

--

--