본문 바로가기
카테고리 없음

DE 학습 로드맵을 바탕으로한 개인적인 피드백

by nothing-error 2022. 10. 22.

DE 학습 로드맵을 바탕으로한 개인적인 피드백

DE학습 피드백

  데이터 엔지니어로의 직무전환을 어느 정도 준비가 됐다고 판단하여 이력서를 계속 넣고 있으나 번번히 서류에서 탈락하는 경우가 많았습니다. 즉, 이력서에 내가 모르는 부족한 부분이 있다는 것을 느껴 어느 부분을 채워야할지 'DE로드맵'으로 구글링을 해봤습니다.  아래 이미지는 DE취업을 위한 유명한 로드맵입니다. 

DE학습 로드맵 출처 : https://github.com/datastacktv/data-engineer-roadmap

  위에서부터 아래로 하나씩 살펴보면서 저의 부족한 부분이 무엇인지 명확하게 알 수 있었습니다. 로드맵에서 언급된 모든 것을 충족하기론 매우 긴 시간이 소모되겠으나 필수적인 내용들 위주로 현재 수준을 체크하면서 되짚어 보겠습니다. 중요도의 경우에는 매우 주관적인 의견이며, 공부시간을 더 많이 할애하거나 집중해서 공부할 것들의 우선순위)

 

부족한 점

1. CS fundamentals(중요도 : 상)

  비전공자이기 때문에 CS에 대해서 전공자와 비교했을 때 부족하다는 것은 당연했고, 직무전환을 준비하면서 최소한의 CS지식에 대한 공부는 했습니다. "혼자공부하는 컴퓨터구조+운영체제" 라는 책을 통해서 1회독을 하였고, "면접을 위한 CS전공지식 노트"라는 책도 1회독을 하였습니다. 여기서 문제는 1회독입니다. 과거 세무사시험을 준비했을 때에도 다회독을 하면서 암기하고 복습하는 과정을 거쳤는데, 전혀 새로운 분야인 DE가 되려는데 고작 1회독으로 만족하려고 했다는 점입니다. 로드맵에서도 알 수 있듯이 가장 상단에 버젓이 CS가 놓여있고, 그렇다는 것은 DE의 가장 필수적이고 기본적인 덕목이 CS 라고 생각해도 무방할텐데  저는 이 기본에 충실하지 못했다는 것입니다. 때문에 다시 복습하는 과정에서 CS지식에 대해서 명확히 정리하기 위한 목적으로 이 블로그를 시작하게 됐습니다.

 

-기본적인 터미널 사용 : O

-자료구조 & 알고리즘 :  프로그래머스 레벨 1 까진 대부분 가능하나 레벨 2의 경우 대략 20~30% 정도 맞춤

- APIS & REST : Fastapi를 학습하면서 어느정도 기초적인 부분은 알고 있으나 명확히 코드에 적용하진 못함

- 정형 비정형데이터 : 정형데이터는 많이 접해봤으나 비정형데이터의 경우 매우 적음

- 리눅스 : 우분투에서 몇몇 프로젝트를 진행하면서 어느 정도 사용해봤으나 그 때마다 구글링으로 통해서 해결해왔고, 전체적으로 사용에 미숙한 부분이 많음

- Git : 팀프로젝트를 하면서 코드충돌도 경험해보고, PR, 코드리뷰 등도 하면서 어느정도 익숙해졌음. 하지만 git flow 적용에 있어서는 부족함을 느낌.

 

 

2. Learn a programming language(중요도 : 중)

  프로그래밍 언어의 경우 파이썬을 3년정도 사용해오다보니 기본 문법에 대해서는 상당히 숙달된 상태이며, 파이썬에 존재하는 다양한 라이브러리에 대해서도 매우 깊지는 않지만 폭넓게 알고 있으며 활용도 가능함. 다만, 알고리즘을 통한 효율적인 코드를 짜는데 목표를 둔 것이 아니었고 기능을 구현하는데 까지만 목표를 두었습니다. 때문에 효율적인 코드인가?에 대해서는 의문이 듬. "이것이 취업을 위한 코딩테스트다" 라는 책을 통해서 기본적인 알고리즘을 습득하면서 최대한 시간복잡도가 낮은 방향으로 나아갈 생각입니다. JAVA 공부는 취업 이후에 공부해도 될듯합니다.

 

