개발자를 시작하고 첫 회사에서 개발할 때부터 객체지향적인 설계와 코딩을 자연스럽게 접했다. 기능별로 책임을 나누고 인터페이스와 구현체를 구분하거나 객체가 담당해야 할 역할을 고민하는 방식으로 개발해왔다. 예를 들면 사용자와 관리자가 사용하는 영역은 front, admin으로 분리하고 Service나 DAO처럼 공통으로 사용하는 로직은 core에 두는 식으로 역할과 관심사를 나눠서 개발했다. 이후 이직한 회사에서는 하나의 서비스를 설계부터 구현, 배포, 운영까지 대부분 혼자 담당하게 되었는데 이전 회사에서 익힌 방식을 대부분 적용했고, 이때도 객체지향적인 구조를 의식하며 작업했던 것 같다. 그런데 혼자 시스템 전체를 만들고 이후 들어오는 요구사항까지 직접 반영하다 보니 이전과는 조금 다른 고민이 생겼다. ..