우아한형제들 15

우아한형제들을 퇴사하며

우아한형제들에서 4년간 일을 하고 퇴사한 시점에 적는 회고록입니다. 4년동안 정말 재밌고 많은 일들이 있었는데 그 중에서 기억나는것들을 하나씩 적어보려고 합니다. 어떤 일들을 했는가 나는 총 3개의팀에서 일을 했다. 각 팀에서 어떤 일들을 했는지 주요한것들만 나열을 먼저 해본다. 배민장부팀 배달의민족에 입점한 업주중 10만명 정도를 대상으로한 매장카드, 배민매출, 현금영수증, 전자세금계산서를 포함한 매출 통합 관리를 위한 서버 개발 및 유지보수 일 수백만건의 매출데이터 크롤링, 저장, 처리 파이프라인 개선 및 유지보수 & 크롤링 서버들 모니터링 환경 개선 배민 B2B데이터 연동 및 적재하여 업주님들에게 유의미한 지표 제공 배민셀프서비스팀 배달의민족 30만 업주들이 사용하는 통합 장사관리 서비스 개발 레거..

우아한형제들 2024.04.23

우아한테크코스 레벨4 - 프로젝트 1주차 팀빌딩 아이디어 선정 및 개발 후기

우아한테크코스의 마지막 레벨인 4단계에서는 팀프로젝트를 진행한다. 기획부터 직접하기 때문에 재밌는 프로젝트를 기획해서 해볼 수 있다. 45명이 각자 아이디어를 내서 상위 9개의 아이디어가 선정 된 후 5명씩 팀을 지어서 하게 된다. 운이 좋게 내가 제안한 아이디어가 선출이 되어서 시작하게 되었다. 아이디어를 선택한 팀원 들도 매우 좋은 사람들이어서 훌륭한 환경 속에서 진행하게 되었다. 서비스이름은 개장모(개발자 장비모임)로 개발자들이 자신의 개발환경과 장비를 소개하고 공유하는 플랫폼이다. 본격적으로 시작하기에 앞서 기획을 조금 더 구체화 해보았다. 생각보다 기획을 매우 축소시켜야 정해진 기간안에 출시할 수 있기 때문에 최소한으로 진행하려고 노력했다. 추후 서비스 기능 추가를 하는것으로! Planning ..

[우아한테크코스] 레벨 2 후기 - 코드 리뷰 정리해보기

우아한테크코스 레벨2를 진행하면서 개인 블로그 미션, 팀 프로젝트 미션에 대한 리뷰 복습(?) 겸 정리를 해 보았다. 학습량이 꽤나 많아지면서 놓치거나 소화 하지 못한 부분도 많았다. 모두 다 소화하면 좋겠지만 그것보다는 최대한 놓치는 부분들을 최소화 해보려고 한다. 리뷰 받은 것들이나 공부 했던 것들을 다시 열어 보니까 완전히 잊고 있거나 새로운 것들이 보였다. ID의 wrapper type 과 primitive type @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // long id ? id를 원시형과 래퍼타입 중 어느것을 써야할까? 원시형을 쓰게 되면 null이라는 것을 적절히 표현할 수 없다. 원시형에서 엔티티를..

[우아한테크코스] 7주차 후기 - 데이터베이스 설계와 마지막 미션

6/17 (월) 프로그래밍 (체스) - 6/18 (화) 강의 (자바스크립트 기초), 프로그래밍 (체스) 6/19 (수) 프로그래밍 (체스) 6/20 (목) 프로그래밍 (체스) 6/21 (금) 강의 (데이터베이스 설계) 6/22 (토) 외부일정 강의: 데이터베이스 설계 제한된 시간안에 테이블을 설계해야 하는 과제가 있었다. 타임어택으로 차등을 매기거나 그런것은 아니다. 단지 한정된 강의 시간안에 다뤄야 할 것들이 조금은 많았을 뿐이었다. 데이터베이스 설계는 크게 3가지로 나뉘어진다. 개념적 데이터 모델링: 개념 데이터 모델이란 업무 요건을 충족하는 데이터의 주제 영역과 핵심 데이터 집합을 정의하고 관계를 정의한 모델을 의미한다. 즉 큰 그림을 먼저 그리는 것이다. 논리적 데이터 모델링: 개념 데이터 모델링..

[우아한테크코스] 6주차후기 - 점진적 리팩토링과 데이터베이스 적용

날짜 TODO 추가 공부 6/10(월) 프로그래밍 (로또) 졸업시험 6/11 (화) 강의 (프로젝트의 요소와 리팩토링) 6/12 (수) 프로그래밍 (로또) 학교과제 6/13 (목) 프로그래밍 (로또) 학교과제 6/14 (금) (동생졸업식) 6/15 (토) 프로젝트 3요소 이번 강의는 "프로젝트 3요소인 비용, 일정, 품질 을 다 좋게할 수 있을까?"에 대한 캡틴의 짧은 언급이 있었다. 일정과 품질에 대해 생각해 볼 수 있는 좋은 기회였다. 많은 경우에서 일정이 품질보다 우선시 되는 경우가 있다고 한다. 그렇다면 일정 > 품질 이라는 것이 나쁜 일 인가라는 의문이 들 수 도 있다. 그렇다고 품질에 집중해서 일정을 놓치면 안된다. 왜냐하면 품질에 대한 명확한 기준이 없기 때문이다. 클린코드를 구현한 프로젝트..

