[우아한테크코스] 우테코 프리코스 1주차 회고

yesjuhee·2022년 11월 3일
0

우아한테크코스

목록 보기
1/2

🗓️ 2022-10-26(수) ~ 2022-11-1(화)
우아한테크코스 5기 프리코스 1주차가 끝났다!
아무것도 준비가 되지 않은 상태로 경험을 위해 시작했는데, 그냥 흘러보내긴 아까우니 기록을 시작해본다. 🤟

우테코 지원 동기

정말, 그냥, 우연하게 학교 열람실 옆 게시판에서 우테코 5기 모집 포스터를 보게됐다. 인사캠인데 우테코 포스터가 있다니 웬일이야ㅎ. 원래 이런 부트캠프 형식의 프로그램에 참여하고 싶었는데 놓칠 수 없는 기회라 거의 하루만에 지원서를 작성하고 아무것도 준비가 안 된 상태로 우테코를 시작하게 되었다!!!
이번 우테코는 특이하게 지원한 누구에게나 4주의 프리코스 과정에 참여할 기회를 준다. 이런 고급 경험을 할 수 있다는 점이 가장 마음에 들어서 망설임 없이 지원하게 되었다. 내가 지원한 부분은 백엔드. Java로 미션을 진행하는데 나는 자바를 한 번도 해본 적이 없다. 즉, 맨땅에 해딩 중이다.🤪
내가 우테코에 지원한 이유는 합격이 아니라 경험을 위해서이다. 지식과 실력이 너무 부족하다는 것을 알기 때문에 최대한 많이 경험하고 이 과정을 통해서 배우는 것이 목표이다. 1주차가 지났는데 느낀 것이 많아 정리를 해 보려고 한다.

1주차 미션 회고

https://github.com/woowacourse-precourse/java-onboarding
1주차 미션은 Java를 이용하여 위에 제시된 7가지 문제를 해결하는 것이었다. 1주차 미션의 목표는 git, Java, 미션 사이클에 익숙해지는 것! 나에게는 셋 중 어느 하나도 익숙하지 않았기 때문에 배울 것이 넘처나는 한 주였다.
프리코스 1주차를 진행하며 공부한 것, 새롭게 배운 것, 아쉬웠던 점을 정리해본다.

📚공부한 것 / 배운 것

Java

  • 책 구입
    미션이 자바로 진행됐기 때문에 당연히 일단 자바를 공부해야 했다. 공부의 기본은 책! 공부할 책을 직접 고르기 위해 교보문고로 달려가서 제일 마음에 드는 책을 하나 샀다. 자바의 정석 책이 유명하다는 것은 알고 있었는데 막상 보니까 너무 두꺼워서 이거 읽다가 미션 못 풀 것 같다는 생각이 들어 적당한 두께를 가지고 있는 Must Have 이재환의 자바 프로그래밍 입문책을 구입했다.
  • 공부
    책으로 공부한 내용을 벨로그에 정리하는 방식으로 공부를 했다. 학교에서 배웠다면 몇주에 걸쳐서 할 내용을 하루이틀만에 한 것 같다.
    [Must Have Java] 선수수업 내용 정리
    [Must Have Java] 1단계 - 자바 기초 프로그래밍

Git / GitHub

  • 깃/깃허브는 예전부터 공부 해야지 해야지 말만 하다가 개념만 조금 공부하고 정작 활용은 못하고 있었는데 미션을 진행하면서 자연스럽게 공부를 하게 됐다.
  • 사실 공부라기보단 fork > clone > add > comit > push > pull request 과정을 따라가보기만 했다.
  • 새롭게, 그리고 중요하게 배우게 된 것은 두 가지다.
    • 커밋 메시지는 일정한 형식으로!
    • 커밋은 기능 단위로!

