2019년, 내가 모르는 것들

2019-03-27

얼마 전 Dan Abramov의 글 Things I don’t know as of 2018을 보고 겸손해지자는 생각과 함께,

내가 모르는 것들을 리스트하는 작업이 앞으로 어떤 것들을 배워야 하는지 아는 데 도움이 될 것 같다는 생각이 들었습니다.

그래서 저도 작성해봤습니다.


2019년, 내가 모르는 것들

  • 데이터베이스

    MySQL에서, 테이블을 만들고 CRUD를 할 수 있지만, 인덱스나 왜래키가 무엇인지, 어떻게 작동하는지 잘 모릅니다. 또한 테이블 설계를 어떻게 해야하는지 잘 모릅니다. MongoDB나 Redis도 써보고 싶다는 생각은 드는데, 배워본 적은 없습니다.

  • 프론트엔드 자바스크립트

    html과 webpack, es6 등을 활용해서 웹페이지를 띄울 수 있긴 하지만 html이나 javascript를 제대로 배워본 적은 없습니다. 또한 React를 조금 배워보기는 했지만 특정 프레임워크를 제대로 사용해서 실제 프로젝트를 만들어 본 적은 없습니다.

  • CSS/SCSS

    야매로 조금 써본 것 외에는 제대로 공부한 적이 없습니다.

  • 백엔드

    Express를 사용해서 API 서버를 만들어 본 경험이 있습니다. ORM이나 로그 시스템을 구축해본 적은 없습니다.

  • 빅데이터

    빅데이터에 관심이 있어서 관련된 기술을 찾아보기는 했지만, Hadoop, Spark, ELK Stack, Kafka 등 이름만 알고 있는 수준입니다.

  • 파이썬

    파이썬을 스크립트를 만드는 데에 사용하고 있긴 하지만, 파이썬을 제대로 배워본 적이 없습니다. lambda식을 활용하는 것도 익숙하지 않고, 가끔은 자바스크립트와 혼동해서 destructuring을 하려고 하기도 합니다. 어떤 코드를 여러 줄에 걸쳐서 작성하고 싶은데 방법을 몰라서 그냥 한 줄에 다 이어서 쓴 적이 있습니다. 코딩스타일도 어떻게 하는게 좋은지 잘 모르겠습니다.

  • 네트워크 스택

    OSI 7계층이나 IP의 유형, MAC address가 무엇인지 정도는 알지만, 소켓 통신이 무엇인지도 모르고, 네트워크 패킷을 분석해본 적도 없습니다.

  • Docker

    써본 적은 있습니다만, 어떤 상황에서 활용해야 하는지 잘 모르겠습니다.

  • DevOps

    CI/CD 파이프라인을 만들어보거나 클라우드 상에 인스턴스를 띄워본 적은 있습니다. 그렇지만 애초에 DevOps라는 단어가 뭘 의미하는지 잘 모르겠습니다.

  • 유닉스 시스템과 명령어

    ls, cd, rm 등 기본적인 명령어나, inode, permission 등 유닉스 시스템의 기본적인 개념은 알고있지만 bash를 활용하는 방법이나 커널 수준의 지식은 전무합니다. 쉘 프로그래밍도 잘 모릅니다.

  • Vim

    Vim을 활용해보려고 최근에는 많이 사용하고 있긴 하지만, 간단한 이동, 편집, 삭제 정도만 할 줄 알고 플러그인이나 .vimrc의 설정을 직접 건드려본 적은 없습니다. 조금 더 익숙해지고 나면 자동 완성 기능이나 visual 모드 활용방법에 대해서 알아보고 싶습니다.

  • 자료구조/알고리즘

    간단한 큐, 스택, 트리같은 건 구현하고 사용할 수 있지만 머클 트리나 DB같은 곳에서 사용되는 자료구조들은 들어만 봤을 뿐 무엇인지는 정확히 알지 못합니다. 버블 정렬이나 이진 탐색, DFS나 BFS 정도는 구현할 수 있습니다. 그렇지만 다익스트라같은 그래프 탐색은 자신이 없습니다. 시간복잡도의 개념은 알지만 실제 개발할 때 크게 신경써서 개발해본 적은 없습니다.

  • 안드로이드

    오랜 시간 안드로이드를 개발했지만, 놀라울 정도로 모르는 것들이 많습니다. 카메라, 가속도 센서 등을 활용해본 적이 없습니다. 4개의 주요 컴포넌트들 중 액티비티 말고는 사실 그닥 써본 경험이 없습니다. 프로세스 관리 역시 해본 적이 없습니다. 그 외에 최근에 릴리즈되고 있는 Jetpack, AndroidX와 같은 것들 역시 모릅니다.


이렇게 모르는 것들이 많은데도 무언가를 개발하고 있다는 것이 참 신기하네요.