대외활동

    [우아한테크코스] 레벨3 프로젝트[커디]를 마치며..

    눈 깜짝할 사이에 우아한테크코스(이하 우테코) 레벨 3 교육 과정이 마무리되었다. 6월 6일, 마지막 포스팅 날짜를 보면 거의 2달 반 동안 포스팅을 작성할 시간이 부족했음을 알 수 있다. (이에 대한 원인은 아래에서 다룰 것이다.) 레벨 3 교육 과정을 아래에 보이는 기승전결 그래프로 요약할 수 있다. 그래프에서 보이는 것처럼, 문제 발생으로 우리 팀은 다른 팀에 비해 부족한 시간을 가지게 되었다. 지금부터 커디 프로젝트에 대해 기승전결로 풀어나갈 것이다. 기(起) : 화목한(?) 프로젝트의 시작 우테코는 레벨3 교육 과정에서 이전 단계에서 배운 지식들을 바탕으로 팀 프로젝트를 진행한다. 여러 크루들은 레벨 2 교육이 종료되기 전에 아이디어를 제출하며, 선정된 아이디어에 따라 크루들을 랜덤하게 배치하는..

    [우아한테크코스] 📚 레벨로그 - 레벨1 인터뷰

    📚 레벨로그 원시값, 컬렉션을 왜 포장해야 하는가? 원시값, 컬렉션을 하나의 클래스로 감싼 형태를 래퍼 클래스, 일급 컬렉션이라고 한다. 원시값과 컬렉션을 포장하면 상태에 대한 처리를 외부가 아닌 내부에서 할 수 있다. 즉, 상태를 외부에 노출시키지 않고, 객체에게 메시지를 던지는 구조로 만들면서 객체지향적이고 응집도 높은 설계가 가능하다. Wrapping한 상태에 대한 로직을 여러 곳에서 중복적으로 작성할 필요가 없다. 하나의 클래스 내에서 행위를 관리하므로, 상태에 대한 로직이 변경되었을 때 단 하나의 클래스만 수정하면 된다. (높은 유지보수성을 보장한다.) TDD(Test Driven Development)란? TDD는 테스트 주도 개발로, 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 방법론이..

    [학습로그] 최신 Android에서는 왜 MVC 패턴을 사용하지 않는가?

    지금까지 우아한테크코스 미션들은 모두 Console 환경이었습니다. 대부분 매 미션별로 MVC 패턴을 반복적으로 적용하면서, 어느 정도 익숙해짐에 따라 비교적 코드를 수월하게 작성할 수 있었을 것입니다. 하지만 이번 주차에 들어서면서 새로운 요구사항이 추가되었습니다. 기존 Domain은 그대로 유지한 채로, Console 환경을 Android로 옮기는 순간 문제가 발생하였습니다. "앱 UI를 적용할 때 도메인 객체의 변경을 최소화해야 한다." 처음에는 몰랐지만 아래와 같은 상황에서 문제가 발생했습니다. Console에서 Custom Listener를 사용한 경우 Console은 I/O 기반으로 이루어져 있습니다. 별도로 Event listener interface를 만든다면, 마치 이벤트 기반 프로그래..

    [우아한테크코스] 함수형 프로그래밍(Functional Programming)이란?

    프로그래밍 패러다임은 프로그래머에게 프로그램을 어떻게 바라볼지에 대한 관점을 제공합니다. 명령형 프로그래밍 프로그래밍의 상태와 상태를 변경시키는 구문의 관점으로 접근하는 프로그래밍 방식. 명령형 프로그래밍은 컴퓨터가 실행할 명령들을 실행 순서대로 구현해야 한다. 대부분의 객체 지향 프로그래밍 언어가 명령형 프로그래밍 언어이다. 알고리즘 처리 작업에 적합한 언어이다. 절차지향 프로그래밍, 객체지향 프로그래밍이 이에 속한다. 예시) point를 얻기 위해 실행할 명령들을 순서대로 구현 fun getPoint(customer: Customer): Int { for (i in 0..customers.size) { val c = customers[i] if (customer == c) { return c.poin..

    [우아한테크코스] 우아한테크코스 한 달 생활기

    정신없이 살다 보니 우테코를 시작한 지 어느덧 한 달이라는 시간이 지났다. 왕복 3시간 거리를 통학하는 것은 생각보다 쉽지 않았다. 정신을 차려보면 선릉역에 도착한 모습에 헛웃음이 나오기도 한다. 이렇게 어느 크루의 하루가 시작된다. 우테코 전에는 10시가 넘어서 일어나는 경우가 많았다. 눈을 떠도 1시간은 침대에 누워서 휴대폰을 하기 일쑤였다. 그러나, 한 달 사이에 늦잠은 하나의 과거가 되었다. 이제는 적어도 "출석"이라는 목적이 있기 때문이다. 이 또한 내면의 과업을 이룬 것으로 생각하며 소소한 뿌듯함을 느낀다. 사실 첫 주가 시작되기 전에 걱정이 이만저만이 아니었다. 내성적인 성격 탓에 사람들과 잘 어울릴 수 있을지 걱정이 많았기 때문이다. 하지만 쓸데없는 걱정이었다. 대부분의 크루들이 서로 배려..

    [우아한테크코스] 원시값 포장과 일급컬렉션은 무엇이고, 어디까지 감싸야 할까?

    원시값 포장과 일급컬렉션의 사용은 소트웍스 앤솔로지의 객체지향 생활체조로부터 시작되었습니다. 1. 모든 원시값과 문자열을 포장한다. 2. 일급 컬렉션을 쓴다. 해당 포스팅에서는 원시값 포장과 일급 컬렉션이 무엇인지, 그리고 무조건 원시값과 컬렉션을 무조건 감싸주는 것이 옳은가에 대해 알아보겠습니다. 원시값 포장 원시값 포장은 Primitive 타입을 그대로 사용하지 않고, 객체로 사용하기 위해 하나의 클래스를 선언해주는 것을 의미합니다. Lotto 미션에서 로또 번호를 단순히 Int로 사용할 수도 있지만, 우리는 원시값을 포장하라는 요구사항을 받았기에 대부분 아래와 같이 코드를 작성했을 것입니다. class LottoNumber(val value: Int) { init { validateLottoNumb..

    [우아한테크코스] 2주차 - 점진적 리팩터링(Incremental Refactoring)

    이번 강의에서는 점진적 리팩터링에 대해 공부하였습니다. 점진적 리팩터링(Incremental Refactoring)은 한 번에 많은 코드를 바꾸는 것이 아니라, 여러 작은 단계로 나누어 변경하는 방법입니다. 기존 코드를 변경하는 일은, 해당 코드를 사용하는 곳에서 예기치 못한 오류를 발생시키거나 컴파일 에러가 발생할 수도 있습니다. 다른 블로그의 포스팅을 인용하자면 "굴러가는 자동차의 바퀴를 바꾸는 행위와 같다." 라고 말하고 있습니다. 다시 말해, 잘 돌아가는 코드를 개선하기 위한 목적이었지만, 그만큼 리스크를 가진다는 의미입니다. class Lotto(private val numbers: List) { fun match(lotto: List): Int { numbers.count { lotto.con..

    [우아한테크코스] 2주차 - 로또(자동) 미션 회고 및 피드백

    우아한테크코스 로또(자동) 미션에서는 TDD를 도입하여 페어프로그래밍을 하였습니다. 기존과 다르게 TDD 사이클을 기반으로, 3단계(실패하는 테스트 코드 작성 -> 가능한 빠르게 성공하는 테스트 코드 작성 -> 리팩터링)를 거치다 보니 시간이 촉박하였습니다. 하지만 1주차때와 달리, 테스트 코드를 우선적으로 작성하다 보니 가능한 많은 경우에 대해 생각해 볼 수 있었고, 도메인 모델에 기능을 추가할 때 더 높은 신뢰를 가질 수 있었습니다. 기능이 수정되어도 기존에 작성해놓은 테스트 코드를 통해 쉽게 검증할 수 있었기에, 테스트 코드를 믿고 과감하게 리팩터링 할 수 있었습니다. 또한, 코치님의 말씀대로 TDD를 적용하니, Green에서 Refactor 단계로 넘어가는 과정에서 어떠한 로직이 추가되어야 할 근..

    [우아한테크코스] 2주차 - TDD(Test Driven Development)

    테스트 주도 개발(Test-driven Development TDD)은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 방법론(또는 프로세스) 중 하나입니다. TDD는 단순한 설계를 장려하고 자신감을 불어넣어 주는 역할을 합니다. TDD = TFD(Test First Developent) + 리팩토링 1. 빨강 - 실패하는 작은 테스트를 작성합니다. 처음에는 컴파일조차 되지 않을 수 있지만 일단 작성합니다. 2. 초록 - 가능한 빨리 테스트가 통과하게끔 만듭니다. 테스트가 통과하기 위해서 어떠한 죄악을 저질러도 좋습니다. 3. 리팩터링 - 초록 단계에서 일단 통과하게만 작성한 코드를 완전한 형태로 리팩터링합니다. (매직 넘버, 리터럴 제거 / 중복 제거 등 / 도메인 모델 검증 함수 추가) 죄악이란 기..

    [우아한테크코스 5기] 1주차 회고 - (양념 반 후라이드 반) 설렘 반 걱정 반

    2월 7일을 시작으로 우아한테크코스 5기가 시작했습니다. 필자는 영광스럽게도 'AOS 부나'라는 이름으로 우테코에 참여할 수 있게 되었습니다! 사실 우테코가 시작되기 전에 기대와 설렘도 있었지만, 내향적인 성격 탓에 걱정 또한 많이 했습니다. 하지만 처음으로 팀원들과 매칭되고 이야기를 나눠보니 괜한 걱정이었다는 것을 알 수 있었습니다. 다들 친절과 열정까지 겸비하신 분들이었습니다. 처음 캠퍼스에 들어오자마자, 말로만 듣던 열려있는 IT기업 사무실 냄새가 폴폴 진동했습니다. 앞으로의 10개월이 기대되는 순간이었습니다! 한 주를 보내면서 느꼈던 점은 일단 경기에서 선릉역까지 출퇴근 시간대에 오가는 것이 체력 소모가 크다는 점이었습니다. 또한, 강남 근처라 그런지 점심 시간대에는 모든 식당에 직장인들의 웨이팅..