컨퍼런스

[컨퍼런스] 2023 INFCON

bbangduck 2023. 8. 17. 15:41

감사히도 2023 인프콘에 당첨돼서 다녀왔습니다.

아래는 제가 들었던 세션을 정리한 내용입니다.

[인프콘 링크] https://www.inflearn.com/conf/infcon-2023

 

<코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기>

0. 코틀린 학습 방법

- 코틀린 코리안스 kotlin koreans (http://kotlin.kr/)

- 이펙티브 코틀린 책 ( 기본 문법 숙지하고 도전 )

- 코틀린 공식 문서 

- 개인기술 블로그(안드로이드)

 

1. 왜 코틀린인가

- 자바 대비 상대적으로 간결한 문법

- 지속적인 업데이트 및 활발한 커뮤니티 

- IDE 레벨에서의 강력한 지원

- 언어 레벨에서 지원하는 다양한 기능 -> 세이프티

 

2. 코프링 도입하기

- 팀원들이 이미 여러 경로로 코프링에 노출 되어 있었음

- mock 서버에서 코프링을 사용하고 있었음

- 새로운 그렇지만 안정적인 기술 스택이라는 암묵적인 동의를 얻음

 

3. 도입하기 전 고려사항

ex) MVC vs web flex

Web Flex R2DBC 와 MySql 호환성 조사

R2DBC:  관계형 DB에서 리액티브 프로그래밍을 가능하게 해주는 DB 접근 API

- R2dbc driver for mysql 

- 공식벤더가 관리하지 않는 서드 파티 오픈 소스 => 병목 우려

- 상대적으로 아직어린 R2dbc 프로젝트

-공식벤더에서 관리하고 있는 마리아디비 드라이버를 아이에스큐엘과 사용하기 …를 고려했으나 배보다 배꼽이 더 큰 상황

- 그래도 해 볼 수 없을까 했으나 웹플럭스가 필요할 정도로 높은 처리량이 필요하지 않을 것으로 예상

- 비즈니스를 위한 기술이 되어야 한다

 

4. 사용 기술

Kotest, Mockk

 

5. 유용한 도구

- Kotlin-logging

slf4j와 유사한 방식으로 사용 가능 

 

- refreshVersions 

그래들 프로젝트에서 사용하는 의존성 버전 관리 플로그인

의존성 버전 정보를 단일 파일에서 관리할 수 있음

 

-Ktlint-gradle

테스트가 통과 못하면 커밋할 수 없도록 훅걸기 가능

 

-Fixture Monkey

테스트 객체를 편하게 자동으로 생성해주는 라이브러리

 

6. 강연자의 코프링 샘플 프로젝트 

https://github.com/doljae/kopring-starter

 

GitHub - doljae/kopring-starter

Contribute to doljae/kopring-starter development by creating an account on GitHub.

github.com

 


<커뮤니케이션을 잘하는 개발자의 4가지 습관>

1.개발자의 커뮤니케이션에 관심을 갖게 된 이유

좋은 개발자가 되고 싶다.

사내에 다른 직군과 협업할 수 있는 스킬을 원하는 사람들이 제일 많았음

 

2.’커뮤니케이션을 잘하는 개발자’가 뭐지

 

우선 반대로 커뮤니케이션이 안되는 개발자란 

오늘도 개발자가 안 된다고 말했다.. 라는 책이 있음

이유를 말해야하는데 개발 구조상 그냥 안된다고 해서 그런듯

 

화면 로그 정의 전달드립니다

=> 이건 스트림에서 비동기로 받아오는 거라서

에이피아이 구조를 바꾸지 않으면 안돼요

라고 대답함

=>스펙을 구현하는게 자기 일이라고 정의하기 때문이다.

 

그럼 커뮤니케이션을 잘하는 개발자는?

안된다 라는 말을 그냥 하지 않는다

 

버튼 옮기는 건 어떤 문제를 풀려고 하는 걸까요?

버튼을 옮기는 건 ~~한 이유때문에 어려우니,

~~한 방법은 어떠세요?  =>문제 해결형 개발자 

 

 

3. 변화를 만들려면 습관이 필요하다.

 

문제 해결형 개발자가 되려면 어떻게 해야하지?

아는 것 만으로는 충분하지 않다

앉는 자세와 같은 습관이라서 

 

첫째, 해결하는 문제와 의도에 대해 묻는다

둘째, 상대방의 말을 듣고 내가 이해한 바를 공유한다

셋째, 안 된다고 말할 때는 상대방의 관점에서 대안을 제시한다.

대부분 상대방이 궁극적으로 원하는 것은 왜 기술적으로 어려운지 이해하는게 아니다.

넷째, 문제를 해결할 또 다른 방법은 없을지 고민해 본다. 

예시) 회원 인증을 하는 데 14초 로딩, 

이걸 단축 시키긴 위해서 6개월 동안 작업을 해야했음

그래서 다음 단계를 실행시키고 백그라운드로 인증을 진행함. 

 

 

 

 


<어느 날 고민 많은 주니어 개발자가 찾아왔다 2탄: 주니어 시절 성장과 고민들>

 

1.개발에 대해서

기술 공부를 안하는 개발자

- 기술적인 근본 원인을 파악해서 문제 해결 어려움

