https://frost-witch-afb.notion.site/YOUTHCON-22-a18e4511463a416e8befd99993355215
1. Introduce to Clean Architecture
망나니 개발자
아키텍처에서 중요한 것은 무엇인가
프레임워크, 데이터베이스, 캐시등은 세부사항이다.
이것들은 중요한가요? YES
그럼 가장 중요한것은?
가장 중요한 것은 핵심 비즈니스 로직과 유스케이스
유스케이스 : 시스템이 있어야 유효한 비즈니스 로직
도메인은 세부사항을 알면 안된다.
계층형 아키텍처에서 의존성의 방향은 항상 다음 계층을 향함
가장 중요한 비즈니스 계층은 영속성 계층에 의존하게 됨
현실에서 핵심은 비즈니스
잘못된 계층형 아키텍처의 형태 > 테스트 작성 및 관리가 어려워진다.
객체의 설계는 어렵다.! But 시행착오.
SRP = 하나의 일만 해야한다.?(X) / bob아저씨가 "SOLID중 가장 잘못된게 SRP다"라고 함
변경의 이유가 하나 여야 한다. = 하나의 액터만 책임져야 한다.
고수준 : 입력과 출력으로부터 먼 것
저수준 : 입력과 출력으로부터 가까운것
클린 아키텍처란?
- DIP : 고수준 모듈이 저수준 모듈에 의존해서는 안 되며, 저수준 모듈이 고수준 모듈에 의존해야 함
- DIP를 통해 영속성 의존성을 제거해야 함
좋은 아키텍처를 만드는 코드 스타일
- 서비스 계층을 유스케이스 단위로 분리하라
- 추상화되지 않은 세부 사항에 의존한다면 DIP를 적용하라
- 객체의 데이터만 필요로 하는 로직들은 객체의 내부로 이동시켜라
- package-private 가시성을 적극 활용하라
- 기타 등등
아키텍처를 구성할 때 중요한 것
- 늦장부리기 (세부 결정 사항들은 결정을 최대한 미루자)
- 테이블 설계 -> 테이블에 확신이 들 때까지 설계를 미룸
- 추상화 -> 추상화 도입으로 인해 비용이 더 저렴해지는 시점까지 미룸
- 서비스 분리 -> 생존을 위해 분리하지 않으면 안되는 시점까지 미룸
- 캐시 적용 -> Slow 요청들에 의해 필요해지는 시점까지 미룸
좋은 아키텍트는 결정되지 않은 사항의 수를 최대화 한다.
2. Java 17 vs. Kotlin 1.7
- record
- kotlin에서는 data class를 이용하여 정의 가능
record vs data class
- record에서는 setter사용 불가
sealed class
- java 15 preview, jdk 17 공식 지원
- 상속 및 구현할 수 있는 클래스를 지정
- permits로 지정하지 않은 클래스는 상속 불가능
kotlin - sealed class
- 같은 패키지 내에서의 확장만 허용
- 내부적으로 abstract 클래스로 생성되어..(못들음)
java sealed vs kotlin sealed
java pattern matching for instanceof vs kotlin에서는 is 키워드
java pattern matching switch vs kotlin에서는 when
stream에 추가된 기능
Stream.toList
- JDK 16 공식 지원
- 최종연산자 collect 대신 toList()를 사용
kotlin - Collections, Sequence
- 기본적으로 Collections의 확장 함수의 경우, map, filter등에서 자동으로 List반환
java - text block
kotlin- text block
코틀린의 특징
null처리
- 코틀린에서는 null을 안전하게 처리하기 위한 타입을 지원
- null 관련 연산자를 다양하게 제공
확장함수
- 어떤 클래스의 멤버 메서드인 것처럼 외부에서 함수를 추가하는 기능
- 라이브러리에서 기존에 정의된 클래스에 함수를 추가 가능
- 상속과 조합이 없이도 클래스를 확장 가능
- 오버라이딩은 불가능
operator overloading
- +,- 등과 같은 연산자 오버로딩
코루틴
자바 17이후 주요 업데이트
- 표준 자바 API에 대한 기본 문자셋이 UTF-8로 설정됨
- 지속적인 Pattern matching 업데이트
- Project Loom
Project Loom
- 동시성 처리를 개선하기 위한 2017년 시작
- JDK 19에서 추가됨
- virtual threads등장
- Structured Concurrency
- 비용이 많이 드는 커널 스레드 대신 저렴한 가상 스레드를 활용해 동시성 처리
마무리
- 코틀린은 다양한 기능을 추가하여 코드 안전성, 간결성을 증대한 언어
- 자바도 꾸준한 업데이트를 통해 생산성을 높이기 위한 방향으로 발전 중
3. 우아한테크코스 지원자 모두에게 프리코스 기회를 주기까지
- 교육과정과 선발과정이 궁금하신 분
- 프리코스란? 프리코스 기간에는 주도적으로 학습하여 미션을 수행하고 공통 피드백을 받는다.
채점 방식의 발전
- 채점 서버로 가는 부하 줄이기
- TransactionalEventListener
- @Async
- 예외처리 : runCatching을 사용하여 예외 처리
- 깃허브 : woowacource/service-apply에서 코드 확인 가능
4. 신입 개발자, 팀에 안정적으로 착륙하기
- 협업 환경에서 어떤 방식으로 개발하는지 궁금한 분
- 사이드 프로젝트에 협업 프로세스를 도입하고 싶은 분
- 온보딩에 대한 신입의 시각이 궁금한분
한 달간의 온보딩
익숙해지기
- Figma 사용에 익숙해 지기
플래닝
도메인 파악하기
레거시
남의코드 파악하기
히스토리 훑어보기
내가 만든 레거시 책임지기
git blame이라는 명령어로 히스토리 남기기
코드리뷰
Rebase Practice
resolve 대신 force push
팀문화 : 이달의 크루
5. SM 5년차가 IT서비스 회사로 연봉 30% 인상한 이직기
18.02 입사 보험회사 IT시스템 유지보수 - oracle, C언어
보험, 은행, 증권, 네카라쿠배 준비
스터디 참여, OKKY 또는 인프런 멘토링 활용, 무작정 대세라는 기술 따라하기
유쾌한 스프링(오픈카톡), 우아한 유스방 3기, NEXTSTEP, 게더타운에서의 모각코 참여
ATDD강의도 듣고, 15기 리뷰어도 됨
우아한 유스방 3기 - 자소서, 회사 조사하기, 페어 프로그래밍, REST API과제
업무에서 살릴 강점
- 협업의 반복되는 요구사항을 자동화
- 빈번한 데이터 오차 발생 문제를 오차발생 0건으로 줄임
이력서 작성하기
성과 부분에 문제, 원인, 해결 순서로
외부 강의들은것들 소감까지 작성
원티드, 회사 홈페이지, 링크드인에서 지원
80개 지원, 60개 서류 탈락, 10개 코테 탈락, 약 20번의 면접, 세군데 합격
면접 준비하기
개발 경험이 부족한 부분을 질문
java, 객체 지향, 자료구조, jpa, spring, cicd
데이터베이스 질문
개선한 내용에 대한 기술적 질문
경력으로 오는데 경험하지 않은 도메인과 언어에 대한 질문
기입한 git repository질문
반드시 면접 직후에 바로 노션에 면접 복기를 함
질문을 작성하고 내가 한 답변을 작성하고 검색 등을 통해 답변을 보충
스트레스 받기보단, 그냥 한다
6. SI 개발자의 서비스 회사 적응기
비전공자 > 대기업 si > 서비스 회사
월화수목금금금
- 프로젝트 - 집 - 프로젝트 - 집 - 프로젝트 - 집 - 프로젝트
계속된 실패로 오는 패배감
- TDD, 클린 코드 with Java 11기 (프로젝트로 인해서 실패)
- TDD, 클린 코드 with Java 14기 (프로젝트로 인해서 실패)
이직 결심
누구를 위해 일하는가?
잘 만들기 위한 고민
어떻게 잘 만들 것인가?
- 테스트 코드
- 리팩토링
일하는 방식의 변화
동료와 함께 성장하는 나
동료가 최고의 복지다
- 테크톡
- 이렇게도 코드를 짤 수가 있구나
- 끊임없이 성장 하려는 사람들 : 사내 스터디 등
- 주도적으로 일하는 사람들
주관을 가진 개발자
'세미나' 카테고리의 다른 글
[INFCON 2022] 인프콘 참가 후기 (0) | 2022.08.28 |
---|---|
YOUTHCON'21 요약 (0) | 2021.12.19 |
[OKKY 7월 세미나] 개발자에게 좋은 이직/퇴사를 위한 꿀팁 (0) | 2021.07.25 |
SLASH 21 컨퍼런스 (0) | 2021.05.01 |
[2월 우아한테크세미나] 우아한 스프링 부트 (0) | 2021.04.04 |