규모가 크지 않은 회사에서 일하다 보니 가끔은 대기업의 애플리케이션에 집중하는 개발자들이 부럽다.
내가 알고 있었던 JavaScript, HTML, CSS3는 기초에 불과했고 실무에서는 더 다양한 방향의 조건들이 들어온다.
Spring은 내가 알던 것보다 더 많은 확장성을 가지고 있고 스프링 하위 프로젝트들을 활용하면 더 쉽고 안전하게 개발할 수 있다는 생각과 단순 Spring Web만을 사용하는 것보단 Spring Security, Spring batch.. 더 나아가서 WebFlux 등 여러 가지 방법들이 있다는 것을 알았다.
자바스크립트를 공부하니 타입 스크립트가 눈앞에 주어졌고 타입 스크립트를 공부하다 보니 앵귤러 프레임워크가 주어진다.
네트워크 문제가 발생하면 각 노드의 트래픽을 추적해야 하고 DNS가 설정됐는지 중간에 캐싱이 필요한지 방화벽은 열렸는지 서버 및 운영체제에 공부가 필요하다.
슬로 쿼리가 발견되면 이 쿼리가 인덱스는 타는지, 어떻게 해야 인덱스를 타게 하는지 DBMS마다 프로시저의 실행계획이 어떻게 구성되는지 공부한다.
데이터를 받고 가공하는 과정에서 성능 문제가 발생하면 알고리즘을 공부하고 네트워크 비용을 줄이고 내가 최선이라고 생각하는 방법으로 실무에 적용한다.
리눅스 환경에 애플리케이션을 배포하다보니, 리눅스에서 쉘 스크립트와 간단한 명령어, 방화벽, 네트워크 등 다룰 수 있는 기능을 익히고 있다.
자바를 공부하다보니 자바 8에 추가된 스트림과 람다, Optional 등 왜 기능들이 추가됐는지 공부하고 어떻게 활용하면 좋을지 생각하게 된다.
자바와 자바스크립트를 공부하다 보니 RxJava, RxJs개념이 나오고 리액티브 프로그래밍을 공부해야 할 것 같은 문제가 든다.
우리 회사엔 테스트코드가 없다. 하지만 내가 알기론 테스트 80% 실제 로직 20% 비율로 작성하는 것이 안전한 애플리케이션 개발이라고 한다. 그래서 테스트 코드를 짜는 법을 공부해야 한다. 기본은 알지만 외부 라이브러리를 테스트한다고 했을 때 생각이 막혔다.
내가 작성한 코드가 정말 좋은 코드인지 모르겠다. 객체지향의 사실과 오해, 리팩터링 2, 클린 코드를 읽고 있다.
과연 지금까지 작성한 코드를 나중에 뒤돌아 봤을때 잘못된 코드라는 걸 알게 되는 순간이 왔으면 좋겠다.
데이터베이스 접근기술에대해 궁금하다. 마이 바티스, 기본 JDBC, JPA 모두 간접적으로 경험했고 현재는 프로시저를 사용하기 때문에 Callable Statement를 활용해 스토어드 프로시저에 접근한다. JDBC의 기본을 사용하는 과거에 머물러있단 생각이 조바심 나게 한다.
스프링 Web 구조, 디자인 패턴, 서블릿 , WAS 등 클라이언트의 요청이 서버에 당도해 다시 반환되기까지 수많은 과정을 거친다는 것을 배웠다. 기존 생각하지 못한 부분과 확장이 가능한 부분 등 매우 흥미로운 부분이 많다.
DBCP, 스레드 풀 등 성능을 고려할 수 있는 새로운 부분에 대한 깊은 이해가 필요하다. 최근 최범균 님의 서버 성능의 영상을 봤었는데 매우 재밌었다.
공부할게 너무 많다. 과거에는 몰랐지만 배울수록 코드를 작성할 때 고민해야 할 부분이 많아지고 에러가 발생할 부분, 확정성이 없는 코드 등 눈에 들어온다. 이걸 고쳐야 하는데 시간에 쫓긴다. 이걸 만약 그대로 내버려 두면 나는 어떤 개발자인가?
오픈 API, 외부 모듈, 연계를 경험하면서 가이드 문서의 중요성을 깨달았다. 처음엔 읽기 어려웠지만 지식이 늘어가면서 가이드 문서를 보고 적용하기가 쉬워졌고 이 모듈이 어떻게 동작하려 하는지 눈에 들어오기 시작한다.
나는 무슨 공부에 집중해야 할지 잘 모르겠다.
댓글