profile
Software Engineer + Product Manager
태그 목록
전체보기 (319)개발일기(76)토비의 스프링(26)더 나은 코드(23)테스트(20)Java(18)Netty(16)더 나은 테스트(15)How to work(13)생각(12)trouble shooting(11)프로그래머스(10)트러블슈팅(10)코딩테스트(10)회고(9)커뮤니케이션(8)더 나은 설계(8)토비의스프링(8)tcp(8)프로덕트 오너(7)git(7)network programming(6)agile(6)(6)C(6)우주지상국(6)자세(5)TDD(5)aop(5)알고리즘(5)읽기모임(5)junit(5)dll(5)더 나은 도구(5)asynchronous(5)고민(5)2021(5)문제(4)추상화(4)독서(4)wireshark(4)JNA(4)배움(4)Spring(4)windows(4)github(4)코드리뷰(4)비동기(4)커리어(4)인프콘(4)매니지먼트(4)IntelliJ(4)관계(3)사람(3)습관(3)연역적(3)데이터(3)Software Engineering(3)네트워크 패킷분석(3)의존관계(3)객체지향(3)협업(3)오브젝트(3)debug(3)awaitility(3)Telnet(3)문제해결연습(3)2022(3)협력(3)프로젝트 매니저(3)test(3)실시간(3)예외(3)multithreading(3)Software Enginerring(2)가치(2)사용자(2)마인드(2)문서화(2)주석(2)ci(2)함께자라기(2)컨퍼런스(2)TROUBLESHOOTING(2)networking(2)http(2)배포(2)Mockito(2)test case(2)귀납적(2)더 나은 디자인(2)Locale(2)clean architecture(2)문제 해결 연습(2)제품(2)리더(2)디버깅(2)collaboration(2)stream(2)분석(2)코드로 문제해결 연습(2)cherry-pick(2)온보딩(2)클린 아키텍처(2)leak(2)학습(2)목표(2)리팩토링(2)소프트웨어 개발자(2)jackson(2)기획(2)User Manual(2)개발문화(2)(2)mock(2)management(2)개방폐쇄원칙(2)실용주의 프로그래머(2)변경(2)태도(2)(1)StringUtils(1)커뮤니티(1)PacketSender(1)객체지향의사실과오해(1)비실시간(1)개선(1)주간보고(1)Product Design(1)불편(1)시니어개발자(1)데이터 엔지니어(1)코드작성외에(1)Memory Leak(1)응집도(1)software engineer(1)Pair Programming(1)힙 메모리(1)TCP Connection Persistence(1)균형(1)아이들(1)고객(1)SNMP(1)성경(1)Device Driver(1)Thread Pool(1)OXM(1)유틸리티(1)지상국(1)인증(1)실험(1)캐시일관성(1)면접(1)사표(1)help(1)동료주도개발(1)소수점(1)프로토타입(1)메모리가시성(1)Interrupt(1)프로세스(1)요구사항(1)공유(1)어려움(1)메모리(1)Strategy Pattern(1)자동화(1)Q&A(1)util(1)Functional(1)사용자중심(1)문서(1)ux(1)예측(1)Copilot(1)가짜필요(1)Persona(1)결합도(1)변화(1)세미나(1)대역(1)동료(1)조직(1)volatile(1)아주힘듬(1)다름(1)SOLID(1)network(1)branch(1)XML(1)코드변경관리(1)네이밍(1)aws(1)부족함(1)Feedback(1)삶의자세(1)흥미(1)User Journey(1)병렬(1)모델링(1)아두이노(1)cdd(1)CI/CD(1)authentication(1)Manangement(1)설계(1)Transction(1)switch(1)고통(1)Nginx(1)트러불슈팅(1)json(1)주니어(1)exception(1)DTO(1)자유(1)작업난이도(1)스프링(1)더나은코드(1)템플릿(1)철학(1)환경(1)1553B(1)프로그래밍(1)redmine(1)삶의일기(1)메타포(1)impact(1)크리스찬(1)aspect(1)우주(1)algorithm(1)행복(1)메시지큐(1)일기(1)신뢰성(1)String(1)동반자(1)인터뷰(1)InvalidMemoryAccess(1)부모참여수업(1)감정(1)복잡성(1)독서메모(1)클린코드(1)snmp4j(1)어설프다(1)인사이트(1)Ideation(1)di(1)커밋(1)MVP(1)PSA(1)네트워크 프로그래밍(1)이슈관리(1)putty(1)기록(1)lazy(1)JIRA(1)어린이(1)성과(1)화면중심(1)템플릿/콜백(1)경계값(1)도구(1)short circuit(1)clean software(1)kotlin(1)누수(1)예외처리(1)Native(1)노이즈캔슬링(1)데이터 통신(1)더 나은 개발(1)SDLC(1)발표(1)핀란드(1)제약사항(1)마음 가짐(1)중복(1)제안서(1)heap memory(1)동등분할(1)생존(1)notion(1)alignment(1)테스트케이스(1)생각의프레임(1)회사(1)개발자(1)memory(1)준비(1)Reflection(1)교보문고(1)관심(1)사업(1)창업(1)lua script(1)도전(1)split()(1)멀티쓰레드(1)Csharp(1)Messaging Service(1)함께(1)의존(1)warning(1)IoC(1)assembly(1)projects(1)캐시불일치(1)집중(1)문제정의(1)actions(1)SI 프로젝트(1)코딩(1)신뢰(1)문화(1)우선순위(1)rebase(1)죽음(1)빌더 패턴(1)svn(1)리드잇(1)백로그(1)Thread(1)Product Designer(1)비정상종료(1)약함(1)S3(1)figma(1)Pull Request(1)garbage collector(1)아쉬움(1)장애회고(1)디자인 패턴(1)ObjectMapper(1)iteration(1)Pain Point(1)프로젝트(1)VxWorks(1)문제해결(1)