3. Testing (중요도 : 하)

pass

 

4. Database fundamental(중요도 : 상)

  Make sure you know SQL very well. 이 문구가 가장 눈에 들어오네요. SQL의 경우에는 mysql를 바탕으로 기본적인 내용들을 대부분 숙지한 상태이며, 다양한 케이스에서의 숙달이 필요할 듯 합니다. Database fundamental과 관련된 부분은 
DAsP 자격증 취득을 목표로 하면서 공부해볼 생각합니다.

 

5. Relational databases(중요도 : 상)

  MySQL과 PostgreSQL 모두 직접 설치하거나 Docker로도 사용해 봤기 때문에 어느정도 익숙하기도 하고 대략적으로 어떤 차이가 있는지 이해합니다. 다만, DE라면 데이터베이스의 종류와 각각의 장단점과 차이점에 대해서 매우 잘 이해하고 있어야하며 어떤 DB를 적용해야 진행하는 서비스나 프로젝트에 적합할지 적절하게 판단할 수 있어야 한다고 생각합니다. 

 

6. Non-relational databases(중요도 : 상)

  비관계형 데이터베이스의 경우는 사실 프로젝트에서도 거의 사용하지 않았다보니(mlops프로젝트에서 모델서빙할 때 redisai 사용해보았으나 그냥 맛만 본 수준) 현재 저에게 가장 필요한 부분 중에 하나로 생각됩니다. 채용공고에서 가장 많이 볼 수 있었던, MongoDB, Elasticsearch, Redis 정도(시간관계상 1개~2개 중에 선택)를 집중적으로 공부하는게 좋아보입니다. 추후 프로젝트를 기획할 때 비정형데이터를 필요로하는 주제로 선정해봐야할 듯 합니다.

 

7. Data warehouses(중요도 : 상)

  이 부분의 경우 대부분 사용해본 적이 없기 때문에 저에게 가장 필요한 경험이 될듯합니다. 마찬가지로 채용공고에서 많이 볼 수 있었던, Redshift, BigQuery를 집중적으로 학습하고 추후 프로젝트를 진행할 때 적용해봐야겠습니다.

 

8. Object storage(중요도 : 하)

  스토리지의 경우에는 Minio라는 무료 스토리지를 사용해봤었는데, S3와 바로 호환이 가능하기 때문이었습니다. 스토리지의 경우에는 어떤 클라우드를 바탕으로 하느냐에 따라서 선택하고 공부하면 될듯합니다. AWS 라면 S3, GCP라면 GCS

 

9. Cluster computing fundamentals(중요도 : 상)

  DE에게 가장 중요한 스킬중에 하나라고 생각합니다. 저의 경우 Hadoop을 사용한 프로젝트는 한 번도 해보지 않았고, 대용량데이터를 처리하는 경험을 하기는 쉽지 않네요. 

 

10. Data processing(중요도 : 상)

  Spark와 Kafka는 취업 전에 꼭 공부해서 프로젝트에 사용해보면 좋을것 같은데, 둘 모두 공부해보기 전이기에 할 말이 없네요. 저에게 필요한 스킬임은 분명해 보입니다.

 

11. Messaging(중요도 : 하)

pass

 

12. Workflow scheduling(중요도 : 중)

  Airflow의 경우에 MLOps 관련 프로젝트를 진행하보면서 살짝 공부해봤었습니다. 설치하고 DAG 만들어서 파이썬으로 짠 각각의 함수들 연결해서 미리 짜놓은 스케줄대로 작동하도록 했었습니다. 사용방법 보다는 세팅하는게 훨씬 까다로웠던 기억이 나네요. 다음 프로젝트 때는 조금 더 수월하게 적용 가능할 듯합니다.

 

13. Monitoring data pipelines(중요도 : 하)

모니터링도 채용공고에 자주 보였던 Prometheus나 Datadog 둘 중에 하나 선택해서 공부하는게 효율적일것 같습니다.

 