클린코드, 코드 컨벤션

  • 클린코드, 코드 컨벤션의 개념 자체를 우테코를 진행하면서 알게 되었다.
  • 학교에서 배우는 것과 실전의 차이를 이 부분에서 가장 많이 실감했다.
  • 사실 클린코드 개념을 적용하기에 아직 내 실력이 부족해서 많은 것은 지키지 못하고, 네이밍 부분을 신경써서 하려고 노력하였다.
  • 다음 주차부터는 이 부분을 좀 더 신경쓰고 싶다!

기능 목록

  • 이번 미션에서 강조되었던 것 중 하나가 미션의 기능 목록을 스스로 만들어 구현하는 것이었다.
  • 기능 목록을 작성하는 과정에서 미션의 제한 사항이 모호하다고 느껴지는 부분이 있었는데 코수타(코치와 수다 타임)을 통해서 이 모호한 제한 사항 또한 실전의 일부라는 것을 알게 되었다😬.
  • 기능 목록을 통해 문제를 해결하는 과정을 습관화 해서 앞으로 마주치는 다른 문제들에도 적용해 보려고 한다!

기록

  • 원래 내사랑 노션을 이용해서 거의 모든 기록(일상, 공부, 일, 프로젝트 등)을 해왔는데 우테코 1주차를 진행하면서 블로그를 만들자는 결심을 했고 이렇게 시작하였다!
  • 내가 생각하는 개발자 블로그를 쓸 때의 장점
    1. 누구나 볼 수 있는 기록으로 남는다. 즉, 나를 증명하는 용으로 사용할 수 있다.
    2. 프로그래밍 관련 내용만 골라서 정리하기에 좋다.
    3. 다른 사람들과의 공유, 상호작용에 유리하다.
  • 앞으로도 프로그래밍 관련 공부, 관련 활동 기록 용으로 이 블로그를 이용할 것이다!!

🧐 아쉬웠던 점 / 피드백

Java 공부

👎 자바를 공부할 때 너무 시간에 쫓기면서 공부해서 아쉬웠다. 기본 문법만 최대한 빠르게 완료하고 바로 미션으로 넘어갔는데 애매하게 아는 상태에서 미션을 해결하려고 하니까 이상한 방법으로 풀게되고 오히려 낭비되는 시간이 많았다. 특히 리스트/배열 같은 콜렉션 개념을 제대로 공부하지 않고 진행하니까 구글링을 하여도 이해가 어려웠고 오류가 났을 때 그 원인을 찾아낼 수 있는 힘이 없었다.
👍 이번 주차에는 자바 공부를 먼저 선행하고, 미션을 진행하려고 한다. 일단 지금 가지고 있는 책 완독하기!

Git / GitHub

👎 공부를 하고는 있는데 관련 원리나 개념을 공부할 시간이 없었다. 지금 내가 뭘 하고있는건지 궁금해!!
👍 1주차 공통 피드백에 깃허브 공부 소스가 같이 올라왔다. 야무지게 공부해야지~~

1주차 공통 피드백

1주차 공통 피드백 중 나에게 해당하는 것들.

git을 통해 관리할 자원에 대해서도 고려한다

.class 파일은 java 코드가 있으면 생성할 수 있다. 따라서 .class 파일은 굳이 git을 통해 관리하지 않아도 된다.
IntelliJ IDEA의 .idea 폴더, Eclipse의 .metadata 폴더 또한 개발 도구가 자동으로 생성하는 폴더이기 때문에 굳이 git으로 관리하지 않아도 된다.
앞으로 git에 코드를 추가할 때는 git을 통해 관리할 필요가 있는지를 고려해볼 것을 추천한다.

Pull Request를 보내기 전 브랜치를 확인한다

기능 구현 작업을 fork된 Repository의 main branch가 아닌, 기능 구현을 위해 새로 만든 브랜치에서 작업한 후 PR을 보낸다.
PR을 한 번 작성했다면 닫지 말고 추가 커밋을 한다
PR을 이미 한 번 보냈다면, 새로운 PR을 생성할 필요가 없다. 수정이 필요하다면 추가 커밋을 하면 자동으로 반영된다. 단, 미션 제출 기간 이후에는 추가 커밋을 하지 않는다.

