2주차 미션 - 야구 게임이 종료되었다.
이번 미션을 처음 마주했을 때는, "어라..? 1주차에 비해 난이도가 확 올라갔네? 싶었다.
그래도 알고 있던 게임이라 요구사항을 정독하고나서 어떻게 구현할 지 어느정도 갈피가 바로 잡혔었다.
이번 미션은 이전 기수부터 1주차 과제로 항상 수행되던 미션이었다. 때문에 구글에 자료들이 차고 넘치지만, 프리코스 OT때부터 포비님이 강조하시는 자기주도적으로 해결하는 능력을 기르기위해 하나도 찾아보지 않고 혼자서 미션을 진행했다.
게다가 미션을 시작하기 전에, 1주차에 적어놓았던 셀프 피드백을 한 번 읽고, 시작했다.
이름을 통해 의도를 드러내려고 노력했고, 축약하지 않으려고 노력했다.
또 가능한 주석을 달지 않고, 코드로만 이해할 수 있도록 노력했다.
그리고 모든 로직을 한 번씩 보면서 JAVA API를 사용할 수 있는 부분이 없는지 훑어보았다.
코드를 짜는 과정에서 함수를 나누는 것은 사실 그닥 어렵지 않았다. 예전부터 클래스와 함수를 나눠 코드를 깨끗하게 짜는 것에 관심이 많았고, 실제로 그렇게 짜려고 항상 의식적으로 노력해왔기 때문이다.
하지만 이번에 예외처리를 하는 기능이 필요하였는데, 그 부분에서 조금 막힘이 있었다.
최근들어 프로그램에서의 예외처리는 어쩌면 새로운 기능을 추가하는 것보다 중요하다고 생각하고 있었는데 정작 예외처리를 자신있게 하지 못하는 스스로를 보며 이 부분은 공부해야겠다고 느꼈다.
또 이번에 테스트 코드를 기능별로 작성하라는 요구사항이 있어서, 해당 요구사항을 만족하기 위해 테스트 코드를 작성해보았다. 하지만 테스트 코드에 익숙하지 않은 나는, 얕게 알고 있는 지식을 총동원하여 내가 생각해본 예외의 상황만을 테스트 코드로서 검증하려고 했다. 따라서 이 부분도 조금 채워나갈 필요가 있다고 느꼈다.
2주차 공통 피드백을 기반으로, 스스로에게 피드백을 주고자한다.
이번 주차에 처음으로 README에 기능 목록을 작성하였다.
개발을 시작하기 전에 스스로 시나리오를 작성하여 필요한 기능들을 모두 적어보았다.
사실, 빨리 개발하고 싶다는 생각이 강해 생각나는대로 빠르게 기능 목록을 README에 적었다. 이 부분은 반성할 필요가 있다.
정상적인 경우도 중요하지만, 예외적인 상황도 기능 목록에 정리한다. 특히 예외 상황은 시작 단계에서 모두 찾기 힘들기 때문에 기능을 구현하면서 계속해서 추가해 나간다.
기능 목록을 작성할 때, 예외 상황에도 집중할 필요가 있다.
개발하면서 기능 목록이 지속적으로 추가 및 변경되어, 이게 맞나? 싶었다.
이젠 자신있게 지속적으로 수정을 해야겠다.
이 부분은 인지하고 있었지만, 일부의 경우에는 의도적으로 하드코딩을 하였다.
앞으로는 하드코딩보다 상수로서 구현해야겠다.
이 내용은 야구 게임 미션하면서 계속 신경쓰며 구현을 하였다.
하지만 조금만 놓치면 실수하기 쉬운 부분이기에 메모 !
3주차를 진행하며 동일하게 테스트 코드를 작성할텐데, 테스트 코드에 대해 조금 더 알아보고 사용 후 정리 할 필요가 있겠다!
앞으로 테스트 코드를 작성할 때 참고할 것 !!
1주차부터 우아한테크코스는 기존의 학습 경향을 깨려고 하는 느낌을 강하게 받았다.
가령, 책을 처음부터 끝까지 정독하여 읽어야 한다거나, 혼자 묵묵히 열심히 공부해야 잘하는 느낌 등..
프로그래밍에서는 본인에게 현재 필요한 정보나 지식을 그때그때 찾아서 학습하는, 이른바 야생형의 공부 스타일이 더 많은 발전을 야기한다고 하셨다.
그리고 여러 사람과 함께 소통을 하며 지식을 나누는 행위 자체가 많은 발전을 야기할 수 있다고 하셨다.
또한, 프리코스를 포함한 전체 코스는 발전에 큰 포커스를 두는 것 같다.
잘하는 사람을 뽑으려고 했으면 코딩테스트로 선별했을 것이라는 말씀과 함께, 정말 못하는 사람이라도 시간이 갈수록 본인의 미흡한 점을 채우면 되는 것이라고 하셨다.
즉, 잘하든 못하든 발전하는 사람이 되어야 한다는 것이다.
위의 말을 듣고 스스로를 반성하게 되었다.
그동안 아는 것에 집중하지 않았나? 그리고 제출이 끝나고 나면 안주하는 마음이 있지 않았나? 라는 생각이 들었다..
그래도 아직 2주 남았으니까 앞으로 모르는 것에 집중하려고 한다.
내가 모르거나 부족한 지식은 공부를 하고, 그것을 의식적으로 코드에 적용하려고 노력할 것이다.
또한 개발자로서의 가치관을 생각해보는 시간을 가졌다.
요즘 개발자가 무엇인가? 라는 질문에 대한 내 대답은, 세상에 생긴 문제점과 질문에 대해 여러가지 기술을 이용하여 해결하는 사람이다.
그러기 위해서는, 문제와 질문에 항상 목이 말라있으며 그것을 해결하기 위한 기술을 마스터해야한다고 생각한다.
잘보고갑니다!