14. Networking(중요도 : 상)

  웹개발과 관련된 개인프로젝트를 진행해보면서 네트워크 관련된 부분도 필요한 부분들을 학습하면서 진행했었습니다. 다만 진행중이 프로젝트를 완성하는데 필요한 부분들만 드문드문 익혀서 바로 적용시키다보니 전체적인 네트워크 관련 지식은 부족한 부분이 많습니다. 이 부분도 블로그 포스팅하면서 하나씩 정리해나가면 될듯합니다.

 

15. Infrastructire as Code(중요도 : 중)

  컨테이너의 경우에는 Docker를 사용해봤는데, 아무것도 모를 땐 굳이 Docker를 사용할 필요가 있을까? 라는 생각이었는데, 유튜브에서 Docker강의 한 번 듣고 나니 Docker를 왜 안써? 라는 생각으로 바뀌더라구요. Docker compose도 사용해보긴 했는데 쉽진 않았고, Docker관련해서는 조금 더 공부하면 훨씬 쉽고 빠르게 사용할 수 있을 듯합니다. 또한 Kubernetes의 경우에는 알면 좋겠지만, 취업 준비하는 과정에서 필수까지는 아니라는 생각이 들어서 취업 후에 공부해도 충분할 것같습니다.

 

16. CI/CI(중요도 : 하)

  GitHub Actions 의 경우 MLOps 프로젝트 진행하면서 사용해봤었고, git push 할 경우에 자동으로 docker 빌드하고, docker hub에 업로드하고 다시 당겨서 이미지 생성해서 서버에 적용하는 과정까지 매우 편리했으나, 기존에 잘 만들어진 코드에서 필요한 부분들만 살짝 고쳐서 사용한 정도라 제대로 사용해봤다고 하기는 무리입니다. Jenkins의 경우에는 채용공고에 자주 등장했었기 때문에 한 번 공부해볼 필요는 있을것 같습니다.

 

17. Identiy and access management(중요도 : 하)

pass

 

18. Data security & privacy(중요도 : 하)

pass

 

19. Visualise data(중요도 : 중)

  시각화의 경우에는 데이터분석 프로젝트를 진행하면서 Jupyter Notebook에서 matplotlib, seaborn 등을 통한 시각화나 Tableau를 통해서 EDA 과정에서 종종 사용해보았습니다. 취업 준비중이므로 별도의 시각화 도구는 굳이 필요치 않아보이며 취업후 회사에서 사용하는 툴로 익히면 충분할 듯 합니다.

 

20. Machine Learning fundamentals(중요도 : 하)

  ADsP자격증 공부나, 데이터애널리스트 교육과정 수료하면서 지도, 비지도, 분류, 회귀, 평가지표 등등에 대해서는 어느 정도 공부를 한 상태. 사이킷런의 경우에는 데이터분석 프로젝트 진행하면서 다양하게 사용해봤었기 때문에 상대적으로 경험이 부족한 Tensorflow와 Keras에 집중하면 좋을듯 합니다. 

 

21. Machine Learning Ops (중요도 : 하)

  Mlflow의 경우 MLOps 프로젝트 진행하면서 사용해봤었고, Kubeflow의 경우엔 사용해보지 않았기 때문에 Kubeflow를 사용한 프로젝트를 진행해본다면 둘 중에 비교가 가능할 듯 합니다. 

 

 

결론.

  1. CS전공관련 지식을 쌓고 DB에 대한 깊이있게 공부하기.
  2. kafka, redshift, hdoop, spark등의 기술 익히기

 

 


  새로운 도전은 언제나 두렵습니다. 세무사 자격증 시험 준비를 포기하고 회사에 취업을 한 일. 다니던 회사를 퇴사하고 전혀 다른 직무로의 전환을 준비하는 일. 하지만 두렵다고 아무것도 하지 않는다면 아무것도 아닌 사람이 된다고 믿습니다.  용기를 내고 앞으로 한 걸음 내딛을 때 변화는 시작되고, 그 변화를 지속하는 힘은 끈기입니다. 나 자신을 믿고, 나의 목표에 대한 강한 확신을 갖는다면, 포기하지 않고 계속 앞으로 나아간다면 결국엔 목표한 바를 이룰 수 있다고 생각합니다.

 

Just do it.

댓글