ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 우아한테크코스 3기 프리코스 후기 😁
    Diary 2020. 12. 16. 19:21
    반응형

    원래 새로 배우는 내용같은 게 있으면 시간이 날 때마다

    꼬박꼬박 블로그에 포스팅을 하는 습관을 들이려고 했는데

    최근에 이것저것 할 일이 너무 많아서 미처 블로그에 포스팅을 하지 못했다.

    기말고사 기간과 우아한테크코스 프리코스 기간이 겹치면서 엄청 할 게 많았기 때문.

    사실 뭐 글도 못 쓸 정도로 극한의 바쁨을 경험한 건 아니었지만

    그래도 뭔가 글을 쓸 만한 정신적인 여유가 없었다는 핑계 🙄

     

    근데 이제 3주간의 프리코스 기간이 종료되었고,

    조만간 있을 최종 코딩테스트만을 앞두고 있는 상황에서

    그 동안 꽤나 많은 것들을 보고 배울 수 있었기 때문에

    감사한 마음으로 잠시 시간을 내어 프리코스 후기를 남겨보려고 한다.


    📖 읽기 편한 코드

    일단 프리코스가 종료되고나서 개인적으로 가장 달라진 점이 있다면

    남이 보기에 편한 코드를 작성하기 위한 고민을 하게 되었다는 점.

     

    프로젝트의 규모가 커지면 커질수록,

    혼자서 프로젝트의 모든 부분을 구현하는 것이 점점 힘들어진다.

    결국은 다른 사람과의 협업이 필요한 시점이 반드시 오게 되는데,

    그럴수록 남이 읽기에 편한 코드를 작성하는 것이 중요해진다.

    물론 완벽히 구현하는 게 가장 중요하지만 그건 당연한거고.

     

    물론 지금도 내 코드가, 누가 보기에는 매우 형편없고 난잡한 코드일 수 있다.

    하지만 나만 알아볼 수 있으면 된다는 식으로 코드를 작성했던 예전과는 많이 달라졌다는 것.

     

    이제는 코딩 컨벤션을 준수하기 위해 노력하고,

    모듈메소드를 수시로 분리해서 최대한 라인을 짧게 가져가고

    코드의 맥락을 파악하기 쉽게 하려고 노력한다.

     

    그리고 이런 것들을 빼먹지 않고 지킬 수 있게 린터코드 포맷터를 사용하는 방법도 알게 됐다. 😏


    프리코스의 미션을 보면 여러 요구사항들이 주어지는데,

    그 중에서도 프리코스의 가장 특징적인 요구사항을 꼽으라면

    단연 indent depth 제한메소드 라인 제한일 것.

     

    indent depth 가 무엇이냐.

    조건문 혹은 반복문 하나에 indent 하나로 친다.

    그래서 if문 안에 for문을 하나 쓰면 indent가 두 번 되니까 indent depth가 2가 되는 식이다.

    대부분의 미션에서 indent depth는 보통 2로 제한되어있었다.

    그리고 메소드 라인은 15라인 정도로 제한되어있다.

     

    그러면, 좀 복잡한 기능을 구현할 때는 어떻게 해야 할까.

    배열 몇 개만 사용해도 반복문이랑 조건문이 적지 않게 들어가는데.

    indent depth가 2까지밖에 허용이 되어있지 않다니.

    대충 한 두줄 작성하다가 때려치는 게 좋을까?

    아니다. 메소드를 분리해야한다. 

     

    그리고 프리코스 1주차 피드백 중에 이런 것도 있다.

    되도록이면 축약을 하지말고, 이름만으로도 그 메소드의 의도를 파악할 수 있게

    최대한 배려심 넘치게 메소드 이름을 지으라는 것.

     

    또, 숫자나 문자열같은 것들을 하드코딩 하지말고, 상수로 선언해서 사용하라는 피드백도 있다.

    이런 것들 때문에 변수 이름이나 메소드 이름을 고민하다가 꽤나 많은 시간을 흘려보냈지.. 😥

     

    여튼, 이러한 요구사항들을 반영하면 다음과 같은 코드를 작성할 수 있게 된다.

    function encounterEnemy() {
      if (isEnemyWeak()) {
        trashTalk();
        fight();
      else {
        runAway();
      }
    }

    trashTalk이나 fight같은 각각의 메소드 안에는

    여러 코드들이 서로의 갖가지 작용들을 하고 있을 것이다.

    하지만 이런 코드들을 굳이 속속들이 파헤쳐보지 않아도, 이름만 보고도 전체적으로

    대충 어떤 역할을 하는지, 어떤 식의 흐름을 가지고 있는지가 한 눈에 보인다는 것.

    마치 영어 문장을 읽는 것 같은 느낌을 주는 것. 그게 최종 목적이 아닐까 생각한다.

     

    물론 개인적인 생각이고, 실제로는 이렇게 간단한 경우는 많지 않겠지만.

    극단적인 예시를 들어보자면 그렇단 거지. 😋

     

    우아한테크코스 측에서 미션을 주시는 의도를 완전히 파악하기에는

    아직 나의 코딩 실력이 한참 모자라지만, 대충 이런 방향성이 아닐까 짐작하여 코딩을 했다.


    한가지 더.

    3주차 미션을 진행하다보니, 내가 시작할 때 예상했던 것보다 코드가 길어져서

    코드의 전체적인 구조를 바꿔야 하는 상황이 발생했었다.

     

    예전에도 이런 일이 발생한 적이 있었는데,

    그 때는 아무 생각없이 코드를 막 휘갈겼던지라,

    얘랑 쟤랑 여기랑 저기랑 윗집 아랫집 너나할 것 없이 얽혀있던 바람에

    이 메소드를 다른데로 옮기면 저 메소드에서 오류가 나버리고 난리가 났었다.

    그래서 도중에 때려치우고, 처음부터 다시 코드를 작성했던 기억이 있다. 😡

     

    하지만 메소드를 짧게 짧게 가져가고, 최대한 잘게잘게 분해 해놓으니

    메소드를 옮길 때 어디서 문제가 발생하는지도 한 눈에 파악할 수 있을 뿐더러

    문제가 발생하는 곳이 훨씬 줄어들더라.

    시간이 좀 들긴 했지만, 이전보다 훨씬 빠르고 수월하게 코드의 구조를 바꿀 수 있었다. 

     

    우테코를 향한 나의 믿음과 사랑이 집 지붕을 뚫고 올라가는 계기가 되었지. 😍


    📃 미리 작성하는 기능 구현 목록

    모든 프리코스 미션은 내가 구현할 기능의 목록을 작성하는 것부터 시작한다.

    물론, 아예 0에서부터 내가 다 작성해야하는 건 아니고

    우테코측에서 기능 요구사항과 프로그래밍 실행결과를 보여주면

    그걸 통해서 내가 어떤 기능들을 구현해야하는지를 짐작하고 계획하여

    README.md 파일에 그 목록을 작성하면 되는 것.

     

    나는 이제까지 몇 번의 팀 프로젝트를 제외하면 대부분 혼자서

    토이 프로젝트 수준의 프로그래밍밖에 해보지 않았기에

    무턱대고 시작해서, 그때 그때 상황에 맞게 기능을 구현하는 편이었다. 

    계획하는 게 귀찮기도 했고, 그게 더 유동적이고 좋은 줄 알았지. 🙃

    근데 그게 아니라는 걸 이번에 깨달았다.

     

    그리고, 계획을 함으로써 나중에 절약되는 시간까지 생각하면

    그리 귀찮은 일도 아니더라. 하는 깨달음까지.

     

    물론 내가 구현해야 할 기능을 처음부터 전부 생각해내서 완벽한 계획을 세우는 건 불가능하다.

    그렇지만, 큼직큼직하게 어떤 기능을 구현해야 하는지 대충 방향을 잡아놓으면

    코딩을 하면서 헤매는 일이 없어진다는 것을 이번에 확실하게 느꼈다.

     

    기능을 하나 구현하고나서, 그 다음에 어떤 기능을 구현해야하는지 멈춰서서 애써 떠올릴 필요가 없다.

    내가 작성해놓은 목록을 보고, '아! 이걸 할 차례구나.' 하고 바로바로 코딩을 하면 된다.

    중간에 발견되는 예외 사항이나 변경 사항들은 그때그때 목록에 추가해주면 되고.

    알고보니 필요없더라 하는 것들은 그 때에 가서 삭제해주면 되는 거고.

    우테코의 표현을 빌리면 '죽은 문서가 아니라 살아있는 문서를 만들어라'라고 하는데,

    언뜻 보면 시적인 것 같지만, 알고보면 꽤나 직관적인 표현이라고 할 수 있겠다.


    계획하는 건 그렇다 치고.

    정말 힘들었던 것 중에 하나가 README에 작성한 목록대로 커밋을 작성하는 것이었다.

    깃과 커밋의 근본적인 용도를 최대한 살리는 방향으로 커밋을 하는 것이라고 볼 수 있겠다.

    어떤 기능이 언제 삭제되고, 코드 시점을 되돌려야 하는 상황이 언제 올지 누구도 예측할 수 없기에

    기능별로 커밋을 해두는 건 상당히 중요한 습관이라고 볼 수 있다.

     

    이게 말이 쉽지, 막상 해보면 습관을 들이지 않은 사람들은 상당히 헤맬 것이라 장담한다.

    장담까진 아니고.. 예상한다.

     

    나는 이게 습관화 되어있지 않아서, 맨날 기능 한 2~3개 구현해놓고

    '아! 커밋 안했네..' 하면서 코드를 다시 되돌려서 커밋 하고, 다시 붙여넣고 커밋하고 이랬던 기억이 있다.

    덕분에 한 번도 사용해 본 적이 없던 여러 가지 깃 명령어들을 사용할 수 있었고

    본의 아니게 깃을 다루는 실력이 향상되었다는 해피엔딩. 😙


    커밋을 할 때, 커밋 메시지 또한 꽤나 사려깊게 작성해야한다.

    내가 아닌 누군가가 커밋 목록을 볼 때,

    그 사람이 원하는 커밋을 찾기 위해 코드를 샅샅이 뒤져볼 필요가 없게

    어떤 내용의 커밋인지를 커밋 메시지에 간략하면서도 빠짐 없이 담아내는 것이 중요하다.

     

    물론 하나의 내용도 빠지지 않고 죄다 담아낼 수는 없겠지만

    그래도 어떤 작업을 했는지, 어떤 기능을 구현한 커밋인지

    한 눈에 알 수 있게 핵심 내용만 담아내는 것이 관건이라고 볼 수 있겠다.


    ⚡ 스스로 하는 공부

    프리코스의 공통 피드백을 받아보면 생각보다 조금 어렵다는 느낌을 받을 수도 있다.

    그도 그럴 것이, 1:1 코드 리뷰나 1:1 피드백이 아닌 공통 피드백이다.

    개개인의 코드에 100% 딱 맞춰서 솔루션을 내려주는 게 아니라는 말씀.

     

    일부로 그런 걸수도 있고, 아니면 상황이 여의치 않아서일수도 있지만

    목적방향성, 그리고 그에 도움되는 몇몇 단어들 정도만 던져주는 느낌이다.

    이를 잘 받아들이고 내 것으로 온전히 흡수하기 위해서는,

    거기서 주는 목적과 방향을 가지고 나에게 맞는 내용을 직접 검색해서 찾아보고 공부해야한다.

     

    우테코 측에서 방향을 잡아주면, 우리는 거기에 맞게 혼자서 공부하기만 하면 된다. 

    사실 말로만 하면 누구나 하지. 막상 해보면 처음에는

    혼자서 하는 공부라는 게 쉽지 않다는 걸 느낄거다. 😋

     

    나도 내가 이렇게 공부할 수 있는 사람이라는 것을 몰랐기에, 많이 놀랐다.

    주어진 미션을 수행하기 위해서 책이고 유튜브고 인강이고 가리지 않고 찾아보고

    밤을 새가며 매달려서 결국에는 원하는 것을 찾아내고.

     

    내가 진정으로 흥미를 느끼고, 잘하고 싶어서 그런 건가.

    이런 경험은 스스로도 굉장히 신선하고 값진 경험이었다.

    처음에는 혼자서 해야하는 공부가 다소 낯설기도 했지만.. 😅

     

    아마 이런 습관은 우테코가 본격적으로 시작하면 꼭 필요한 습관이 아닐까 생각한다.

    이런 학습 능력을 가진 사람들이 긴 시간동안 지치지 않고 공부할 수 있을 것이고,

    우테코 측에서도 그걸 대비해서 프리코스동안 미리 알려주고, 습관을 기를 수 있게 해주는 것이겠지.

    누가 시켜서 하는 공부가 아닌, 내가 필요를 느끼고 직접 찾아서 하는 공부.

     

    아직도 많이 부족하지만, 앞으로 계속 반복하다보면

    언젠가는 아무런 도움을 받지 않고 목적과 방향성까지도 스스로 설정할 수 있는 사람이 될 것이라 믿는다.

    계속 스스로 찾아보고, 공부해서 내걸로 만들어내는 습관이 필요하다.


    우아한테크코스 프리코스를 마치고 느낀 것은,

    코딩만 잘한다고 훌륭한 개발자가 될 수 있는 건 아니구나. 라는 것.

     

    업계에서도 유능한 개발자들이 모여있기로 소문난 우아한형제들이 요구하는 바가 이런 것들이라면

    아마 앞으로 내가 개발자 인생을 살아가면서 가장 갖추려고 노력해야할 소양들이 바로 이런 것들이겠지. 싶다.

     

    (물론 구현 능력이 가장 우선시되어야 하겠지만.

    현업에서 일하시는 분들 입장에서는 당연하다고 여기시지 않을까 하는 나의 생각. 😅)

     

    구현 능력도 갖추고, 남을 위한 코드를 작성할 수 있는 능력까지 갖춘다면

    모두가 함께 일하고 싶어하는 인기쟁이 개발자가 될 수 있지 않을까. 😎


    처음에는 간단히 후기만 작성하려 했는데

    쓰다보니 프리코스동안 배운 내용을 되짚어보게 되고

    그러다보니 글이 엄청 길어졌다.

     

    이런 장대한 깨달음을 얻을 수 있도록 도와주신 🥰우아한테크코스 담당자분들께😍 무한한 감사를 전합니다.

     

    이제 곧 최종 테스트를 보고 나서 우아한테크코스에 본격적으로 합류를 할지 말지가 결정될텐데

    개인적인 바람이 있다면, 프리코스 후기를 남긴 이상 꼭 합격을 해서

    프리코스 후기만 덩그러니 남아있는 민망한 블로그가 되지 않았으면 하는 것.

    그것이 나의 바람이다. 🙈


    한 분 정도는 우아한테크코스 관련 글을 찾아보기 위해

    인터넷 여기저기를 헤매다가 여기에 도달한 분들이 계실거라고 생각합니다.

    그럴 거라고 믿습니다.. 😭

     

    그 분들에게는 미안한 마음이 있네요.

    글을 쓰고 보니, 우아한테크코스를 준비하거나 코딩테스트에 관한 팁 같은건 하나도 없어서.

    글 자체가 우아한테크코스에 관한 '후기'이다보니 그렇게 됐습니다요.

     

    하지만 꼭 드리고 싶은 말이 있다면

    되든 안되든, 코딩을 잘하든 못하든, 남녀노소 상관없이

    너무 깊이 고민하지 말고 일단 지원하셔도 될 것 같아요.

     

    합격해서 우아한테크코스에 합류하면 더할나위 없이 좋겠지만

    합격했는데 여건이 안돼서 합류를 못해도 상관없고(설명회에서 괜찮다고 그러셨어요..🙄),

    정말 열심히 했지만 아쉽게 떨어져도 괜찮을 거예요.

    프리코스만 경험하더라도 혼자 공부할 때는 얻지 못했던 귀중한 경험들과 소중한 피드백들이

    여러분을 더 나은 개발자가 될 수 있게 도와줄 거라고 생각합니당.

     

    반응형

    'Diary' 카테고리의 다른 글

    2021년 11월 셋째 주 기록  (0) 2021.11.18
    1월 중순  (0) 2021.01.15
    🎆 시험 끝 🎆  (0) 2020.12.21
    다시 포스팅 시작  (0) 2020.10.24
    📖 일일 공부량 정하기  (0) 2020.09.17

    댓글

Designed by Tistory.