전체 글

전체 글

    5년차 개발자의 이직 이야기

    현재 회사(글을 쓰는 지금 시점에서는 이전 회사)에 재직한지 2년이 넘어가는 시점부터 나는 이직을 생각하기 시작했다. 전반적으로는 회사 생활에 만족했고 돌이켜보면 주니어 개발자로 입사해서 많이 성장할 수 있었던 고마운 회사였지만, 등따시고 배부르니 다른 생각이 들기 시작 시니어가 되어가는 5년차 개발자로서 많은 생각이 들기 시작했다. 나는 왜 이직을 원하는가 나는 이직을 원한다. 적어도 마음속에 그러한 외침이 있다는 것 정도는 분명했다. 그렇다면 내가 이직을 원하는 이유는 무엇일까? 머리에 멤도는 생각들을 정리해보기로 했다. 그 중 우선순위가 높다고 생각되는 두 가지 정도를 뽑아보았다. 처우 IT 업계 종사자라면 게임 업계로부터 시작된 2021년의 매서웠던 연봉 인상 러시를 알고 있을 것이다. 개발자의 ..

    Spark 개발 환경 구축하기 - Scala, IntelliJ, SBT

    Spark 애플리케이션을 개발에는 크게 Scala 또는 Python을 사용할 수 있다. 기존에 자바로 개발을 주로 해왔던 개발자라면 Scala를 선호할텐데 개발 환경 세팅을 할때 참조할만한 자료가 많지 않아 직접 프로젝트 세팅을 하며 정리해봤다. 시작하기에 앞서 세 가지 선결 사항이 있다. Spark 설치, 환경변수 설정 Scala 설치 IntelliJ Scala plugin 설치 설치 방법은 구글에서 쉽게 찾을 수 있다. 본 게시물 최하단에도 참고 링크를 걸어두었다. 1. 프로젝트 생성 이제 Scala, Spark, IntelliJ Scala plugin 설치는 모두 되어있다고 가정하고 IntelliJ 새프로젝트를 생성해보자. build tool을 선택하면 되는데 sbt가 recommended라고 되어..

    Spring Batch - Paging 처리시 주의점

    스프링배치의 ItemReader 중에서는 Paging 처리를 지원하는 것들이 있다. 대표적으로 JdbcPagingItemReader와 최근에 추가된 것으로 보이는 JpaPagingItemReader가 있다. 이외에 Spring Data repository를 사용할 수 있게 해주는 RepositoryItemReader도 Paging처리를 지원한다. 해당 ItemReader들을 활용해 Paging 처리를 할시, 데이터가 Skip현상이 발생할 수 있다. 아래와 같이 유저 상태가 '01'인 데이터들을 읽어들여 '02'로 업데이트 해주는 배치 애플리케이션이 있다고 가정해보자. 실제로는 select 쿼리에 페이징 처리도 들어가게 된다. 이렇게 페이징 처리를 했을때의 문제는 where 절에 조건 컬럼을 업데이트한다는..

    레거시 코드 개선기(feat. 스프링 부트, JPA)

    레거시를 버려야 할 때 오랜 시간 문제없이 돌아가는 레거시 코드는 낡았지만 돈을 벌어다 주는 고마운 존재다. 물론 낡을대로 낡은 레거시 코드는 볼때마다 갈아엎고 싶은 생각이 가득하지만, 잘 돌아가는 코드를 뒤엎기에는 개발자는 할 일이 너무 많다. 하지만 계속 운영되기만 하면 될게 아니라 요구 사항이 계속 추가되거나 수정되어야 하는 경우가 바로 분명한 동기가 생기는 시점이다. 깔끔하고 확장 및 수정이 쉬운, 세련된 코드로 탈바꿈 할 때가 온 것이다. 문제점 파악 개선 대상 서비스는 '오늘의 팁'이라는 판매자용 서비스다. 판매자들이 백오피스에 접속했을때 지난주 유입 고객들이 얼마나 되며, 이번주의 인기 카테고리는 무엇인지 등 판매 활동 개선에 필요한 팁들을 제공한다. 문제는 아직 새로운 팁 종류를 추가하거나..

    목적 조직에서 개발자로 살아남기

    목적 조직에서 2년 간을 일하며 느꼈던 바를 기록하고자 한다. 당연히 목적 조직이냐 기능 조직이냐에 대한 답을 내리는 등의 담론을 다루고자 함은 아니며 목적 조직에 몸담으며 느낀 개발자의 역할에 대해 이야기려고 한다. 또한, 우연히 다른 블로거분이 기획자 관점에서 쓰신 개발팀과 개발팀장이 사라져야 하는 이유라는 글을 보았는데, 몇 가지는 동의하지만 몇 가지는 그렇지 않기에 이 글을 통해 반박해보고 싶다. 비즈니스 vs 시스템 기획자, 데이터분석가, 개발자로 구성되어 있는 조직에서의 2년을 요약해본다면 비즈니스 vs 시스템이라는 두 가지 목표의 충돌이었다. 이게 무슨 해괴한 소린가. 결국 회사 모든 조직의 목표는 돈을 버는 것인데 조직 내부에서 추구하는 바가 다를 수가 있을까? (혹은 달라서야 되겠는가?)..