드디어 여정의 끝인 4주차가 지나가고 나의 마지막 프리코스 리뷰이다. 👋👋
정말 많은걸 깨우쳤고 많은걸 배웠으며 나에게 많은 실망을 하였던 4주간의 여정에 마침표를 찍는 회고록이다.
이번 주차의 회고록에는 체화시킨 것과 나의 실패한 점에 대하여 서술하려한다.
자바는 객체지향이야
자바는 흔히 말하는 객체지향언어이다.
하지만 지난 3주차 동안 자바를 객체지향언어답게 프로그래밍하지 못했고 그를 인지하고 있었다.
그래서 이번주차에서는 "나는 자바 서버개발자인가? 그렇다면 왜 이렇게 프로그래밍을 하는가" 에 대한 조금 근본적인 질문을 스스로에게 가지게 되었다.
그래서 나는 3주차가 끝난 시점에 기초부터 다지기 위해 OOP를 공부하며 프로그래밍적인 부분보다는 사고적인 부분을 키우고있었다. 그래서 이번 4주차가 시작할 때 가장 신경쓴 부분이 객체를 객체스럽게 사용하는 것이었다.
이말의 의미는 다소 당연하겠지만 객체의 의미를 명확히 하는 것이 나에게는 이번주차의 핵심이자 목표였다.
객체의 의미를 명확히 한다는 것은 하나의 객체에 포함된 인스턴스나 메소드가 반드시 속해야 하는 이유가 있어야 하며 그 객체가 행하는 행동이 반드시 현재 프로젝트를 완성하는데 있어 이유가 명확한 프로그래밍을 지향했고 행동했다.
사실 올바른 코딩을 하였는가? 에 대해서 주관적인 이번주차의 평가는 상당한 만족이었다. 물론 남에게는 조약하고 불완성적인 코드로 비출 수도 있지만 이러한 사고를 가지고 프로그래밍을 한다는 것은 상당히 나에겐 큰 도전이었고 재미였다.
이 또한 우아한테크코스가 없었다면 하지않았을 단계였을지 모른다. 이번 4주간의 기회는 단순히 우아한테크코스에 합류하기위한 과제를 진행하는 기간보다는 스스로에게 성장할 기회를 우아한테크코스란 강력한 동기로 묶어 제공하는기회였다 생각한다.
아직까지는 명확한 객체의 분리 메소드의 네이밍,비즈니스 로직 ,UI 로직 처리가 더딜 수 있고 아마 더딜 것이다.
그렇지만 객체지향적 사고를 지닌 객체지향언어를 사용하는 프로그래머가 되기 위해 이런 생각을 지속할 것이고 노력해나갈 것이다.
네이밍
사실 우아한테크코스를 진행하면서 가장 많이 생각하고 공들인 부분이 아닐까 싶다.
위에 서도 말했듯 클래스가 하는 작업이 타인에게도 명확히 전달되려면 네이밍을 잘해야된다고 생각했다.
그래서 이번 우아한테크코스를 진행하며 몇가지 규칙을 만들어 진행을 하였었다.
이번 4주차를 예로 들어 설명하자면 사용자의 입력값에 대한 예외처리가 필요했고 이를 별도의 클래스로 만들어 작성하려고하였다.
그래서 Validation이라는 네이밍 하나만으로 모든 유효성검사를 진행하는 것은 별로라고 생각을 했다.
사용자의 입력값에 대한 유효성검사 - InputValueValidation
사용자 재도전 조건에 입력값에 대한 유효성 검사 - RetryValidation
같이 이름이 다소길어질 수 있어도 그 뜻이 명확히 전달이 되어야된다고 보았기 때문에 해당 방식으로 네이밍을 지었다.
메소드도 마찬가지이다. 나는 유효성 검사시 하나의 public으로 된 조건문 내부에 private으로 모든 조건이 통과해야 true를 반환받아 입력값을 그대로 받는 방식을 진행하였다.
그렇기 때문에 메소드네이밍도 통일성을 최대한 지키려했다.
userInputBridgeSizeValidation - 다리 사이즈에 대한 유효성검사 메소드
userInputBridgeMoveValidation - 다리 건너기 조건에 대한 유효성검사 메소드
userInputRetryConditionValidation - 게임 재도전 조건에 대한 유효성검사 메소드
해당 방법으로 하나의 패턴을 만들어 사용을 하였고 대부분의 유효성검사의 경우 겹치는 부분이 상당히 많다고 생각하여 메소드의 재사용성을 높이기 위해 맨처음에는 같은 메소드를 사용하도록 프로그래밍을 진행하였었으나 추후 확장성적인 부분이나 하나의 객체 의미를 명확히 하기위해 이 또한 패턴은 동일시하게 사용하되 각기 다른 메소드로 구현하였다.
XXXTry - try catch 문으로 에러를 handling하기 위한 메소드이다.
XXXEmptyValidation - 공백을 처리하기 위한 메소드
XXXRegexValidation - 다리길이의 경우 숫자만 입력받아야하고 이외 값의 경우 대문자 영어만 입력받아야하기에 정규표현식을 활용하였고 그렇기 때문에 네이밍을 Regex로 사용하였다.
XXXCorrectValidation - 명확한 값이 입력되었는가에 대한 유효성검사 메소드이다.
해당방식으로 자신의 코드에 패턴을 정해 구현하는 것이 좋다고 생각한다.다만 아쉬운점은 스스로 생각하기엔 맨처음 재사용성을 고려한 코드가 오히려 좋다고 생각한다.재사용성이 높은 메서드 또한 하나의 클래스로 묶어 ValidationConfig 정도로 네이밍을 하여 사용할 수 있었음에 불구하고 좋지 못한 방법을 선택한 것 같아 아쉬움이 존재한다.
중요한건 꺽이지 않는 마음
사실 3주차에서 나는 예기치 못한 에러를 만난 이후에 상당히 깊은 패닉에 잠겼다. "나는 과연 문제에 대한 정확한 이해를 하고있나 그렇지 않다면 그동안 노력을 덜했기에 마주친 업보인가?" 등의 수많은 생각이 머리를 스치며 사실 반포기 상태였다.
나는 1주차 우아한테크코스 리뷰에서 만약 붙지 못하더라도 배운다는 마음으로 임한다고 글을 적었었다. 그 말은 빈말이 아니었고 실제로 많은 것을 나와 타인으로부터 배웠고 기록하며 체화했다.
하지만 당장 눈앞의 실패는 준비가 덜된 주니어에겐 상당한 무서움이자 무기력함이었나보다. 그래서 의욕도 상당히 저하되게 되었었다.
그러다가 문득 예전에 즐겨하던 게임의 9년이란 프로게이머 생활 끝에 처음으로 세계대회에서 우승컵을 들어올린 선수가 인터뷰에서 했던 말을 듣게 되었다.
"중요한건 꺽이지 않는 마음이다."
그렇다. 이 선수는 9년이라는 기간동안 자신의 오랜 염원이자 숙원인 세계대회 우승이란 목표를 이루기 위해 미래가 불확실하더라도 현실에 문제가 당장 나를 쫓아오더라도 계속 달려온 것이다.
나는 프로그래밍 공부를 첫 자의로 시작하였을 때 하나의 목표를 가지고 있었다. 이 세상에 꼭 필요한 API같은 개발자가 되겠다. 이 말은 사람들에게 꼭 필요한 서비스를 제공하는 개발자가 되겠다는 치기어린 포부였다.
하지만 그 말의 무게에 맞는 노력을 시도한적도 열정을 불태운적이 있는가? 나는 아직이라고 생각한다.
그렇기 때문에 나의 열정은 아직 더 불탈 수 있다. 정말 그 말 그대로 내가 학습을 하고 서비스를 제공함에 있어 제약이나 번아웃이 찾아오더라도 중요한것은 꺽이지 않는 마음이다.
이제 안녕
4주간의 성장기간은 정말 짧았다. 짧다면 짧고 길다면 길다고 느껴지긴 했으나 돌이켜보니 짧았다.
정말 큰 배움의 기회라는걸 생각보다 몸으로 느끼게된 것 같다.
나는 기대를 크게할 수록 실망감 또한 크다 생각하기에 사실 우아한테크코스에 붙을거라는 생각을 접고 있었다.
하지만 주변에서 같이 프리코스를 진행한 개발자들도 실력보다는 성장가능성을 보는 것이고 나 또한 나의 성장을 최대한 보여주려고 노력했기에 좋은 결과가 있을 것이라고 생각하고 만약 떨어지더라도 나에게는 배움의 기회로서 값어치있는 시간이었기에 후회나 미련은 없을 것같다.
나는 개발자로서 나의 방향성을 우아한테크코스를 통해 찾기 위해 지원했다라는 말을 지원서에 남겼었다. 이번 프리코스를 통해 그를 어느정도 찾았다고 생각하기에 내가 든 조약한 횃불이라도 그를 가지고 망망대해를 올곧게 정진하는 행보를 보여주려고한다.
'대외활동' 카테고리의 다른 글
[YAPP] 22기 면접 회고와 면접 질문 보완하기 (0) | 2023.04.18 |
---|---|
DND 8기 지원후기 및 여러 동아리 및 대외활동 지원 후기 (0) | 2023.01.05 |
[우아한테크코스] 프리코스 3주차 리뷰 (0) | 2022.11.16 |
[우아한테크코스] 프리코스 2주차 리뷰 (1) | 2022.11.09 |
[우아한테크코스] 프리코스 1주차 리뷰 및 7번 문제 복기 (1) | 2022.11.05 |