현재 취업을 위해서 슬슬 구체적으로 정할 때가 와서 확실히 준비하고자 합니다. 여태 백엔드 취업을 위해 공부를 하면서 많은 착오를 겪었습니다. 아무런 정보없이 개발자로 취업을 위해 학원을 다니고 어떤 것을 공부를 해야하는지 잘 모르다보니 막무가내로 공부를 했습니다.
여태 공부를 처음에는 학자형으로 진행했지만 하다보니 느끼점은 저는 야생형
에 맞다고 생각했습니다. 지식적인 부분보다는 프로젝트를 진행하면서 부족한 지식을 채우고 문제를 해결하는 과정과 그 문제를 해결하고 부족한 부분이 채워졌을 때 퍼즐의 빈칸을 채운것처럼 재미를 느끼고 기쁨을 느꼈기 때문입니다.
이 카테고리에서 정리할 것들은 취업을 위해서 더욱 공부한 것이고 다른 카테고리는 개발자로서 공부할 것들을 정리해놓은 것입니다.
2개의 프로젝트
기술면접 준비
코딩 테스트 준비
사용 기술
사용 기술
MongoDB, JavaScript, JQuery, MSA, Docker, Jenkins, Kubernetes, Kafka, Linux, Nginx 이 기술들은 별도의 책과 인강으로 공부했습니다.
인강은 인프런과 유튜브에서 공부를 하였고 개발 공부하면서 읽은 책은 다음과 같습니다.
책을 여러권 본 이유는 비록 프로젝트에는 적용하지 못했지만 백엔드로서 취업을 하려면 기본적인 지식을 있어야 한다고 생각합니다. 그래야 회사에서 적응을 빨리 할 수 있고 저에게 교육을 해주거나 선임의 기술들을 사용하는 것을 빠르게 배울 수 있기 때문에 공부를 해야하기도 했지만 새로운 것들을 공부하는데 재미가 있었습니다. 이 책들을 읽으면서 제가 회사에서 이 기술들을 사용할 때를 그리며 공부할 의지가 생겼고 목적이 생겨서 공부가 힘들지 않았습니다. 그리고 공부한 것들을 정리해서 기술면접을 대비했습니다.
문제를 보고 시간 복잡도를 계산해서 어떤 자료구조를 사용할지 판단을 할 수 있어야 한다.
꼭 해야할 것은 브루트 포스
, 시뮬레이션
, 그리디
, DFS
, BFS
, 백트래킹
이거는 무조건 해야한다!
기초랑 중급은 해보자!
지나치게 올인해서는 안되고 지나치게 대충해서도 X
저는 궁금한 것을 못참는 성격이라 공부를 하다가 막힌 부분이 있으면 그것을 찾아보고 기록하는 스타일입니다.
저는 저의 현재까지의 인생 중 성공했던 사례는 어릴 때 외국에 살았던 것입니다. 저는 어릴 때 부터 외국에서 혼자서 생활했던 경험이 있어서 도전
을 하는데 두려움이 없어서 교수가 되려고 대학원 코스를 진행중 저의 진로에 대해 생각해 보게 되었습니다. 그 결과 교수가 저의 길이 아니란 것을 깨닫고 저의 진로 즉, 내가 하고 싶은 것과 나에게 맞는 것이 무엇일까를 찾는 도전을 하게 되었습니다. 하기 싫어서 포기한 것이 아니라 인생에서 제가 도전할만한 제가 하고 싶은 일을 찾고 싶었던 것입니다. 시간이 아까워서 나 자신을 찾는 도전을 하지 않으면 후회할 것 같기 때문입니다. 처음에는 회계 쪽으로 갔고 자격증도 다량 취득하는 중 개발자
란 직종을 알게 되었고 알아본 결과 해보고 싶다는 생각을 하게 되었습니다. 그리고 도전을 하게 되었는데 공부를 하면서 느낀 것은 저에게 맞고 잘해보고 싶다는 생각을 가지게 되었습니다. 그렇게 생각했던 이유는 평소에 사이트들을 사용하면서 이 사이트에 이런 기능이 있으면 좋겠는데 왜 없지라는 생각과 이 사이트에는 이런 기능이 필요할까라는 생각을 해왔기 때문에 백엔드 개발자에 대해 알게 되면서 그런 기능들을 제가 직접 구현할 수 있다는 것에 매력을 느끼게 되었습니다. 그리고 본격적으로 개발 공부를 하고 팀원과 프로젝트를 하다보니 인터넷에서 상위 개발자들이 지키는 7가지 습관이란 것을 보게 되었는데 제가 추구하는 것들이 맞다고 생각이 되었습니다. 그렇게 생각하는 이유는 다음과 같습니다.
편의성
과 필요성
이라고 생각합니다. 그리고 개발을 할 때 복잡하게 코드를 작성해도 컴퓨터는 그 코드를 해석해서 기능을 구현할 수 있을 것입니다. 하지만 개발은 혼자하는 것이 아니라 여러명의 팀원과 같은 팀으로 프로젝트를 진행하고 코드를 작성할 것입니다. 시간의 낭비를 하기 싫다면 팀원들이 내 코드를 한번에 이해하기 쉽게 코드를 이해하기 쉽게 짜고 가독성이 좋은 코드를 작성하는 것이 좋다고 생각합니다. 어쩔 수 없이 코드를 복잡하게 짜야한다면 주석으로 내 코드가 무슨 기능을 하고 있는지 설명해주는 것이 좋다고 생각합니다. 저의 모토는 Simple is Best
입니다. 단순한 것이 읽기 쉽고 이해하기 쉽기 때문입니다. 그러다보니 저는 항상 블로그도 정리하고 끝내는 것이 아니라 리팩토링을 해서 정리한 것을 다시 정리를 하고 여러 페이지로 나누는 것이 아니라 하나의 카테고리로 정리했습니다. 편의성
과 필요성
에 불적합합니다. 사용하려고 할 때 될지 안될지 모르는 사이트는 편의성도 떨어지고 요즘 시대에는 대체품이 많다보니 필요성도 떨어질 것입니다.코드 리뷰
를 받고 제 코드를 업그레이드 시키기 위해서는 다른 사람의 코드 스타일도 보고 공부할 점이 있습니다. 뛰어난 실력자의 코드는 더욱 그렇다고 생각합니다. 그렇기 때문에 자주 소통해서 피드백을 받고 피드백을 수용하는 절차는 많이 필요하다고 생각합니다. 한 줄로 자신을 표현하라
한 줄로 자신이 어떠한 개발자인지 나타내야 합니다. 도전적인 개발자, 오픈 소스에 관심이 많은 개발자 등 자신의 아이덴티티를 고찰해서 한 줄로 나타내야 합니다.
장점 세 가지
그 다음은 장점 세 가지를 부연 설명으로 나타내는 것이 좋습니다. 만약 내세울 것이 없는 포트폴리오라면 높은 학점, 높은 열정, 높은 자료구조 이해력 등을 내세우면 됩니다.
자신을 설명하는 About부분은 필수입니다. 자신이 어떤 사람인지 수학적, 논리적으로 표현해야 합니다. 내가 어떠한 경험을 가지고 있는지에 대해 숫자로 이야기하는 것이 중요합니다. 예를 들어 TDD를 했다면 테스트 커버리지를 몇 퍼센트로 했는지 알고리즘을 몇 문제 풀었는지 숫자로 이야기하는 것이 좋습니다.
자신이 다루는 기술을 어느 정도 다루는지 구분하여 나타내야 합니다.
자신이 다루는 기술의 리스트를 나열할 때는 자신이 제일 잘하는 것, 그리고 내가 조금은 하지만 잘하지는 못하는 것 이렇게 나열하는 것이 좋습니다.
포트폴리오에는 자신의 프로젝트가 들어갑니다. 프로젝트의 아키텍처나 ERD를 잘 표현해주는 것이 중요합니다. 이걸 리드미에서 한눈에 봐도 잘 알 수 있도록 하는 것이 중요하다.
오픈 소스 컨트리뷰터는 내가 사용하고 있는 프레임워크나 라이브러리 개발자를 말합니다.
강점 3가지
프로젝트 사용 기술
참고해야하는 점
특색있게 만들기
가독성 있게 만들기
프로젝트의 완성도가 높아야 한다.
코드 정리가 잘되어야 한다.
변수명 신경쓰기
주석 신경쓰기
코드 맨 위에 작성
- 작성자
- 해당 클래스의 역할
- 날짜 or 업데이트 날짜
중요한 기능에 주석으로 설명(한눈에 알아보기 쉽게)
리드미 제대로 작성
- 구현 기능
- 왜 만들었는지
- 어떤 목적을 가지고 역할을 했는지 무엇을 배웠는지
- 기술에 대한 상세한 내용
개선사항
이 프로젝트에 대해서 고민하는 모습 어필
어떤 목적을 가지고 역할을 했는지 무엇을 배웠는지
어떤식으로 협업했는지 스토리 작성
발전 가능성을 보여주기
큰 목표는 무엇이었고 그 목표를 위해서 어떠한 노력을 했는지 어떤 역할을 했는지
→ 질문 유도