우아한테크코스 첫 주차가 정말 정신없이 지나갔네요 최대한 있었던 일들과 배웠던 것들을 기억해두려고 매주 회고를 꼭 작성해두려고 합니다 우아한테크코스 1주차에서는 페어 프로그래밍과 연극을 통해서 아이스브레이킹과 온보딩을 하는 과정을 중심으로 진행되었는데요 회고를 매주 적으려고 한 이유기도 하지만, 정말 좋은 페어를 만나고, 코드 리뷰도 받고, 연극도 진행해보는 것들이 하나같이 다 기억에 남는 경험이었습니다 안 적으면 까먹을 것 같았거든요 자동차 경주 페어 프로그래밍 2~3일 동안 페어 프로그래밍을 통해서 진행했는데요 페어 프로그래밍이나 협업하면 당연하지만 스타일을 맞추고, 전체적인 과정을 조율하는 것에 신경을 써야 합니다 조율했던 내용들 1. 기능 목록은 어떻게 작성하는지 2. 어떤 클래스를 둘 것인지 3..
실제 제출했던 코드는 여기 있습니다 제출했던 소감문을 바탕으로 적었습니다 이번주 목표 1번만 완벽하게 만들자 1~3주차 까지는 그냥 코드를 많이 짜봐야 될 것 같다는 불안감이 있었기에 많이 짜려고만 했던 것 같습니다 실제로 2, 3주차는 다시 만들어보자는 생각을 가지고 총 3번씩 같은 코드를 작성했기에 여러 요구사항들 중 놓쳤던 부분이 있던 점이 아쉬웠습니다 꼭 프리코스만이 아니더라도 조금 안 좋은 코드임에도 요구사항을 완벽하게 지켜주는 쪽이 더 좋은 개발자라는 생각이 코수타를 통해서 들게 되었습니다 지금까지의 방식과는 거의 반대되는 느낌이라서 이 부분을 내려놓는 과정을 거쳤습니다 같은 문제를 여러번 푸는 것도 많이 배울 수 있었지만, 생각이 굳어버리는 과정이 있었습니다 그래서 하지 않았던 한 번의 코드..
우아한 테크코스 3주차 후기 마지막에 제출했던 코드는 https://github.com/be-student/java-lotto/tree/be-student 에 있습니다 이번 주차도 총 3번에 걸쳐서 코드를 만들었습니다 2주차도 3번 같은 코드를 만들고, 내다 보니 시간은 물론 많이 들지만, 많은 것들을 배웠습니다 3주차도 같은 코드를 3번 짜다보니 당연하게도 많은 것들을 배울 수 있었습니다 1번째 만드는 과정 정말 잘 짠것 같아보였던 분의 코드에 있는 기능들을 가져가보자 라는 생각으로 시작하게 되었습니다 1. @ValueSource 2. @ParameterizedTest 3. enum으로 싱글톤을 보장하는 view 객체들 4. view의 책임을 어디까지 볼 것인가 5. 커스텀 에러 6. MessageFo..
우아한테크코스를 하면서 정말 많은 변화가 있었고 배우고 있습니다 실제 제출했던 소감문을 바탕으로 작성되었습니다 실제로 작성했던 코드는 여기에서 확인하실 수 있습니다 알게 되었던 점 1. 기능 목록은 진행 순서와 관계가 없다 2. 변경을 고려해서 추상화 해야 한다 3. 주석을 다는 작업이 생각보다 커다란 효용을 준다 4. 코드에 제약을 걸 수록 좋은 코드가 나온다 5. 모든 코드를 테스트 할 필요는 없다 1. 기능 목록은 진행 순서와 관계가 없다 1주차에는 진행 순서를 그대로 기능 목록으로 작성하려고 했었는데 그 순서대로 커밋을 하려니 진짜 너무너무 힘들고, 작성하기가 힘들었었던 경험이 있습니다 2주차 문제를 3번째로 새롭게 작성할 때 기능 목록과 진행 순서를 분리하고, 기능 목록을 작성하기 시작했는데 그..
이 글에는 문제에 대해서만 딱딱하게 적혀있습니다 개인 복습용 노트 느낌으로 작성한 것이기 때문에 큰 도움이 되지 않을 수도 있습니다 2주차를 통해서 얻을 수 있었던 것 1. 전체 프로그래밍 과정의 프로세스에 대한 정립 전체 흐름 작성 흐름 속에서 생길 수 있는 모든 개념 작성 개념들에 대해서 단위 테스트를 작성함 2. 추상화를 통한 테스트 가능한 코드들 출력같은 경우 바로 System.out.println을 통해 출력하게 된다면 이 부분을 테스트 하기 정말 어려움 중간에 객체가 하나 있고, 그 객체에 제대로 값이 전달되는 것만 확인한다면 그 자체로 충분할 수 있음 3. 중간 구현체를 두는 상황에서의 인터페이스의 유효성 중간 구현체는 당연하지만 실제 클래스가 되었을 경우 너무 강하게 결합되어서 추후 분리가..
코드가 나오게 된 이유 처음에는 절차지향적으로 코드를 빠르게 완성시키는 것 만을 목적으로 코드를 작성했었습니다 7번까지 다 풀고 리팩토링을 하려고 여러가지 자료들을 찾아다니는 중에 이렇게 짜지 말라는 피드백을 받았습니다 전부 static 메소드로 분리하고, inner class를 쓰고, 그런 방식은 알고리즘 문제에 있어서는 좋은 방법이라도, 코스에 기준에는 맞지 않을 수 있다는 내용이었습니다 https://github.com/woowacourse/woowacourse-docs/blob/main/cleancode/pr_checklist.md 실제로 테크코스가 지키기를 권장하는 부분과는 살짝 거리가 있어보였습니다 그래서 최대한 객체지향적으로 책임을 나눠서 쪼개고, 여러 규칙을 지키는 것을 목적으로 했습니다 ..
미리 계획했던 총 6가지 항목에 대해서 미리 알아볼 예정입니다 1. 초기 환경 세팅에 대해서 gitattribute나, 추가해야 할 것들을 미리 알아볼 수 있다 1-1. utf-8로 인코딩 하는 설정 https://goddaehee.tistory.com/248 를 통해서 intellij의 utf-8설정을 완료해둔다 추후 spring을 통한 톰캣 서버에 encoding이 필요할 수 있습니다 .gitattributes *.java text eol=lf 를 통해서 미리 lf로 개행문자 쳐리를 해둔다 https://stackoverflow.com/questions/24355976/how-to-change-line-width-in-intellij-from-120-character 를 통해 120글자가 넘어가면 자..
좋아하는 책 제목이 생각에 관한 생각인데, 내용적인 것 보다는 제목이 기억에 많이 남았었습니다 프로젝트에 대한 계획이 아니라 프로젝트를 설계하는 그 일반적인 과정을 고려하는 과정을 좋아합니다 완성까지는 하지 않더라도 대충 프로세스를 이해할 수 있을 정도까지는 작성해보았습니다 간단한 목표이자 설계 과정 특정 프로젝트가 아닌, 프리코스 프로젝트를 만들 때 필요한 것들을 적고자 합니다 정말 좋은 문제를 미리 해보면서 참여했을 때의 느낌을 잃어버리기 싫어서 완성까지는 가지는 않았습니다 프로젝트의 빡빡한 제약조건을 고려해보고 각 프로젝트를 통해 얻게 하고자 하는 것이 무엇일지 고민해보았습니다 좋은 프로젝트란 무엇인가? 1. 다른 사람이 알아보기 쉬운 프로젝트 이 조건을 정말 세심하게 쪼개두었습니다 1. 커밋메시지..
자기소개서 작성하기 위한 과정들 어떤 사람을 뽑고 싶은지, 어떤 교육 과정이 있는지를 알아보았습니다 10개월이라는 긴 시간동안 교육과정을 진행하는데 정말 메리트가 있을까? 라는 고민을 했습니다 나만의 자기소개서를 자기소개서를 만들었습니다 사전 조사 '우아한테크코스에서 뽑고 싶어하는 사람이 누구일까?' 라는 내용과 우아한테크코스의 교육과정은 뭘까? 라는 내용을 알기 위해서 블로그도 찾아다니고, 유튜브도 찾아다니고 다양하게 찾아다녔습니다 핵심 역량 재교육 없는 실무 인재, 자기주도 학습, 현장 중심 경험 교육 방식 미션기반의 코드리뷰 중심, 소통과 협업 위주 학습, 현장 중심 교육 교육 대상 몰입, 프로그래밍, 현장 까지가 홈페이지에 있는 키워드였습니다 기억에 남는 내용들 정말 훌륭한 팀원 전체 팀원의 95..
interface와 abstract class의 차이가 뭘까요? 이 질문을 하게 된 배경 Cloneable함수가 동작하는게 너무 이상했어요 https://velog.io/@suky/Java-Cloneable%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B3%A0%EC%B0%B0 Java: Cloneable에 대한 고찰 이펙티브 자바를 읽다가 문득 든 의문을 풀기 위하여 삽질한 기록입니다. 🤣 velog.io 대체 왜 interface만 구현했는데, 모든 코드가 알아서 작동할까요? Java8에 오면서 interface에도 default 메서드를 만들 수 있고, static 메서드까지 만들 수 있는데, 그러면 abstract class 와의 차이가 뭘까요? 1. 다중 상속이 가능하다. 2. 접근..