Java/Spring 기반 백엔드 개발을 주력으로 하는 백엔드 개발자 입니다.
현재 결제 중계 서비스 제공 스타트업에서 Java/Spring/React 를 사용하여 개발을 하고 있고
주 업무는 QR결제 API 개발 고도화, 중계서버 유지보수, Admin 개발 업무를 하고 있습니다.
게시글
블로그
전체 22024. 10. 11.
0
인프런 워밍업 클럽 스터디 2기 백엔드 - 2주차 회고록
벌써 워밍업 클럽 스터디를 진행한지 2주차가 마무리가 되었다. 1주차에는 추상에 대한 이해도를 높이기 위한 여러 예시와 상황들을 배웠으며2주차에는 배운 내용을 깊이 이해할 수 있도록 많은 예시들을 보며 설명을 해주었고그 과정에서 미션3 을 통해 배운 내용을 써 먹을 수가 있었다. 특히 섹션5 객체지향 적용하기 에서 배운 내용은 정말 인상적이었다.상속과 조합 (상속보다는 조합 사용하자)Value Object, Entity (불변성, 동등성, 유효성 검증)일급 컬렉션Enum추상화와 다형성 활용하여 반복되는 if 문 제거, OCP 지키기숨겨져 있는 도메인 개념 도출하기.간단하게 이렇게 키워드를 정리해주셨는데 실무에서 1,2,4,5 는 최대한 지키기 위해 노력하고 있지만 일급컬렉션 부분은 처음듣는 내용이라 어려웠다 그리고 마지막 섹션인 '기억하면 좋은 조언들'위 부분은 키워드만 줄여서 회사 모니터앞에 출력해두고 매번 상기시키면서 코드를짜려고 실천하는 중이다. 능동적 읽기복잡하거나 엉망인 코드를 읽고 이해하려 할 때, 리팩토링 하면서 읽기공백으로 단락 구분하기메소드와 객체로 추상화 해보기주석으로 이해한 내용 표기하며 읽기우리에게는 언제든 돌아갈 수 있는 git reset --hard 가 있다.핵심 목표는 우리의 도메인 지식을 늘리는 것.그리고 이전 작성자의 의도를 파악하는 것이 중요하다.오버 엔지니어링필요한 적정 수준보다 더 높은 수준의 엔지니어링의 오버 엔지니어링 이라고 한다ex) 구현체가 하나인 인터페이스 를 추상화 한다.인터페이스 형태가 아키텍처 이해에 도움을 주거나, 근시일 내에 구현체가 추가될 가능성이 높다면 OK구현체를 수정할 때 마다 인터페이스도 수정해야 함불필요 인터페이스가 많으면, 코드 탐색에 영향을 줌. 애플리케이션이 비대해 진다.ex) 너무 이른 추상화 or 과도한 추상화정보가 숨겨지기 때문에 복잡도가 높아진다.후대 개발자들이 선대의 의도를 파악하기가 어렵다.지금까지 배운것이 절대법칙은 아니고 경험을 쌓으면서 필요한 곳에서 잘 적용을 해야한다은탄환은 없다'파이브 라인스 오브 코드' 라는 책이 있다.클린 코드도 은탄환이 아니다.실무 : 2가지 사이의 줄다리기지속 가능한 소프트웨어의 품질 vs 기술 부채를 안고 가는 빠른 결과물대부분의 회사는 돈을 벌고 성장해야 하고, 시장에서 빠르게 살아남는 것이 목표다이런 경우에도, 클린 코드를 추구하지 말라는 것이 아니라, 미래 시점에 잘 고치도록 할 수 있는 코드 센스가 필요하다.ex) TODO , 주석 달아 두기결국은 클린 코드의 사고법을 잘 알고 있는 것이 중요하다.위 2가지 사이에서 줄타기를 잘해야 한다고 생각한다.모든 기술과 방법론은 적정 기술의 범위 내에서 사용되어야 한다.ex) 당장 급하게 배포 나가야 하는데, 동료에게 style 관련된 리뷰를 주고 고치도록 강요하는 사람도구라는 것은, 일단 그것을 한계까지 사용할 줄 아는 사람이 그것을 사용하지 말아야 할 때도 아는 법이다.적정 수준을 알기 위해, 때로는 극단적으로 시도해보자.-> 항상 정답인 기술은 없다.-> 한계까지 연습해보고, 적정 수준, 적정 시점을 깨달아보자객체지향의 꽃은 '추상' 이라는 개념을 정말 잘 이해해야 한다."함께 자라기 애자일로 가는 길" 책을 추천 : 탑-다운(추상 -> 구체)추상과 구체를 넘나들 수 있게끔 노력을하자 소프트웨어 장인이 되보자 미션미션은 총 1개를 진행하였고 내용 자체가 어려웠다.배운 내용을 토대로 리팩토링을 하는 것이였는데 딱 주어진 코드를 보자마자망치로 한대 맞은듯이 멍해졌다. 뭐부터 시작해야 하지 고민을 30분정도 한 것 같다.그리고 제일 쉬운 메소드 추출부터 시작하였고 그 이후로는 어떻게 접근 해야할지에 대한 고민을 하다결국 강의를 보며 인사이트를 얻기로 했다.정말 객체지향, 추상화 위 내용은 개념을 안다고 해서 무언가를 잘 할수있다? 이런건 대부분 없는 것 같다.많은 경험과 많은 인사이트를 직접 채득을 하는게 중요하다고 생각한다.이제는 리팩토링 파트에서 넘어가 실용적인 테스트 파트 강의를 앞두고 있는데 기대가 많이 된다.실무에서 한 프로젝트는 JPA 를 다른 프로젝트는 MyBatis 를 사용하고 있지만테스트에 대한 기본 개념과 내용을 알아두면 분명 큰 도움이 될거라고 생각한다. 모든 정리 내용은 Github 에 기록을 해두었습니다.
웹 개발
・
Java
2024. 10. 04.
0
인프런 워밍업 클럽 스터디 2기 백엔드 - 1주차 회고록
항상 코드를 짜며 고민을 한다내 코드는 객체지향 적인가? 내 코드는 다른 사람이 와도 이해하기 쉬울까?(TMI: 갑자기 위 질문을 나한테 던져보다, 어떤 Youtube 강의 중에 '넌 전혀 restful 하지 않아' 라는 강연이 떠올랐다..) 이 부분에 대한 대답으로는 간단하게 시니어 개발자들에게 코드 리뷰 를 받게 되면 점진적으로 좋은 코드가될 수 있을 것 같다. 하지만 현재 혼자 공부하고 있는 입장으로서, 누군가 한테 내 코드 리뷰를 받을 수가 없어,혼자 클린 코드에 대한 고민을 하며 코드를 작성하고는 한다. 그래서 위 워밍업 클럽을 신청하게 되었고, 겸사 겸사 테스트 코드 학습도 하게 될 것이라더 많은 지식을 얻게 될 생각에 벌써 머리가 아프지만, 기분이 좋다. 1주차Readble - Code 에 Section1 ~ Section5 까지 의 강의를 들었다.클린코드 관련 키워드 및 클린 코드 방법을 공부하기 위한 강의라 생각했지만내용이 너무너무 알찻다. OOP 및 SOLID 원칙 등 너무 좋은 내용에 대한 인사이트를 얻게 되었고,강의자 님을 전달력이 너무 좋아, 귀에 쏙쏙 들어왔기에 2배로 효율적이라고 생각한다. 위 섹션들을 들으면서 공통적으로 느끼는 건사고 하는 방법에 정말 많은 도움이 되는 것 같다. 한가지 사고방식에 사로잡히는게 아닌, 여러 방향으로 유연한 사고를 할 수 있게 도와준다. 프로그래밍 머리는 제로인 내가 들었을 때 한번에 50% 이상 이해가 된 강의는 처음이다. 특히 요일 별로 섹션을 나눠 듣고, 꼭 실천해야한다는 의무감 및 책임감도 있고강의 내용을 더욱 더 깊게 이해하기 위한 미션들을 수행하면서 한층 더 성장한 듯한 느낌을 받았고다른 개발자들의 글들을 보며 동기부여 및 다양한 인사이트 를 얻게 되어 감사하다. 강의수강 요약강의에서 제일 기억에 남는 부분은섹션3 파트이다. 사람은 생각을 하고 살아야한다.생각도 아무런 생각이 아닌, 논리와 사고의 흐름을 가지고 있어야 한다고 생각한다. 위 내용을 프로그래밍에 빗대어 설명을 해주셨고 내용들이 귀에 쏙쏙 박혀서 너무 좋은 섹션이였다.'뇌 메모리 적게쓰기' 에 대한 해답을 찾기 위해 노력을 해보는 계기가 되었다. 미션미션은 총 2개를 진행하였고, 아직 까지 크게 어려운 내용은 있지 않았다.왜냐? 추상적인 내용을 바탕으로 내 생각을 표현하는 미션이 였고누가 틀렸네, 맞았네 의 그런 미션이 아니었기 때문이다 하나 코드 문제가 있긴했는데, 간단한 리팩토링에 대한 미션이라강의를 잘 듣고 생각나는 키워드를 바탕으로 미션을 해결할 수 있었다.사실 해결이라는 단어가 좀 모호하긴 한대, 내 기준에서는 그래도 나름 객체지향 적으로 리팩토링을 해보았다.. 모든 정리 내용은 Github 에 기록을 해두었습니다.
백엔드
・
OOP
・
Java