-기술에 대한 깊은 이해 없이 개발 업무 반복

- 팀에서 동작하는 코드를 보고 이렇게 비슷하게 짜면 되는구나!

 

기술 트렌드 찍먹 개발자

- 기술 공부를 하기는 하는데...

-팀에서 사용하는 기술도 제대로 이해하지 못한 상태

- 새로운 기술을 도입하자고 한다면?

-기술의 깊이가 만들어지기 어렵다

 

팀 기술을 잘 이해하는 개발자

- 팀에서 사용하는 기술 역량을 잘 쌓아둠

- 기술을 잘 이해해서 팀 업무를 원할하게 진행

-팀에 기술 문제가 발생했을 때 원인을 정확히 파악해서 해결

-신뢰와 기술 포인트

-팀에서 점점 중요한 업무를 맡게 됨

- 결과적으로 평가와 연봉에 반영

 

 

팀기술의 장점

-동기부여: 사람은 당장 본인에게 필요한 것을 더 빠르게 학습

-학습 사이클: 학습-> 업무에 학습한 내용을 활용 -> 활용하면서 고민되는 부분 학습 -> ..., 이론과 실습의 완벽한 조화

 

기술을 학습한다는 것

-기술을 업무에 사용할 줄 안다고 그 기술을 잘 아는 것은 아니다. 1년 차의 경험 10번 반복

- 기술의 기본 원리를 이해하고 깊이있게 학습

- 그 기술이 왜 필요한지 이해

- 해당 기술을 사용해서 밑바닥부터 스스로 학습

- 문제가 발생했을 때 해당 기술에 대한 해결사 역할

 

경기와 훈련

-운동 선수가 평소에 훈련하지 않느다면?

-개발자도 꾸준한 훈련의 시간이 필요하다.

- 경기 = 회사업무

- 훈련 = 업무 외 학습의 시간

 

 

2. 비즈니스의 이해

-비즈니스와 개발이 어떻게 연결되어 있는지 이해하는 큰 지도를 그리는 것

 

큰지도 만들기

비즈니스 이해

- 인터뷰: 비즈니스에 대해서 듣고 이해하라, 기획자, 팀장, 문서 등등

- 어드민의 기능 하나하나 다 사용하기 + 사용자의 기능 사용해보기

비즈니스의 구현 이해

- 데이터: 핵심 테이블(엔티티), 핵심 필드 정리

- 핵심 업무 프로세스 정리

 

비즈니스 이해가 약한 개발자

-큰 그림에서 전체 상황을 이해하지 못함

- 지도가 없으므로 어디까지 질문해야 할 지를 잘 모름

- 작업의 영향 범위가 어디까지 영향을 미치는지 파악이 어려움

- 요구사항을 제대로 처리하지 못함

- 중요한 메인 업무가 있을 때, 영향 범위를 잘 모르기 때문에 실패 할 가능성이 높음

- 더 큰 업무를 맡기기는 어려움

 

 

좋은 시스템을 설계하려면?

- 개발을 잘 하기 위해서는 비즈니스 이해가 필수

- 비즈니스를 이해해야 좋은 아키텍처 설계 가능

- 애플리케이션 아키텍처의 선택은 변경 가능성의 영향이 큼

- 그런데 이게 변할지 안 변할지 선택이 필요 - 비즈니스를 알아야 가능

 

WHY

-근본적인 이유를 알아야 본질적인 답을 찾을 수 있다.

- 기술이든 비즈니스든, 근본적인 이유를 알아야 올바른 대안을 찾을 수 있다.

- 동기부여, 기술역량성장, 제대로 된 비즈니스 이해, 제대로 된 기술 검증

 

커뮤니케이션

공격조심, 기획자에게, 개발자에게

"고민이 있습니다"라고 서두 꺼내기

 

내가 리더라면

-리더는 백번 질문해도 백번 대답할 준비가 되어 있어야 한다.

- 왜 이 일을 해야 하는지 잘 풀어서 설명(내가 알고 있는 문맥의 양과 상대의 문맥 양을 확연히 다르다.)

- 팀장만 리더가 아니다. 모두가 리더다.

-기술, 비즈니스 모두

 

성장과 환경

좋은 환경

안좋은 환경

지금 좋다기 보다는 일하기 좋은 방향으로 바꾸어 나가려고 노력하는 조직

 

 

 

 

마치면서

조민규 님의 <우리는 이렇게 모듈을 나눴어요> 세션도 들었지만 시간 남을 때 학습하면서 정리하고 싶어서 남겨두도록 하겠습니다.

처음으로 오프라인 컨퍼런스를 가 봤는데 북적북적하고 좋더라고요.

개발자들 보면서 동기부여도 받고!

제일 좋은 점은 qna를 직접 실시간으로 할 수 있다는 점인데, 저는 코린이라서 질문을 찾지 못 했습니다..

열심히 학습해야겠다고 다시금 결심할 수 있는 좋은 경험이였습니다.

내년에는 더 성장해서 갈 수 있길 바라며 마치도록 해 보겠습니다.

감사합니다.

 

 

'컨퍼런스' 카테고리의 다른 글

2022 프로그래머스 컨퍼런스  (2) 2022.11.27