이름을 통해 의도를 드러낸다

나 자신, 다른 개발자와의 소통을 위해 가장 중요한 활동 중의 하나가 좋은 이름 짓기이다. 변수 이름, 함수(메서드) 이름, 클래스 이름을 짓는데 시간을 투자하라. 이름을 통해 변수의 역할, 함수의 역할, 클래스의 역할에 대한 의도를 드러내기 위해 노력하라. 연속된 숫자를 덧붙이거나(a1, a2, ..., aN), 불용어(Info, Data, a, an, the)를 추가하는 방식은 적절하지 못하다.

축약하지 않는다

의도를 드러낼 수 있다면 이름이 길어져도 괜찮다.

누구나 실은 클래스, 메서드, 또는 변수의 이름을 줄이려는 유혹에 곧잘 빠지곤 한다. 그런 유혹을 뿌리쳐라. 축약은 혼란을 야기하며, 더 큰 문제를 숨기는 경향이 있다. 클래스와 메서드 이름을 한 두 단어로 유지하려고 노력하고 문맥을 중복하는 이름을 자제하자. 클래스 이름이 Order라면 shipOrder라고 메서드 이름을 지을 필요가 없다. 짧게 ship()이라고 하면 클라이언트에서는 order.ship()라고 호출하며, 간결한 호출의 표현이 된다.

객체 지향 생활 체조 원칙 5: 줄여쓰지 않는다 (축약 금지)

공백도 코딩 컨벤션이다

if, for, while문 사이의 공백도 코딩 컨벤션이다.
공백 라인을 의미 있게 사용한다
공백 라인을 의미 있게 사용하는 것이 좋아 보이며, 문맥을 분리하는 부분에 사용하는 것이 좋다. 과도한 공백은 다른 개발자에게 의문을 줄 수 있다.

의미 없는 주석을 달지 않는다

변수 이름, 함수(메서드) 이름을 통해 어떤 의도인지가 드러난다면 굳이 주석을 달지 않는다. 모든 변수와 함수에 주석을 달기보다 가능하면 이름을 통해 의도를 드러내고, 의도를 드러내기 힘든 경우 주석을 다는 연습을 한다.
IDE의 코드 자동 정렬 기능을 활용한다
IDE의 코드 자동 정렬 기능을 사용하면 더 깔끔한 코드를 볼 수 있다.

IntelliJ IDEA: ⌥⌘L, Ctrl+Alt+L
Eclipse: ⇧⌘F, Ctrl+Shift+F

Java에서 제공하는 API를 적극 활용한다

함수(메서드)를 직접 구현하기 전에 Java API에서 제공하는 기능인지 검색을 먼저 해본다.
Java API에서 제공하지 않을 경우 직접 구현한다.
예를 들어 사용자를 출력할 때 사용자가 2명 이상이면 쉼표(,) 기준으로 출력을 위한 문자열은 다음과 같이 구현 가능하다.

List<String> members = Arrays.asList("pobi", "jason");
String result = String.join(",", members); // "pobi,jason"

배열 대신 Java Collection을 사용한다

Java Collection 자료구조(List, Set, Map 등)를 사용하면 데이터를 조작할 때 다양한 API를 사용할 수 있다.
예를 들어 List에 "pobi"라는 값이 포함되어 있는지는 다음과 같이 확인할 수 있다.

List<String> members = Arrays.asList("pobi", "jason");
boolean result = members.contains("pobi"); // true

마무리

2주차도 고생 길이 훤히 보인다ㅋㅋ 이번주는 7일 중 몇 밤을 새게될까..?
하지만 완주가 목표! 반성은 하되 후회하지 말자!

profile
반성은 하되 후회하지 않는다😎

2개의 댓글

comment-user-thumbnail
2022년 11월 4일

잘보고갑니다!

1개의 답글