개발일기 #76 : 무지에서 비롯된 결핍

예전에 일하고 싶은 이상적인 환경을 생각할 때 자유롭게 마음껏 테스트할 수 있는 환경을 꼽은 적이 있다. 타겟 시스템이 쉽게 접근할 수 없는 곳에 있거나 우리 회사에 있어도 마음껏 혼자 물려 볼 수 없는 경우가 많아서 답답해서 그랬던 것 같다.만약 그때 내가 의존 대상

2022년 12월 3일
·
0개의 댓글
·

개발일기 #43 : 의사결정 과정 공유

박미정님의 인터뷰 영상을 들으며 출근을 했다. 여러번 이직을 하시며 퇴사를 결심하게 되는 이유를 설명해 주신 부분이 공감이 되었다. 운전중이라 메모를 못했지만 합리적인 의사결정이 결여되어 있거나 과정에 대한 공유가 없는 경우 시킨 일을 하는 기계 같은 느낌을 받아서 어

2022년 10월 5일
·
0개의 댓글
·

개발일기 #41 : Portable Service Abstraction

아, 변경될 수 있는 외부 의존성 관련 코드를 직접 사용하는 대신 추상화 계층을 통해 접근하면 미래의 변경에 내 코드는 영향을 받지 않을 수 있고 테스트도 쉽게 할 수 있구나! 목 프레임워크 사용 대신 테스트 시에 다른 빈이 주입되도록 하는 방법도 있구나!스프링

2022년 10월 1일
·
0개의 댓글
·
post-thumbnail

단위테스트에 @MockBean 활용하고 의존성 개선하기

MockBean을 활용해 서비스 코드의 변경 없이 의존객체의 동작을 쉽게 고정할 수 있어서 좋았습니다. 그러나 설계를 개선해 MockBean을 없애는게 더 나은 방법이었습니다.

2022년 9월 30일
·
0개의 댓글
·

개발일기 #36 : 변경되지 않는다면

프로젝트가 끝날 때까지 메시지가 추가되지 않을 것 같다면 if-else 체인으로 그냥 처리해도 될 것 같다. 좋은 디자인 패턴을 먼저 적용하려고 하기 보다 테스트를 통과하는 코드를 빠르게 작성하고 코드를 점진적으로 개선해 나가는게 더 도움이 된다. 어제 읽기모임을 통해

2022년 9월 26일
·
0개의 댓글
·

개발일기 #34 : 서비스 코드 안에 테스트 코드

외부 시스템으로 전송하는 메시지는 값을 조회하는 쿼리(Query)와 값을 변경하는 명령(Command)으로 구분된다. 쿼리와 명령 메시지를 처리하는 모듈의 단위 테스트를 위해서는 외부 시스템을 모의하는 프로그램을 내장(Embedded)하고 테스트를 진행한다. 명령 전송

2022년 9월 23일
·
0개의 댓글
·

개발일기 #33 : Client First

TDD(Test Driven Development)를 사용하면 실패하는 테스트 코드를 먼저 작성하고 테스트를 성공하는데 필요한 코드에 집중함으로 꼭 필요한 코드만 만들게 되는 효과를 볼 수 있다. 비슷하게 우리가 어떤 부분적인 스펙을 구현하기 위해 서로 의존관계를 가지

2022년 9월 22일
·
0개의 댓글
·

개발일기 #32 : 추상화 계층

기존에 WEB에서 API 서버를 거쳐 외부 시스템까지 전달되는 경로에 모두 외부 시스템에서 정의한 메시지 ID와 의존적인 메시지 구조를 사용했다. 이유는 변환과정이 필요 없어서 간단했기 때문이다. 그러나 외부 시스템 통신 인터페이스에 변화가 생기면 WEB까지 수정되어야

2022년 9월 21일
·
0개의 댓글
·

개발일기 #29 : 내부 모듈 테스트는 디버거도 괜찮다

지난주 TDD로 기능 하나를 개발하면서 약간의 어려움을 겪었다. 대게 기능 내부를 블랙박스로 두고 외부 인터페이스만 테스트하는 테스트 코드를 먼저 작성했었는데 기능을 구성하는 내부 모듈들이 생각보다 많고 크기가 커서 테스트를 돌리지 못하고 코드를 작성하는 시간이 점점

2022년 9월 19일
·
0개의 댓글
·

