-
앞으로의 백엔드 공부 계획 (feat. 백엔드 공부법)고찰 2024. 3. 28. 08:34
📌 개발 학습 계획
1. 목표 설정하기
- 현재 백엔드 스쿨에서 제공해주는 권장 가이드라인이 있다. CS 지식부터 프로그래밍 언어인 Java, 버전관리인 Git, 기본 프레임워크인 Spring Boot, 객체 관계 매핑을 도와주는 JPA, 도커, Security, Spring Batch 까지 교육과정 로드맵이 구성되어 있다.
- 권장 가이드라인은 시작점이자 말 그대로 가이드라인일 뿐, 주어진 과제와 학습량을 완수한 것만으로 만족감을 취할 생각은 아니다.
- 개발자를 '무한 성장하는 객체' 라고 바라보는 시점을 갖고 있는데, 입사 후에 가이드라인은 제공받지 못한다. 수동적으로 짜여진 계획표를 실천하는 것에서 벗어나 스스로 성장할 수 있는 동력과 방향성을 스스로 설정하는 연습을 지금부터 해야할 것이다.
- 현업에서 스스로 찾아서 공부하는 자기주도학습과 더 나은 개발자가 되기 위한 노력이 돌이켜보면 여러 면에서 많이 부족했다고 생각한다.
- 그 원인을 분석해보면 업무 프로젝트에 투입하기 이전에 서비스 업종에 대한 분야의 기본 지식을 습득하는 시간에 많이 할애했다.
- 이전 회사가 GIS(공간정보시스템)를 기반으로 하는 기업이었기 때문에 벡터, 레스터 데이터 표현에 대한 이해, 좌표계 시스템, 데이터를 가공하고 웹으로 표출하는 알고리즘, 데이터의 흐름 등을 파악했다.
- 이전 회사가 GIS(공간정보시스템)를 기반으로 하는 기업이었기 때문에 벡터, 레스터 데이터 표현에 대한 이해, 좌표계 시스템, 데이터를 가공하고 웹으로 표출하는 알고리즘, 데이터의 흐름 등을 파악했다.
- 따라서 이전에 배우지 않았던 전혀 몰랐던 새로운 분야에 대한 지식 학습과 개발을 넘어서 프로젝트를 완성해나가며 사업의 전반적인 큰 그림을 이해해야했다.
- 또한, 입사 전에는 학습할 시간과 양을 조절해가며 학습 계획과 방향성을 설정할 수 있었지만, 입사하고나서의 학습 방법을 계획하기에는 물리적인 시간이 부족했고, 학습하는 습관은 자리잡히지 않아서 적지 않게 방황했던 시간을 보냈던 것 같다.
- 물론, 입사하고나서 개발의 학습을 진행하는 것보다 업무에 빠른 적응, 프로젝트 실무 투입에 관한 세팅과 구조를 파악하는 것이 우선이다.
- 따라서 정말 길게 롱런할 수 있는 학습 방향성과 계획을 구성하는 연습을 현 시점부터 해볼 계획이다.
- 목표 설정은 주 단위 / 월 단위 / 최종 단계로 나뉘어서 매주 세워놓은 계획을 준수하도록 하고, 주말에 부족했던 부분과 달성한 부분들을 정리해 스스로 회고할 시간을 갖을 것이다.
2. 자바 프로그래밍 언어 복습
- 자바의 기본 문법을 확실히 정리할 계획이다. 자바에서는 각 변수가 어떤 데이터를 담을 수 있는지 명확히 정의해야 한다. 기본 데이터 타입부터 참조 데이터 타입까지 다양한 데이터 타입이 존재하는데, 이를 이해하고 잘 활용할 수 있어야 되겠다.
- 조건문(if-else문, switch문)과 반복문(for문, while문)을 효과적으로 활용해서 프로그램의 흐름을 제어할 수 있어야 되겠다.
- 또한, 코드의 재사용을 위해 메서드를 활용해야되는데, 메서드를 선언하고 호출하는 방법을 잘 숙지하고, 메서드의 매개변수와 return 되는 값을 잘 다룰 수 있어야 된다.
- 상속을 통해 클래스의 재사용성을 높이고, 다형성을 활용해서 유연하고 확장 가능한 코드를 작성할 수 있어야 된다.
- 객체의 상태와 행위를 하나로 묶기 위해 캡슐화와 외부에서 객체의 상태를 직접 조작하지 못하도록 보호하기 위한 장치로 정보 은닉도 할 줄 알아야 되겠다.
- try-catch-finally 문으로 예외처리를 통해 오류를 사전에 예방하고, 로그를 남겨 개발자 및 사용자에게 적절한 메시지를 제공받을 수 있어야 한다.
- 마지막으로 시간이 더 된다면, 멀티스레드 환경에서 동작하는 프로그램에서 스레드 생성, 동기화 등의 개념을 이해하고 활용할 수 있도록 학습할 예정이다.
3. CS 지식 함양
- CS 지식을 함양함에 있어서 목표가 단순히 알고리즘 문제를 풀거나 면접 대비를 위함이 아니다. 알고리즘과 자료구조에 대해 자세히 학습한 후 어려운 난관에 부딪혔을 때 스스로 고민해보며 문제 해결 능력을 향상시킬 수 있다.
- 이미 정보처리기사 자격증을 취득하였지만, 이전에 관련 노트정리 했던 자료들과 이전 포스팅에서 다뤘던 '정보처리기사 실기 스터디'로 정리했던 내용들을 리마인드 해볼 수 있는 시간을 가져볼 계획이다.
- OS, 네트워크, DB, 디자인 패턴, HTTP, 프로토콜, 보안 등 각 개념에 대해 이해를 갖추고, 실제 프로젝트에서 사용했던 부분들을 정리하고, Why(왜) 해당 프로젝트에서 그 기술을 사용했던 이유들을 정리해볼 것이다. 더 나아가 다른 방법으로 효율적인 기술로 대체가 가능한지 여부도 확인을 하는 과정을 갖고 싶다.
4. 자료 구조 및 알고리즘 (코테 준비)
- 먼저, 자료구조와 알고리즘의 기본 개념을 확실히 이해해야겠다.
- 항목 : 배열, 연결 리스트, 스택, 큐, 트리, 그래프 등의 자료구조, 정렬 탐색, 그리디, 다이나믹 프로그래밍등의 알고리즘 기본 개념
- 항목 : 배열, 연결 리스트, 스택, 큐, 트리, 그래프 등의 자료구조, 정렬 탐색, 그리디, 다이나믹 프로그래밍등의 알고리즘 기본 개념
- 코딩 테스트에 자주 등장하는 핵심 알고리즘에 대해서는 더 구체적이고, 많은 연습 시간을 할애할 예정이다.
- 이진 탐색, 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS), 다익스트라 알고리즘 등
- 이진 탐색, 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS), 다익스트라 알고리즘 등
- 현재 수강하고 있는 강의들과 도서를 적극 활용하여 이론에 그치지 않고, 같이 코딩해보면서 처음에는 유형과 문제를 읽는 연습에 적응을 한 뒤, 스스로 해결 방법을 모색하여 알고리즘을 대비한 나만의 코드를 저장하여 정리해볼 계획이다.
5. 학습 가이드 라인 준수
- 현재 수강중인 학습 강의 플랜에 맞춰 주차별 To-do 리스트를 성실히 준수하고 싶다.
- 최대한 강의는 주에 권장된 진도만큼 수강을 진행하고, 제출이 계획된 과제들도 최대한 빠짐없이 완수할 예정이다.
6. 프로젝트 및 포트폴리오 정리
- 학부 - 프론트엔드 부트캠프 - 현업 실무 프로젝트 - 백엔드 부트캠프(현재) 동안 진행했던 프로젝트의 코드들을 한 번씩 더 살펴보면서 프로젝트의 코드 구조와 각 메서드에 기능 정의 및 호출, 전반적인 로직 실행까지 이해를 한 뒤에 나중에 포트폴리오로 활용할 수 있도록 잘 다듬을 계획이다.
7. 기술 블로그 작성
- 기술 블로그를 통해 나의 학습과 성장 과정을 기록하면 어떤 기술을 배웠고, 어떤 문제를 어떻게 해결했는지를 정리할 수 있다.
- 이전 멋쟁이사자처럼 부트캠프에 참여했을 때 가장 좋았던 에너지는 열정 가득한 동료들과 같이 성장하고, 어려움을 해결하며 프로젝트와 프로그래밍 언어 스터디 및 회고록을 가졌던 시간들이었다. 즉, 협력과 공유의 가치였다.
- 새로운 기술을 배우는 과정에서 각자가 숙달 과정을 거쳐서 완전히 이해하는 정도와 시간의 차이는 상대적이다.
- 각 부트캠프 혹은 교육기관 프로그램을 수료 후에 면접을 응시하기까지 그 안에서의 동기들과 면접이 겹치거나 하는 경우는 거의 드물다는 말씀을 이전 부트캠프 매니져와 유니콘 기업들 인사 관계자님의 특강을 들었었다.
- 즉, 같은 기수의 동기들은 경쟁자가 아니라 같이 좋은 에너지를 발휘하며 동기부여를 얻고 같이 성장할 수 있는 동료라는 것이다.
- 남들보다 조금 앞서는 부분이 있더라도 절대 자만하지않고, 겸손한 자세로 미래의 먼 동료와 같이 일한다는 자세로 지식과 동기부여를 줄 수 있는 좋은 동료가 되자 라는 마인드를 늘 새기며 임할 것이다.
- 같이 성장하고 어려움을 해결하며 지식을 공유하는 과정에서 얻은 에너지는 절대 혼자서는 얻을 수 없는 것이다.
- 현재도 기술 블로그 스터디에 참여하고 있는데, 앞으로 더욱 적극적으로 참여해서 참여하는 인원 모두가 좋은 상생 에너지를 얻을 수 있도록 대단히 노력하고, 더 나은 미래를 위한 토대를 마련할 것이다.
8. 자긍심 고취 시키기
- 8월말까지 교육 기간이 예정되어 있는데, 개인적으로 긴 여정이라고 생각한다.
- 어렵고 고된 여정이 기다리고 있지만, 그 과정에서 작은 성취와 새로운 자격증 취득으로 얻을 자부심과 뿌듯함을 기대하고 있다.
- 매년 자격증을 취득하고 있는데, 현재 정보처리기사, 리눅스 마스터 2급, SQL 개발자(SQLD) 자격증을 취득하였고, 올해 데이터 분석 준전문가(ADsP) 자격증도 취득할 목표를 갖고 있다.
- 현대 비즈니스에서 데이터는 매우 중요한 자산이 되었다. 데이터 분석 능력은 이미 웹 개발 분야 뿐만 아니라 다양한 산업에서도 매우 가치있는 기술로 여기며 나의 미래 경력 발전에도 긍정적인 영향을 끼칠 수 있겠다.
- 무엇보다 부트캠프에서 집중적으로 기술을 학습하고 프로젝트를 완수하는데 많은 시간과 노력이 소요된다. 그 과정에서 종종 지침과 스트레스를 이전 부트캠프를 통해 적지 않게 느꼈다. 무엇보다 롱런이 가장 중요하므로 이런 때에 자격증 공부를 통해 마음의 환기와 재충전에 큰 도움이 될 수 있을 것 같다.
- 새로운 것들을 배우고 습득하는 과정에서 가파른 러닝 커브로 고생할 수도 있겠다. 하지만, 그 어려운 시기에도 꾸준한 노력을 투자하고, 나아가는 과정을 기술 블로그에 작성해서 작은 성취부터 프로젝트 마무리까지 모두 기록해둔다면, 자신이 얼마나 성장했는지를 명확히 알 수 있고, 이를 긍정적으로 바라보는 시각도 존재할 것이다.
- 이 점이 인내심을 발휘하고 어려움을 이겨내는 자세가 나의 가치가 될 것이고, 계속해서 한계를 뛰어넘고 발전하는 성장 지향형 개발자가 되는 것이 나의 궁극적인 목표이다.
'고찰' 카테고리의 다른 글
4월 1주차 회고 (2) 2024.04.08 백엔드 개발자가 쌓아야 하는 역량은? - 자료구조/알고리즘/코딩테스트편 (1) 2024.04.03 백엔드 커리어 로드맵 - 어떤 백엔드 개발자가 되고 싶은지 (3) 2024.03.21 프론트엔드와 백엔드 차이 - 백엔드 개발자가 된 이유 (3) 2024.03.15 - 현재 백엔드 스쿨에서 제공해주는 권장 가이드라인이 있다. CS 지식부터 프로그래밍 언어인 Java, 버전관리인 Git, 기본 프레임워크인 Spring Boot, 객체 관계 매핑을 도와주는 JPA, 도커, Security, Spring Batch 까지 교육과정 로드맵이 구성되어 있다.