시간은 정말 빠른 것 같다.
새로운 회사에서 회사가 하려는 일에 맞는 목표에 맞게 공부 방향을 잡다 보니 내가 계획한 부분 대부분이 밀리고 새로운 계획들이 속속들이 생겨났다.
그러다 보니 중구난방으로 여러 기술을 배우고 지식을 습득하는데, 이는 상당히 비효율적인 것 같다. 한 달을 주마다 나누어 첫째 주는 회사 관련 기술을 습득하는데 집중하고, 둘째 주는 내가 나아가려는 방향에 집중하는 게 어떨까?
회사에서 어떠한 기술과 어떤 지식이 필요할지, 내가 나아가려는 방향에 대해 어떤 지식이 필요할지 우선 정리해 본다.
증강현실, AI, 컴퓨터 비전과 같은 지식이 회사에는 필요하다. 현재는 아닐지라도 미래에 필요해질 가능성이 크다.
이 각 분야는 매우 큰 분야이기에 한 분야에만 몰두해도 시간이 모자라다. 그러면 선택을 해야 하는데,
우선 나는 웹 개발자이다. 웹이라는 플랫폼에서 증강현실, UI/UX를 다루기도 하고 백엔드에서는 비즈니스 로직을 설계/작성하고 데이터베이스를 설계한다. 이에 따라 설계 문서, API 문서를 다루는 일도 많고, 즉 문서 정리하는 일도 많다.
그리고 데브옵스 역할도 약간 하는데, 클라우드 환경에서 서버를 구성하거나, 필요한 시스템을 설치하고 개발 환경을 구축하는 일도 한다. 물론 Saas 형태의 서비스도 사용한다. 서버, 네트워크 비용도 예측해야 하고 실제 배포된 애플리케이션의 모니터링도 구축한다.
여기에서 내가 회사에서 필요할 것 같아 준비한 지식은 다음과 같다.
우선 디자이너의 용어를 이해하기 위해 컴퓨터 그래픽 관련해서 약간의 틀을 잡았다. 이 틀은 생각보다 효과가 좋았다.
예를 들어 디자이너가 원하는 요구사항을 말해줄 때 특정 부분을 빠르게 찾을 수 있었기 때문이다.
또한 3D를 웹에서 다루기 위한 기술을 익히고 사용했다. 물론 최적화나 마스터하지는 못했지만 요구사항을 해결하기 위한 여러 방법들을 익힌 것 같다. 예를 들면 shader 기초, 렌더링 파이프라인에서 vertex에 어떤 정보들이 있고 이를 어떻게 활용할 수 있는지, WebGPU가 나오기 전 WebGL이 있고 이를 Three.js가 많은 추상화를 통해 제공하기에 이를 통해 간단하게 웹에서 3D를 표현할 수 있는지, 또한 CSS만으로 3D 공간을 쉽게 만들어 인터랙티브 한 효과를 줄 수 도 있다는 것을 알았다.
만약 내가 웹 개발자로서 회사의 미래 콘텐츠를 개발한다고 가정하면, WebGL 혹은 WebGPU와 컴퓨터 3D에 관한 지식
그리고 XR(AR, VR)과 같은 지식과 이를 웹에서 구현하기 위한 과정을 공부하면 될 것 같다.
더 나아가면 수학, 물리를 다시 보아야 하고 게임 엔진에 대해 알아야 한다. 가끔 게임도 만드는 것 같다. 이때 유니티를 사용한다.
추가적으로 앱으로 많이 배포하는데, 우리는 플러터를 사용한다. 플러터는 플랫폼에 독립적인 클라이언트를 만드는데 매우 좋은 프레임워크다. Dart라는 언어도 매우 익숙한 문법을 가지고 있다고 한다.
정리
- 컴퓨터 그래픽스 이론 및 실습
- 3D 디자이너의 용어
- 프런트 엔드 개발자들이 웹을 최적화하는 방법
- Shader , WebGPU는 js 기반으로 매우 쉬운 문법을 제공한다는데, 이것도 알아보아야 한다.
- Three.js
- XR과 산업 관련된 지식
- 컴퓨터 비전
- 수학 및 물리 (게임에 관련된 것들로)
- Unity 혹은 Unreal
- CSS
- Flutter ( Dart 선행)
다음은 백엔드 개발자에 조금 더 치우치고, 더 나아가 데브옵스, 그리고 소프트웨어 엔지니어에 대한 방향이다.
가정은 매우 잘되는 서비스라고 한다. 즉 대용량 트래픽, 엄청난 네트워크 I/O, 수 억 건의 데이터 누적 등을 가정한다.
설계
소프트웨어 설계, 데이터베이스 설계, 서비스 로직 설계, 서버 아키텍처 설계, 네트워크 설계 여러 분야의 설계 등 매우 다양한 곳까지 나아간다.
이 분야의 지식은 책과 경험이다. 실제 여러 방법론들을 익히고 실무에 적용하는 것이 가장 이해가 잘된다. 하지만 이는 대기업에서만 가능해서 경험은 채우기 어려울 수 있다. 이를 익히고 우리 회사 서비스가 성장되었을 때 생각나야 한다.
가장 중요하고 가장 어려운 부분이 아닐까 싶다. 이 부분은 시간과 노력으로 메꾼다.
기술 스택
시니어 개발자들은 특정 기술 스택보다는 한 가지를 정통하고 그 기반으로 새롭게 지식을 쌓는 것 같다.
하지만 주니어의 현실은 우선 프레임워크의 사용법, 여러 언어의 문법, 기술 등과 같이 빠르게 발전하는 기술을 배우기도 급급하다. 이게 중요하지 않은 건 아는데, 막상 일은 해야 돼서 기술 스택에 치중되는 것이 아닐까?
그래서 나는 역으로 기술 스택을 최대한 많이 다양하게 사용하고 있고 사용할 것이다. 그리고 기술 스택을 사용하다 보면 반드시 목적이 있는데, 그 목적을 찾고 정리를 한다. 그리고 이를 구현하기 위해 어떤 개념이 사용되었는지 확인하는 과정만 거친다.
예를 들어 Docker라는 스택을 사용한다고 하자. 목적이 뭐지? 독립된 성능 좋은 컨테이너를 사용하고 싶은 것이다. 어떻게 만들어졌지? 리눅스 커널 기술을 사용했지만 지금은 도커 자체 엔진을 쓰는구나, 무슨 커널 기술이지? 아 독립된 공간으로 나누고 해당 공간마다 자원을 할당하는구나, 이러면 별도의 OS를 올리지 않아도 컨테이너화가 가능하구나?
등과 같은 질의의 연속이다.
그리고 사실 Java, Spring을 주로 하는데, 사실 모르겠다. node.js를 사용했을 때 그 매력은 또 다르고 파이썬으로 구축했을 때 그 편리함 또 다르더라...
스타트업 공고를 보면 생각보다 Node.js 및 Python을 요구하는 경우가 많았는데, 확실히 다양한 일을 할 수 있고, 매우 빠른 시간에 가볍게 시작할 수 있다는 장점에 이를 많이 채택한 것이 아닌가 싶다.
OS
윈도에 대해 잘 아냐고 물어보면 나는 못한다고 대답한다. 즉 윈도 기반으로 무언갈 하지만 윈도우 OS의 여러 기능은 사용하지 못하고 있는 것이다.
리눅스에 대해서도 부족하다. 그 이유는 하는 것만 하니까 다른 무언갈 해보지 않는 것이다.
이는 자격증과 강의로 여러 기능을 집에서 실습해 보자. 내 컴퓨터 고장 나도 좋으니까 내게 맞는 방법, 쉬운 방법을 찾고 공유해 보자.
알고리즘, 자료구조
사실 가장 큰 걱정이다. 실제 알고리즘을 개발 및 연구를 하는 사람이 아니라면 이를 매우 자주 접하지 않는다.
이를 공부한다면 목표는 한 가지겠지..
그러면 내가 못하는 C계열 언어로 이를 공부해 보자. 일석이조네 고통도 두 배겠지만
나만의 공부법을 찾기 전까지는 자료구조를 만들어보고 실제 알고리즘 문제를 푸는 것을 반복한다.
클라우드, 네트워크, 보안
이 셋을 묶은 건 뗄 수 없다고 생각해서고 가장 중요한 부분이기도 하다.
결국 배포되는 공간, 사용자가 접속하는 공간, 회사의 자산이 저장된 공간이기 때문인데, 나는 중소기업 및 심지어 중견, 스타트업에서 보안을 신경 쓰는 걸 본 적이 없다..
그래서 클라우드로 보안을 챙기고 네트워크도 손쉽게 클라우드에 맡겨서 서비스를 개발하고 맡기는 게 최선이라고 생각하지만 실제 이 분야에 대해 잘 모르는 경우 돈 아낀다고 예전에 있던 온프레미스 서버들로 만들거나 있는 클라우드 서비스 다시 만들다가 보안 빵 꾸나고.. 시간에 쫓겨 소홀해지는 경우를 많이 봤는데 이를 내가 혼자 구축해도 어느 정도 퀄리티가 보장되도록 공부하고, 실제 다양한 클라우드 교육을 들으면서 ( 영상 많고 AWS에서도 제공해 주더라) 준비한다.
정리
- 설계, 패턴.. etc
- 기술 스택 (언어 포함)
- OS ( 컴공 지식 포함)
- 알고리즘, 자료구조
- 클라우드, 네트워크, 보안
- 방통대
사실 매우 간단하게 줄였지만 너무 넓은 범위에 지식인 것 같기도 하다.
공평하게 나누려 했지만 내가 관심 있는 분야를 공부하는 게 더 내 인생에 행복하지 않을까?
만약 내가 한 달을 계획한다면 다음과 같이 정리해 본다.
아침에 일어나 근력 운동을 한다. 허리의 힘이 없으면 오래 앉아있을 때 자세가 나빠진다.
출근시간은 약 1시간이고 버스에서는 내가 원하는 책을 읽는다.
출근 보통 1시간 정도 일찍 하는 편인데, 그 시간에 나는 여러 기술 블로그나 surfit과 같은 곳에서 몇몇 글을 읽는다.
일~
퇴근 시간 버스에서도 마찬가지로 책을 읽는다.
집에 도착해서 공부하는데 이것은 분기된다.
만약 첫째 주라면 나는 OS에 관련된 지식을 공부하고 실습하여 정리한다.
만약 둘째 주라면 나는 회사관련된 섹션 하나를 정하고 공부한다.
만약 셋째 주라면 나는 내가 사용하는 기술 스택과 만약 회사에 적용하면 좋을 것들을 정리하고 공부한다.
만약 넷째 주라면 나는 방통대를 예습한다.(분명 시간이 남는다)
주말에 클라우드, 네트워크( 이는 책으로), 보안 이 셋을 묶어 공부하고 실습하거나 알고리즘 자료구조를 내가 사용해보지 않은 언어로 자료구조를 만들어보고 알고리즘 문제를 풀어본다.
주 단위가 더 일찍 사이클이 도면 다시 첫 번째 주부터 반복한다.
'방향성' 카테고리의 다른 글
4월 말 정리 (0) | 2023.04.23 |
---|---|
AWS Summit Seoul (0) | 2023.04.17 |
영상 (1) (0) | 2023.04.03 |
현재 진행 상황을 정리하자. (0) | 2023.03.29 |
2월 중순 정리. (0) | 2023.02.18 |
댓글