이펙티브 자바를 읽으며

이펙티브 자바를 읽으며

  • 개발자로서 정말로 할 것들이 많다. 스프링 / 자바는 기본이다. 자바/스프링만이 아니다. Junit, Spring JPA, security, batch, reactive 등 다양한 라이브러리를 알아야 한다. 알고리즘 공부도 빼놓을 수 없다. 서버에 대한 학습도 필요하다. 최소한 도커나 AWS, 리눅스 따위는 어느정도 다뤄야 할테다. 백엔드만이 아니다. HTML/CSS/JS는 기본으로 알아야 한다. JSP를 넘어서 타임리프 정도는 자유롭게 사용할 줄 알아야 한다. vue.js 정도를 능숙하게 다뤄야겠지.
  • 다양한 기술을 익히는 것도 중요하지만, 내가 좋은 코드를 작성하는지에 대한 고민도 많다. 클린코드, 테스트 주도 개발, 도메인 주도 개발, 리팩터링, 디자인 패턴, 에자일 등 좋은 품질의 코드를 작성하고 좋은 개발 문화를 위한 고민 또한 빼놓을 수 없다.
  • 하루 하루 할 수 있는 만큼 우적우적 하고 있다. 정말로 나를 표현함에 있어 우적 우적이란 단어보다 더 잘 표현하는 단어는 없어 보인다. 가끔은 내가 해야하는 그 모든 것들에 압도된다. 그 순간에 내가 할 수 있는 일은 필요로 해 보이고 할 수 있는 일을 퇴근하고 하루 하루 하는 일 밖에 없다.
  • 항상 그랬지만 요새 특히 나는 혼란함을 느낀다. 우적우적 하고 있지만 지금 내가 잘하고 있는지 혼란스럽다. 그 많은 과업에 나는 이것을 찍어 먹고 저것을 찍어 먹다가 이도 저도 아니라는 느낌이 들 때가 많다. 이렇게 하는 것도 하루 이틀이다. 무엇이 우선되어야 할까?
  • 일단, 좋은 기술과 좋은 품질의 코드는 분리시킬 수 있다고 생각한다. 물론, 엄격하게 분리할 수 없다. 나는 최근 JPA를 다시 공부하고 실제 토이 프로젝트에 적용하면서 객체 주도 개발이 무엇인지를 이해할 수 있었다. DB가 중심이 아니라 객체가 중심이 되고, 객체를 위한 순수한 코드를 짤 수 있다는 것에 나는 충격을 받았다. 그러나 편의상 대략 그렇게 나눈다면,
  • 두 개의 부류 중 나에게 필요한 것이 무엇일까를 생각해봤다. 고르기 쉽지 않다. 나를 뽐내고 나 개인만을 위해서라면 전자에 집중하는 것이 유리해 보인다. 자바, 스프링을 한다고 주장하는 것보다 스프링에 딸린 수많은 프레임워크를 다뤄 봤고, 더하여 도커, 리눅스, AWS, vue.js 따위를 능숙하게 다룰 수 있다고 말하는 편이 훨씬 매력적으로 보이니까.
  • 내가 처한 현재의 조건에서 좋은 성과를 내기 위해서는 후자에 집중하는 것이 맞다. 회사는 보수적이다. 기존의 기술을 고집한다. 내가 새로운 기술에 대하여 강력하게 주장하는 것이 쉬운 일은 아니다. 하지만 현재의 기술 조건이 무엇이든 좋은 품질을 코드를 작성하는 것은 언제나 좋은 일이다. 누가 알아주지 않아도 좋다. 내가 구현한 어플리케이션을 내가 유지보수하고 운영을 할 경우 분명하게 도움이 된다. 그래서 지금 나는 이펙티브 자바를 읽는다.
  • 이펙티브 자바는 솔직히 어렵다. 이펙티브 자바를 읽고 가장 먼저 정리한 내용은 빌드 패턴이다. 그 블로그에서 작성한 것보다 훨씬 많은 내용이 있다. 전혀 알지도 못한 개념이나 api가 나오기도 하며 이로 인해 위축되기도 한다. 하지만 이펙티브 자바가 나에게 감동을 준 부분이 있다. “빌드패턴을 사용해라” 라는 그 문장이 나에게는 무척 중요하다. 무엇이 좋은 코드이고 나쁜 코드인지 갈피가 잡히지 않는 상황에서, 무엇이 좋고 나쁨을 선언을 해줄 수 있는 스승이 있다는 것은 무척 중요하니까. 음, 이렇게 작성하니까 조금은 외롭네.