개발/Java

Optional은 정말로 필요한가? (feat. JSpecify)

필자는 실무에서 처음 Java를 사용할 때부터 Optional을 싫어했습니다. 최소한 한 번은 팀에서 "Optional을 사용하지 말자"는 의견을 제안하는데요.이제는 시간을 아끼고자 이런 생각을 정리해서 블로그로 기록하려합니다.   Optional의 본래 목적  - [출처]  Java Language Architect 중 한 명인 Brian Goetz의 말을 따르면, Java 8에서 Optional을 추가한 목적은라이브러리 메서드에서 반환값이 없을 수도 있음을 명확히 표현하기 위함이었다고 합니다. 이는 라이브러리 메서드에서, 특히 메서드 체이닝과 같은 경우, 아래 방식으로 처리하는 것보다 Method matching =    Arrays.asList(enclosingInfo.getEnclosingClas..

2024.12.29 게시됨

일상/회고

개발자 5년차 진입, 그리고 2024년을 돌아보며

말세다. 벌써 5년 차 개발자라니 지금 회사에서 일한 지도 어느덧 3년이 되었습니다. 시간이 정말 빠르네요.해가 바뀌기 전에 2024년에 있었던 일들을 기록하고자 합니다. 회고 기한을 맞추기 위해 인프런 연말 회고 밋업도 다녀왔습니다. 올해는 특히 키워드 중심의 회고를 시도해 보려 합니다.   올해의 커리어를 요약하자면“개발자로서 강해지고 싶었지만, 직장인으로 성장했다.”라고 할 수 있을 듯합니다.개인적으로 기술적 성장을 매우 갈망하던 시기라 여러 강의와 책들을 열심히 찾아봤네요. jOOQ 올해는 이거 하나로 정말 많은 것을 했습니다. - [2024.01] "게으른 개발자 컨퍼런스" 연사자 참여 [link]- [2024.03] "실전 jOOQ! Type Safe SQL with Java" 강의 제작 시작..

2024.12.23 게시됨

개발

Mikado Method와 레거시 개선 계획을 짜보자

레거시 시스템은 개발자들에게 늘 고통을 안겨줍니다.  기술 부채가 쌓인 코드베이스를 마주할 때마다“이걸 고치기 시작하면 끝이 보이지 않을 텐데…”라는 생각이 들곤 합니다. 하지만 레거시를 방치할수록 시스템의 유지보수성과 확장 가능성은 악화되고, 이는 결국 비즈니스의 발목을 잡습니다.결국은 개발자들은 기술 부채 상환을 위해 대규모 리팩토링을 제안하게 됩니다.(슬픈 소방수의 삶) 그러나 우리는 개발자이기 전에, 회사에서 비즈니스 목표를 달성하기 위해 일하는 회사원이기도 합니다.이 말은, 어떤 작업을 수행하든 명확한 근거와 체계적인 계획이 요구된다는 뜻입니다.단순히 "더 좋은 코드"를 위해 리팩토링을 제안하는 것은 윗선의 설득력을 얻기 어렵습니다. Mikado Method 란? 미카도 메서드는 복잡한 리팩토링..

2024.11.29 게시됨

개발

ArchUnit을 사용하여 공통 개발 컨벤션을 검증하자

개발자로서 회사생활을 하다 보니 팀원들과 개발 컨벤션을 정의하고 합의된 컨벤션을 유지할 수 있도록 노력하고 있습니다.  하지만 노력만으론 부족합니다. 팀원들 간에 합의가 되었다고 해도 사람은 언제나 실수할 수 있습니다. 실수로 컨벤션을 어긴 코드를 작성할 가능성이 있으며, 이는 코드리뷰에서 발견될 수밖에 없습니다.그러나 코드리뷰 과정에서 이미 합의된 컨벤션까지 확인하는 것은 팀원 간의 커뮤니케이션 비용을 증가시킵니다. 이런 상황이 반복되다보니 자연스레 테스트코드를 통해팀의 아키텍처와 코딩 컨벤션을 코드로 문서화하는 방법을 찾게 되었습니다. 해결책을 찾다가 ArchUnit을 찾게 되었고 위의 문제를 해결해보고자 합니다.예시코드는 "여기"에서 확인 할 수 있습니다.   ArchUnit이란 ArchUnit은 ..

2024.11.05 게시됨

일상

사내시스템 도메인은 정말로 재미 없는가?

과거 필자가 사내시스템 도메인 분야로 이직한다고 말했을 때, 주변의 많은 분들이 말렸던 기억이 있었습니다.이 기억은 몇년이 지난 지금도 머리속 어딘가에 자리잡고 있는데요. 최근에 다른분과 커피챗을 할 기회, 그리고 과거의 경험들을 회고해봤을때어느정도 정리 할 수 있을 것 같아서 글을 남겨봅니다.  사내시스템이란 무엇인가? 여기서 사내시스템은 ERP, 혹은 업무시스템을 말합니다. 영어로는 백오피스라고 부릅니다.대표적인 ERP로 치면 SAP 정도가 있겠네요.  ERP에는 여러 모듈들이 있습니다.  - HRM: 인적자원 관리 (Human Resource Management)   인사시스템, 영입시스템 등등 - SCM: 공급망 관리 (Supply Chain Management)    구매 시스템, 입찰시스템 등..

2024.06.28 게시됨

개발

모두가 JPA를 외치는 세상에서 jOOQ를 꺼내다.

https://inf.run/2Fxib 실전 jOOQ! Type Safe SQL with Java | 설동민 - 인프런설동민 | jOOQ를 통해 Type Safe한 SQL의 강력함을 경험해보세요!, SQL은 불편하지 않습니다.SQL을 문자열로 작성하는 방식이 불편할 뿐입니다.실전 jOOQ! Type Safe SQL with Java데이터베이스와 SQL을 잘 다루www.inflearn.com 1. 인프런에 jOOQ 강의를 출시했다. 올해 컨퍼런스에서 발표를 하고, 인프런 강의를 출시하며jOOQ에 대해 가지고 있던 개인적인 생각들을 정리해보고 마무리해보려합니다. (주저리 주저리...)(사실 JPA가 불편하다고 글을 쓸땐 살짝 무섭습니다. ㅎㅎ)   2. 여태까지 jOOQ를 사용하며 고민한 글 2021년에 처..

2024.05.25 게시됨