이 글은 BEYOND SW 캠프 2주차 동안의 성장과 배움을 스스로 돌아보고 기록하기 위한 회고입니다.
이번주 수업 중 새롭게 배운 내용이나, 직접 정리해 본 개념/기술에 대해
벨로그에 따로 아카이브해두었습니다.
(관심 있는 분들은 아래 링크에서 자세히 확인해 주세요)
이번주에는 주로 쿼리문에 대해 학습했는데, 그 부분에 대해서는 아직 정리하지 않았습니다. 추후 직접 문법을 다시 정리하고 관련된 문제를 풀면서 정리해서 올리도록 하겠습니다. 그 외에 개발 환경 세팅 도중 배운 점에 대해 따로 정리했습니다.
CS와 알고리즘 스터디에 가입 했는데, 본격적인 활동은 다음주부터 시작하게 될텐데, 모두 포기하지 않고 꾸준히 했으면 좋겠다고 생각한다. 코딩테스트를 통과하는 것은 어떤 회사를 지원하든 꼭 기본으로 갖춰야 할 자격이기 때문에 어렵지만 하루하루 조금씩이라도 꾸준히 해야 겠다고 생각이 든다.
PCCE를 보면서 느낀건 시험 점수가 생각보다 낮게 나왔고, 내가 아직 얼마나 많이 부족한지 스스로의 위치를 객관적으로 볼 수 있는 기회였던 것 같다. 사실 팩트로 폭행하는게 가장 아픈것처럼 내 실력에 스스로 실망을 많이 했다. 완벽하게 맞췄다고 생각한 문제에서도 감점이 된 것을 보고 더 꼼꼼히 문제를 풀어야 되겠다는 생각도 들었다. 이 부트캠프를 졸업 할때에는 PCCP 3레벨을 목표로 앞으로도 꾸준히 문제를 풀고 깃헙에 잔디를 심어야겠다.
첫 프로젝트는 현재 수업 과정속에서 배우는 데이터베이스에 대한 실습 프로젝트 였다. 팀원들과 아이디어 회의도 하고 각자 시간을 최대한 맞춰서 아이디어에 대한 구체화를 진행하는 시간을 가졌다. 나에겐 언제나 아이디어 회의가 가장 어려운것 같다.
프로그래머스 상에서 문제들을 기본기 위주로 두서없이 풀었다. 그러다 오늘 깨달은 것은 내가 아는 파트와 모르는 파트가 명확했고, 복잡한 알고리즘보단 기본기 자체에 구멍이 많이 난것을 깨달았다. 다음주부터는 각 파트별로 나눠서 직접 문제를 풀어보면서 내가 어느 파트가 부족한지 직접 알아보는 시간을 갖도록 하겠다.
개발자라면 결국 데이터베이스를 설계하고 설계된 데이터베이스에서 필요한 값을 이리저리 갖고 노는 여유정도는 필요하기에,, 꽤 중요한 파트라고 생각한다. 5개월 전에 SQLD는 자격증을 따면서 공부한 뒤에는 복습을 하지 않았고, 실제로 SQLD는 직접 쿼리를 짜는 경우가 없기 때문에 알고 있는 내용인데 막상 쓰라니까 못 쓰겠더라..(마치 아는 사람 인 줄 알고 인사했는데 모르는 사람이었던 기분) 다음 주에 DB 수업이 끝나기 전에 틈틈히 직접 SQL문제를 풀면서 배운 내용을 내 것으로 만드는 시간을 꼭 갖겠다고 스스로와 약속했다.
그 약속을 지키는 날에는 상단에 SQL 개념 정리와 실습 문제 풀이 과정을 벨로그에 아카이브할 예정이다.
강사님께서 수업중에 과거에 delete문을 잘못 사용하신 경험에 대해 공유해주시면서, 안전하게 select문으로 먼저 확인하는 꿀팁을 알려주셨는데, 사실 이전에 프로젝트 하다가 나 역시 데이터를 거하게 날려먹은 기억이 있어서.. 앞으로 꼭 저 방법을 쓰리라 생각 했다.
기존 프로젝트에서는 JPA를 사용해서 쿼리문을 직접 작성할 일이 없었는데, 회사들마다 공고를 보면 Mybatis를 사용하는 회사들도 아직 많았는데, 만약 쿼리문을 직접 짜야하는 상황을 대비해서 꼭 쿼리문과 친해져야겠다고 생각했다.
자바 컬렉션 프레임워크에 대해 이론으로만 배우고 간단한 문법만 숙지 했었는데, 각 자료구조에 대해 실제로 어떻게 자바로 구현 되어있는지 찾아보면서 공부를 하는 시간을 가졌다. 결국 완벽한 하나의 자료구조는 없기에, 어떤 상황에 어떤걸 써야하는지 이해하기 위해 노력했다.
해당 수업은 윈도우PC로 진행하는데, 난 기본적으로 MAC 환경으로 오랫동안 작업 해왔기에, 많이 불편했다. 결국 수업에서 설명해주는 내용을 따르지 못하고 스스로 개발 환경을 구축해야 했다.
팀 프로젝트를 위해 아이디어 회의를 하는 시간에 어떤 아이디어를 내야 할지, 그 아이디어를 어떻게 구체화해서 소개해야 하는 어려움이 있었다.
알고리즘 문제를 푸는데 시간복잡도가 터지거나, 인덱스 접근에 관련된 오류가 자주 나왔다.
맥에서도 수업 내용에 맞출 수 있으면서, 내가 배우고 싶었던 기술에 대해 공부하고 Docker을 도입하여 필요한 것들을 컨테이너화 하여서 관리하고, 수업중에 배웠던 SSH를 통해 맥에서 제공되는 애플리케이션을 통해 원격으로 연결하여 수업에 맞춰 진행했다.
먼저 개인적으로 살면서 불편했던 점을 떠올리고, 그 곳에서 아이디를 떠올린뒤에, 그거에 관련된 프로젝트를 진행했던 사람들의 레퍼런스를 보면서문서화와 구체화를 어떻게 진행하는지 참고했다
주로 정렬 파트에서 시간복잡도에서 터진다는 것을 알았고, 다른 정렬들을 찾아보면서 무엇이 어울리는 정렬인지 보고 적용하였다. 또한 인덱스가 내부적으로 어떻게 생성되는지, 내가 어디서 잘못 참조했는지 확인하며 최대한 안전하게 인덱스에 접근하는 방법에 대해 찾아보고 적용했다.
하루는 짧고, 일주일은 길다.
맞아요. 프로그래머스 코딩테스트 문제를 풀다보면 레벨에 상관없이 쉽게 푸는 게 있고, 어떻게 해야할지 모를 정도로 막막한 것도 있더라고요. 내가 정확히 아는 파트와 헷갈리거나 모르는 파트를 구분하고, 약한 파트는 낮은 레벨부터 차근차근 풀면 많은 도움이 되는 것 같아요!