우아한 테크캠프 Pro — 1주차

Byungkyu Ju
byungkyu-ju
Published in
5 min readDec 23, 2020

1주차

https://unsplash.com/photos/A8tMJdHWJH4

1주차 미션을 시작하기전에 NEXTSTEP의 방향, 그리고 이번 테크캠프에 대한 설명과 보다 미션을 잘 진행하기 위한 가이드를 들을 수 있었다.

이번 교육코스는 웹 백엔드 개발자들에게 하나의 가이드역할을 하기 위해 만든 강의라고 한다. 캠프리더인 포비는 캠프의 교육과정도 중요하지만 꾸준히 학습하는 습관을 기르는 시간이 되었으면 좋겠다고 하며, 미션을 통해 자기주도적으로 학습하는 습관을 만들고 프로그래밍을 즐기는 개발자가 되면 좋겠다는 바람을 얘기했다.

총 9주동안 7개의 미션을 진행하게 되며, 하루 3–4시간 혹은 그 이상의 시간을 투자해야만이 성공적으로 미션을 완료할 수 있을꺼라는 얘기를 하고 이전까지 NEXTSTEP의 교육과정을 전부 마친 완료율은 20–30% 정도라고 한다.

포비는 미션을 완료하기 위해 주변환경을 변화시키기를 추천했다.

시간확보

  • 여자친구와의 만남 시간 조정
  • 친구와의 약속 끊기

우선순위 조정

  • 프로그래밍 관련 책만 읽기
  • TV보지 않기, 게임하지 않기

주변 환경을 변화시키기

  • 주변 환경을 정리해 꾸준히 연습할 시간을 확보
  • 변화를 위한 의지력보다는 환경이 중요. (극단적)간절함을 만든다(퇴사)

여러분의 의지력을 믿지 마라. 절대로.

환경을 바꿔라. — 포비

라이브코딩은 메서드 분리와 클래스 분리, TDD에 대한 내용이었다.

포비가 말하는 TDD는 TFD(Test First Development) + 리팩토링이라고 한다.
실패하는 테스트케이스를 작성하고 테스트 클래스를 기반으로 클래스, 메서드를 만들어 가면서 성공하는 테스트케이스로 변화시키는것이 TFD.
그리고 테스트케이스를 깨뜨리지 않고 코드를 지속적으로 수정해나가는 리팩토링을 하는것까지 TDD라고 한다.

http://www.agilenutshell.com/test_driven_development

TDD를 잘 하기 위해서는 요구사항을 잘 분석해서 TODO LIST를 만들고, 문제를 기능별로 잘 쪼개서 시작하는 것이 좋은 방법이라고 한다.

1주차 미션

1주차 미션은 TDD로 문자열 계산기와 자동차 경주 게임 만들기였다.

복잡한 기능을 구현하는 것이 아닌 객체지향 생활 체조 원칙을 기준으로 요구사항을 구현하는것이 목표였다.

문자열 계산기를 구현하면서 Enum과 BiFunction을 통해 고정된 연산자에 따라 기능을 동작하게 구현하였다.
기능 자체는 간단하지만 코드를 좀 더 개선시키기 위해 계속 고민을 해야 했었고, 구현 방식에는 정답이 없기 때문에 고민하는 과정속에서 어려움을 느꼈다.

DTO의 경우 회사내에서 형식적으로 사용할 정도로 고정되어 있는 개념이지만, 아무것도 없는 자바 프로젝트에서 코드를 개선해나가는 중에 DTO의 용도를 생각한다는게 생각보다 쉽게 떠오르지 않았다.

객체를 객체답게 사용하는 것도 코멘트를 통해 한 번 더 인지하게 되니,의식적으로 코딩을 할 수 밖에 없다는 것도 엄청 유용한 포인트다.

디자인패턴도 쉽게 떠올리기 어려운데 기존 코드를 어떻게 개선해야 할지 리뷰어를 통해 감을 잡을 수 있었고, 구현 이후에도 피드백을 받을 수 있어서 바르게 개선을 했는지도 알 수 있었다.

1주라는 짧다면 짧은, 길다면 길다는 시간동안 좋은 리뷰어를 만나서 즐겁게 개발을 했다. 리뷰어에게 배울 수 있는것은 개발실력 뿐만 아니라 코드를 보는 태도, 개선 포인트를 찾는 방법, 그리고 타인에게 어떻게 설명을 하느냐에 대한 의사소통 방법도 배웠다고 생각한다.

--

--