토비의 스프링 | 2장 테스트 (모임 중 든 생각, 기억에 남는 말말말)

토비의 스프링 책 2장은 왜 테스트 코드를 작성해야하는지 설명하는데 좋은 레퍼런스가 되는 것 같습니다.테스트코드가 때때로 문서화가 되기도 해서 좋습니다.JUnit 테스트 메서드는 default 접근제어자면 충분합니다.의존하는게 많아지면 테스트가 어려워집니다. 테스트가

2022년 9월 18일
·
0개의 댓글
·

토비의 스프링 | 2장 테스트 (핵심 요약)

테스트 코드를 만들어야 스프링이 지원하는 가치를 누릴 수 있다. 테스트 코드가 없었다면 지금의 스프링 자신도 없었을 것이다.테스트 코드는 개발자의 행복과 관련이 있다. 테스트 코드는 내가 만든 코드를 확신할 수 있게 하고, 마음에 안정감을 준다. 테스트 코드는 변화(코

2022년 9월 18일
·
0개의 댓글
·

토비의 스프링 | 2장 테스트 (느낌점, Q&A)

토비의 스프링을 읽고 배우고 느낀점을 정리합니다.지난 시간에 DI를 인터페이스를 통해 받아야 한다는 내용을 설명해 주시면서 그게 그렇게 어려운 일이 아니며 습관이 되게 하는 것이 중요하다는 이야기를 해주셔서 인상 깊었습니다. 2장을 읽으며 학습 테스트, 버그 테스트 같

2022년 9월 18일
·
0개의 댓글
·

개발일기 #27 : 개발 습관

내가 씻고 있을 때 종종 아이들이 화장실에 들어와 볼일을 보곤하는데 자주 나가면서 불을 끈다. 그러고 "아 미안 아빠" 하며 똑같은 실수를 반복하곤 한다. 이런게 습관인가 하는 생각이 든다.토비의 스프링 2장 테스트 부분의 말미에 학습 테스트와 버그 테스트라는 개념이

2022년 9월 17일
·
0개의 댓글
·

개발일기 #25 : 빠르고, 포괄적이고, 일관성있는 테스트

빠르고, 포괄적이고, 일관성있는 테스트 토비의 스프링 2장 테스트 부분을 읽고 있다. 테스트와 관련해 흐릿하게 알고 있던 것 위에 명쾌한 선을 그어주는 느낌을 받는다. 토비의 스프링 책은 정말 두꺼워서 펼치기 까지 많은 망설임을 주었던 것 같다. 하지만 막상 책을 한

2022년 9월 15일
·
0개의 댓글
·

개발일기 #21 : 눈으로 보면서 개선하기

기존에 하드웨어 API 서버에서 해주던 위성 추적 동작을 직접 구현할려니 막히는 부분이 있다. 특히 2축이 함께 움직이면서 어떤 지점을 가리키게 되는데 안테나 고각은 180도 범위인데 생성된 추적 데이터는 90도 범위라 머리속에 그림이 잘 안그려 진다. 고각에서는 간단

2022년 9월 6일
·
0개의 댓글
·

개발일기 #13 : 리뷰의 힘

런타임 서버를 제한하는 기능을 PR하고 리뷰를 받았다. 나는 지역을 인식해서 고객 소유 지상국에서만 체크를 하도록 했는데(고객용 코드를 나누고 싶지 않아) 지역을 고객이 임의로 바꿀 수 있다는 문제제기를 해주셔서 방어 정책을 추가해 보았다. 리뷰의 힘을 느낀 하루.다른

2022년 8월 23일
·
2개의 댓글
·

LINE에서 테스트를 최적화하는 방법

아래의 LINE 엔지니어링 블로그 글을 읽고 정리합니다.

2021년 12월 8일
·
0개의 댓글
·
post-thumbnail

프로덕트 오너(PO) : 백엔드 개발자의 질문, 사용자 테스트 꼭 해야 해요?

REST API로 서버를 개발하는 백엔드 개발자가 나에게 아래와 같이 자랑스럽게 말했다. "JUnit으로 API 테스트 다 했으니까 사용자 테스트는 하지 않아도 되요"

2021년 5월 13일
·
0개의 댓글
·
post-thumbnail

테스트 케이스 작성의 기본

오늘은 테스트 시나리오를 작성하는 기본 개념에 대해 정리해 보려고 한다.먼저 아래와 같은 요구사항이 있다고 하자.요구사항 1- 현재 컴퓨터의 CPU 사용량을 화면에 표시해야 한다. 위 요구사항에 대한 테스트 시나리오를 누군가 작성해 보자. 프로그램 메인화면에서 시스템

2021년 5월 13일
·
0개의 댓글
·

[JUnit] @BeforeAll, non-static으로 구현하기

생애 첫 Spring 프로젝트! 그리고 JUnit! JUnit으로 단위 테스트를 작성하는데 @BeforeAll 어노테이션이 static 함수에만 적용이 된다. 인스턴스 함수에 적용해서 테스트 케이스에 해당하는 액션이 아닌 공통된 준비 단계들, 예를 들면 TCP 서버와

2021년 5월 9일
·
0개의 댓글
·