Search
Duplicate

토스 Server Developer (Internal Product) 사전 과제 진행 후 느낀점

Skill Set 부족

결론부터 말하면 django framework에 대한 이해 부족과 database 설계 능력의 부족으로 인해 과제를 중도 포기하였습니다. 서버 직군을 지원했는데 단지 과거의 지식과 구글링만을 믿고 과제에 임했던 것이 가장 큰 문제점이었습니다. 이번 과제에서 느낀 점은, 기업에서 요구하는 역량은 실제로 회사 내에서 일어날 법한 사건을 해결할 수 있는지에 대한 것이 아니었나 생각이 듭니다. 실제로 제가 한 회사에서 프리랜서로 일한 경험이 있는데, 그 회사에서 요구했던 부분과 이번 사전 과제에서 비슷한 느낌을 받았습니다. 확실히 학교 수업만을 듣고 개인 프로젝트를 하나도 하지 않은 채로 졸업한 사람들은 실무와 비슷한 과제를 통과하기 어렵지 않을까 라는 생각이 들었습니다. docker를 아예 모르면 과제를 시작조차 할 수 없었고, django framework에 대한 확실한 이해가 있어야 db를 설계하고 코드로 녹여낼 수 있었습니다.
django
django를 동아리에서 사용했던 경험이 있기 때문에 MVC패턴에 대한 전반적인 이해는 있었으나 세부적인 부분이 부족했습니다. 예를 들면, migrate 역할에 대해 정확히 알고 있지 않았습니다. migrate를 했지만 DB Browser for SQLite를 통해 db파일을 열면 models.py에서 만들어 놓은 모델들이 정상적으로 올라가지 않는 현상이 발생했습니다.
이를 해결하기 위해 직접 테이블을 생성했으나 Django는 그것을 알지 못했기 때문에 admin 페이지에서 데이터를 추가하려 하면 테이블이 존재하지 않는다는 오류가 발생했습니다. 그래서 migrate를 init 파일을 제외하고 모두 제거함으로써 해결했습니다. git과 비슷하게 기록들이 꼬여버리면 손댈 수 없을 정도로 굉장히 복잡해 졌습니다.
docker
docker를 왜 사용하는 지는 알았지만 어떻게 사용하는지는 몰랐습니다. Dockerfile과 docker-compose.yml를 통해 컨테이너 환경을 로컬에 적용시킬 것이라는 것을 직감적으로 알았으나 docker가 설치되어 있지 않아서 brew를 통해 설치했으나 시간이 오래걸렸습니다.
참고로 Dockerfile에는 sql문 같은 명령어가 적혀 있었으며 이해하기 쉬운 구문들이 있었고, docker-compose.yml에는 version과 어떤 파일을 실행시킬 것인지에 대한 정보들이 적혀있었습니다.

앞으로 신경써야 할 부분

데이터 베이스 설계 경험 필요성
서버 직군으로 지원할 것이라면 데이터베이스 설계에 대한 경험이 꼭 필요하다고 느꼈습니다. 이번 과제에서는 RDB를 사용했습니다. 서브 문제들이 주어졌는데 각 문제 마다 테이블을 구상해서 구현해야했고, 모든 문제들을 해결하고 나면 테이블들의 내용을 합쳐서 사용자에게 response 하는 작업을 수행해야 했습니다. 관계형 데이터베이스를 구상해 본적은 있었지만 효율적으로 설계하려는 노력은 없었던 것 같았습니다. 프로젝트를 통해 경험해 볼 생각입니다.
간단한 프로젝트를 제대로 해보기
이번 사전 과제는 시간이 많았기 때문에 여유로운 마음으로 진행했습니다. 그럼에도 시간이 부족했던 이유는 뭔가 잘못된 부분을 수정하는데에 있어서 많은 시간이 소요되었다는 점입니다. 이는 해당 스킬을 가지고 제대로된 프로젝트를 해보았다면 발생되는 간단한 오류였지만, 그만큼의 데이터가 제 머리속에 쌓여있지 않았기 때문에 어떤 것을 찾더라도 해결하는 데에는 시간이 오래 걸렸습니다. 프로젝트를 통해 삽질을 많이 해보는 것도 중요하다고 생각이 들었습니다.
알고리즘의 중요성
늘 생각했던 부분이지만 이번에도 역시 알고리즘이 기본적으로 중요하다는 생각이 들었습니다. 문제 조건중에서 제한 시간을 두면서 빠르게 데이터베이스에서 정보를 가져오라는 부분이 있었는데, 효율적인 측면에 대한 고민을 해야한다는 부분이 알고리즘적 사고와 유사하다고 생각이 들었습니다. 알고리즘 문제를 풀면서 갖춰진 좋은 코딩 습관들과 유연한 사고들은 개발할 때 큰 도움이 될 것이라고 생각이 들었습니다.