[우아한테크코스] 5주차후기 - 데이터베이스 개론 및 과제 피드백

이번 주 글은 후기와 피드백을 같이 적어본다. 날짜 TODO 추가 공부 6/3 (월) 로또 리뷰 - 6/4(화) 강의 (데이터베이스) 책-객체지향과 디자인패턴 6/5 (수) 프로그래밍 (로또 리뷰) 객체지향 사실과 오해 6/6 (목) 예비군 6/7 (금) 휴무 로또 웹 UI 적용 6/8 (토) 운동 이번 주는 휴무와 겹쳐서 여유가 조금 있는 한 주 였다. 강의: 데이터베이스 개론 준 코치님께서 데이터베이스에 대해 강의를 해주셨다. 준 코치님은 볼때 마다 항상 웃는 모습으로 인사를 해주셔서 너무 좋다. 강의는 간략한 개론으로, 강의 후 자기주도적으로 공부를 하면 되었다. 데이터와 정보의 차이 데이터 - 현실 세계에서 관찰하거나 측정한 사실 또는 값 정보 - 의사결정에 활용하기 위해 데이터를 처리한 결과물 ..

[우아한테크코스] 4주차 후기 - 전략패턴의 적용

날짜 TODO 추가 공부 5/27 (월) 좌표계산기 리뷰 - 5/28 (화) 강의 (Exception), 책-객체지향과 디자인패턴 5/29 (수) 프로그래밍 (로또) 5/30 (목) - 책-객체지향과 디자인패턴 5/31 (금) 강의 (프런트엔드 기본) 책-객체지향과 디자인패턴 6/1 (토) 캡스톤 서류 정리 이번 주는 조금 여유가 있는 상태였기 때문에 로또 프로그램을 빨리 구현하고 개인 공부를 했다. 주말일정은 몸이 좋지 않아서 예정되어 있던 테니스 시합을 취소하고 집들이를 다녀올 예정이다. 로또 미션: 전략 패턴의 적용 전략패턴(Strategy Pattern) 개발자가 반드시 정복해야할 객체지향과 디자인 패턴이란 책에서 이론적 내용을 학습 및 정리 후 프로젝트에 적용한 내용입니다. 로또 생성의 문제: ..

[우아한테크코스] 3주차 후기 - if 문 없이 개발하기

날짜 TODO 추가 공부 5/20 (월) 사다리 타기 리뷰 - 5/21 (화) 강의 (Git, ), 페어 프로그래밍 (좌표 계산기) 책-객체지향과 디자인패턴 5/22 (수) 페어 프로그래밍 (좌표 계산기) 5/23 (목) 페어 프로그래밍 (좌표 계산기) 함수형 인터페이스 5/24 (금) 공부 (책-객체지향과디자인패턴), 강의 (페어프로그래밍 회고) 팩토리패턴 5/25 (토) 캡스톤 개발 - 5/26 (일) 피드백 (좌표 계산기) - 팩토리 패턴 이번 주차 실습과 과제에서는 팩토리 패턴을 이용하는 부분들이 자주 등장하였다. 팩토리 패턴이란? 어떤 클래스의 인스턴스를 만들지 서브클래스에서 결정하는 패턴 조건에 따른 객체 생성 부분을 자신이 직접하지 않고 팩토리 클래스에 위임하여 객체를 생성하는 방법이라고 할..

[우아한테크코스] 페어프로그래밍 회고

페어프로그래밍 회고 우아한테크코스에서는 기본적으로 이러한 페어 프로그래밍을 실천한다. 처음에 매번 자주 페어가 바뀌는 것에 의문을 품었지만 사실을 페어프로그래밍 아이디어가 모든 구성원들과 동적으로 결성되는 방법론이라는 것을 깨닫고 그 이유를 알게 되었다. 페어프로그래밍이 뭐지? 페어 프로그래밍? "오 이런 세상에, 이런거면 너무 싫어" 페어 프로그래밍이 무엇인지 알아보자. 원론적인 내용은 Software Engineering 8th Edition의 페어 프로그래밍 챕터를 읽고 정리하였다. 소프트웨어 개발 방법론인 애자일 개발 방법론에서 익스트림 프로그래밍 (XP: extreme programming)이라는 것이 있다. 이 접근법은 반복적인 개발과 같이 인식된 좋은 실무관행과 고객의 참여를 극한 수준까지 ..

[우아한테크코스] 2주차 과제 피드백 후기

이번 과제는 사다리 타기를 구현하는 프로그램이다. 몇 가지 중요했던 피드백들을 정리해 보았다. 일급 컬렉션 기존 코드 public class Players { private List players; public Players() { players = new ArrayList(); } public void add(Player player) { if (checkDuplicateName(player)) { throw new IllegalArgumentException("이름은 중복될 수 없습니다"); } players.add(player); } public void addAll(List players) { this.players = players; } private boolean checkDuplicateNa..

반응형