우아한테크코스 레벨1 글쓰기 미션에서 작성한 글을 가져왔습니다.
우아한테크코스를 시작하기 전에 SI 기업을 다녔었다. 졸업 시즌에 시작한 인턴 활동을 열심히 한 덕분에 회사에 취업할 수 있었다. 인턴을 했던 부서로 입사했기 때문에 어려운 것은 없을 거라 생각했다. 하지만 현업은 만만치 않았고, 책상 앞에 앉아있는 9시간 동안 제대로 알고 있는 게 없었다. 정신적으로도 육체적으로도 너무 힘들었지만 그만큼 얻어갈 수 있는 기회라 여기며 다른 팀원들을 쫓아가기 위해 노력했다. 노력이 빛을 발하는지 반년도 채 지나지 않아 회사의 업무는 익숙해졌지만, 그와 동시에 불안감이 찾아왔다. 매번 같은 기능을 새로 찍어내고 쓸데없는 문서만 작성하는 것 같았다. 무엇을 모르는지도 모르면서, 수정한 설계 때문에 하루종일 문서만 작업하는 날들이 불안했다.
회사를 다닐 수록 경력이 쌓여 신입 타이틀을 붙이기 애매할 때 즈음, 회사에서 더 이상 배워갈 것이 없다고 판단하고 퇴근 후 개인 공부를 시작했다. 당장 내가 사용할 수 있는 파이썬으로 코딩테스트를 준비했고, 오랜만에 학창시절로 돌아간 듯한 느낌에 설렜다. 회사를 위한 공부가 아닌 오로지 나를 위한 공부였기에 너무 재미있었다. 경력직으로 이직하여 또 같은 고민을 하는 것보다 기초부터 새로 공부하고 싶어 우아한테크코스에 지원했다.
회사를 다니면 지금보다 배울 것도 많고 크게 성장할 수 있을 것 같았다. 하지만 실상은 그렇지 않았다. 회사 업무를 파악함과 동시에 내 실력은 정체되었다. 혼자서 공부하려 해봐도 어떻게 공부해야 할지 몰랐다. 다른 사람들은 '어떻게' 공부를 하며 '어떻게' 트렌드를 접하는 지 알고 싶었다. 한 달이 지난 지금, 공부 방법을 찾았냐고 묻는다면 알아가고 있는 중이라고 답하고 싶다.
자동차 경주 미션을 진행하면서 다른 사람과 협업하는 방법을 배웠다. 지금까지의 협업이란 각자 구현할 파트를 정해두고 서로의 코드를 침범하지 않은 채 하나의 프로그램을 구현하는 것이었다. 우아한테크코스에서는 매 미션을 페어 프로그래밍으로 시작한다. 페어 프로그래밍을 하면서 작성하는 코드는 나 혼자만의 코드가 아닌 페어와 나, 우리 둘의 코드이다. 작성하고 싶은 코드가 있다면 페어를 설득시켜야 한다. 어떻게 작성하고 싶은지 머리로는 떠오르지만 왜 그렇게 작성하고 싶은지에 대한 이유를 말하기 어려웠다. 그동안 특별한 이유 없이 코드를 작성해 왔다는 것을 깨달았다.
로또 미션을 진행하면서 설계하는 방법을 배웠다. 자동차 경주 미션에서는 어디에 어떤 코드를 작성해야 하는지 판단하기 어려웠다. 구현하는 프로그램에 대한 지식이 부족했기 때문이라 생각해 요구사항 분석 및 설계에 대해 고민했다. 주어진 요구사항을 모두 만족시키기 위해 리드미 문서를 꼼꼼하게 작성했다. 더 적절한 설계를 위해 필독서인 '객체지향의 사실과 오해' 책도 읽었다. 이전 피드백에서 이해가 가지 않았던 것들이 조금씩 이해되는 것이 재미있었고, 객체 간 관계에 대해 고민하기 시작했다.
블랙잭 미션을 진행하면서 디자인 패턴을 적용하는 것에 익숙해졌다. 자동차 경주 미션 때에도 랜덤값을 테스트하기 위해 전략 패턴을 사용했지만 예시 코드를 따라 치는 것에 불과했다. 카드의 상태에 따라서 같은 기능을 다르게 구현하기 위해 상태 패턴을 적용해보았다. 상태를 객체로 만들어 로직이 간결해졌지만, 동일한 기능이 여러 객체로 분산되면서 코드를 관리하기 어려웠다. 정형화된 디자인 패턴이라도 개발자가 프로그램에 대해 완벽하게 이해하고 있어야만 이상적인 코드가 나올 수 있다는 것을 깨달았다.
체스 미션을 진행하면서 우선순위 파악의 중요함을 배웠다. 우아한테크코스 이전에 회사를 다녔기에 업무의 우선순위를 파악하는 것은 어렵지 않다고 생각했었다. 1단계까지는 무난했으나 2단계의 요구사항에서 시간을 많이 투자하여 3단계를 진행할 시간이 부족했다. 처음부터 모든 기능을 완벽하게 구현하려 했기 때문에 최소 요구사항조차 진행하지 못했다. 프로그램 구현에도 우선순위가 있으며 중요한 기능을 먼저 구현하는 것이 더 빠르게 완성할 수 있는 것을 배웠다.
빠르게 성장하기 위해서 반드시 필요한 것이 있다. 나 자신의 실력을 파악하고 받아들이는 것이다. 모두가 알고 있지만 실천하기는 어렵다. 우아한테크코스를 하기 전에 나는 내 코드를 보여주는 것이 어려웠고 개발 관련 잡담을 하는 것이 힘들었다. 다른 사람에게 나의 실력을 공개하는 것이 부끄러웠다. 하지만 우아한테크코스에서는 자연스레 나의 실력이 공개된다. 매 미션마다 페어 프로그래밍을 진행하고 리뷰어에게 나의 코드를 보내야 한다. 내 실력을 드러내는 것이 이전만큼 어렵지는 않다. 더 좋은 설계를 위해 페어와 상의할 때 모르는 것을 알리는 것이 자연스러워졌다. 내 실력을 인식하고 부족한 부분을 알게 되면서 더 빠르게 성장했다. 모르는 부분은 바로 찾아보고 이해가 가지 않으면 넘겼다. 당장 모든 것을 알아야 하는 것에 집착하여 조급한 마음을 가지는 것이 오히려 독이 될 수 있다. 조급함과 불안함을 버리고 먼 길로 돌아감으로써 나는 더 빠르게 성장할 수 있었다.
크...멋있어요 유콩!
저도 더 노력 해야겠다는 생각이 드네요.
우리 레벨2도 화이팅🤟