저는 SW 프로그래머가 되고 싶었기에 프로그래밍 역량을 키우기 위해 노력해왔습니다.
초반에는 학교 수업을 중점으로 학습했습니다. 기본적인 언어(C, Java, Python) 수업과 알고리즘, 운영체제, 네트워크 등의 기본이 되는 수업을 수강했고 이후 해당 언어와 개념을 가지고 프로젝트를 진행할 수 있는 실습수업(웹프로그래밍, 데이터베이스 프로그래밍 등)을 수강했습니다.
그리고 3학년 때 VR/AR에 관심이 생겨 관련 연구실에 학부 연구생으로 들어갔습니다. 연구실에 있으면서 홈페이지를 맡게 되었는데 그때 웹 백엔드에 대해 처음 접하고 스스로 검색을 하며 개발을 하면서 웹 백엔드에 대한 흥미를 키워나갔습니다. 연구실에 있으면서 백엔드에 대한 전문성을 높이기 위해 관련 책을 읽고 글을 읽으며 공부했습니다. 그러면서 기존 수업에서 만들었던 프로젝트를 스프링 부트로 마이그레이션 해보고 여러 기능을 구현해 보고, 인증 기술을 적용해 보는 등의 개발을 했습니다.
위의 과정을 거치면서 습득한 지식과 기술을 바탕으로 크게 두 개의 프로젝트를 진행하며 지식과 기술의 확장을 해나갔습니다. 프로젝트의 기획부터 설계, 도메인 설계, 서비스 로직을 작성하고 특정 기능에 따라 gRPC, Socket, SpringSecurity(JWT) 등의 새로운 기술을 도입하고 Kotlin과 같은 새로운 언어를 사용하고, 서버 구성과 배포를 위해 Docker 등을 공부하고 적용해나갈 수 있었습니다.
프로젝트를 진행할수록 필요한 부분과 부족한 부분을 느끼게 되었고, 프로그래밍 역량에는 코딩 실력이나 기술적인 요소만이 다가 아니라는 점도 배울 수 있었습니다. 기획, 설계를 할 줄 알고, 좋은 코드를 짤 줄 알아야 하며 소통을 잘 할 줄 알아야 한다는 필요성을 느꼈습니다. 그에 따라 아키텍처 관련 책이나 클린 코드에 대해 찾아보고 공부하며 스스로 적용해 보기 위해 꾸준히 노력하고 있습니다. 또한 학부 연구생 당시 석사를 하셨던 분과 꾸준히 교류하며 프로젝트를 진행하고 좋은 코드, 개발자에 대해 토의를 하곤 합니다.