내가 시도했던 방법과 고민들을 적으며 피드백을 받고 함께 성장하고자 글을 작성합니다.
회사 프로젝트 또는 개인 프로젝트를 하며 처음부터 잘 짜여진 아키텍처를 이해하고 자연스럽게 구조에 맞춰 적용하고 피드백 받는 것. 성장을 위해 잘 닦인 도로를 달리며 꾸준한 성장을 도모할 수 있는 것.
개발자로써 축복에 가까운 일이라 할 수 있을 것 같다. (좋겠다. 물론 그 길을 달리기 위한 과정과 노력이 있었기에 가능했고 대단하다 생각하지만 부럽다.)
그러나 프로젝트를 개발하면서 아키텍처의 존재도 모르고 기능구현에만 급급하며 레거시 코드 위에 다른 기능들을 추가하며 언제 무너질지 모르는 젠가를 계속하는 개발자들도 있다.
이런 개발자들 중 욕심이 있는 개발자는 노력을 각오하지만 방향을 잡기가 쉽지 않다. (내가 그랬다.)
현실은 기능구현에 집중해야하는 일정과 새로운 기술, 아키텍처를 도입하는 것 자체가 부정적이고 어려운 환경에 놓여있는 사람들이 많을 것이라 생각한다. 어떻게 시도해야하는지, 어떻게하면 코드퀄리티가 좋아지는지, 좋은 코드가 뭔지 조차 애매한 사람도 있을 것이다.
본인의 성장을 고민하고 포기하고 싶지 않은 사람들이 이 글을 읽고 있을 것이라 생각한다. 나도 고민했고 계속해서 고민하고 있다. 내가했던 시도들과 시행착오들을 계속해서 작성해나갈 예정이고 기술에 대해 이해한 것들 또한 적어나가려고 한다. 그럼 어떤 활동을 통해 누군가에게 보여줄 때 덜 민망한 코드 퀄리티를 만들 수 있을까?
나는 이렇게 시작했다.
if else로 엄청난 일들이 일어나고 있는 프로젝트가 꽤 많이 있을 것이라 생각한다. 심지어 모든 로직처리가 if else로 처리되는 경우도 있을 것이다. 상태에 따른 로직을 일부 클래스로 나누거나 위임할 수도 있고, enum을 이용하여 상태별 정의를 만들어 둘 수도 있다.
다양한 if 줄이기위한 방법이 있으니 찾아보고 자신이 하고있는 프로젝트에 적용해보자.
이를 통해
을 느껴볼 수 있고 refactoring의 의미를 조금씩 알게 될 것이다.
MVP, MVVM 등 많은 아키텍처가 있고 뭐가 더 자신의 프로젝트에 맞는지 어떻게 적용하는게 좋은지 고민하다 관두는 경우가 많을 것이다. 나도 그 고민속에서 꽤 많은 시간을 소비했다. 개인적으로 아주 작은 단위(뷰 나열과 버튼 클릭만 있는 단순한 화면)의 작업에 적용해보면서 시작했다.
일부분만 적용해도 되는가? 일단 yes. 프로젝트 기준 엄청난 변화가 일어나지는 않을 것이다. 그러나 문제없이 돌아가는 코드, 분리되며 activity, fragment의 코드가 줄어드는 것을 눈으로 확인할 수 있다. 또한 각 역할에 해당하는 클래스를 구성하면서 단일책임원칙을 상기시켜볼 수도 있다.
시도하지 않았을 때는 누군가한테 배워야 할 수 있다 생각했던 것들이 하나씩 적용되는 경험을 할 수 있을 것이다.
깃허브의 open repository에 아키텍처 관련 좋은 퀄리티의 프로젝트들이 정말 많이 존재한다. 그들의 코드를 따라 읽어보며 적용해보는 것도 좋은 과정이라 생각한다. 구글의 codelab에서 jetpack의 aac를 들어가 하나씩 배워나가는 것은 안드로이드 개발자라면 꼭 해봐야하는 과정이라 생각한다.
(codelab에서 자신이 배우고자 하는 기술 키워드를 치면 아마 거의 다 나올것이다.) (ex. codelab Mvvm 등)
사수가 있고 그가 정말 노력하며 얻은 결과물들을 전수해주고 그 과정을 통해 좋은 개발자로 성장한다면 참 행복한 상황일 수 있다. 그러나 무엇을 배워야하는지 모르고 성장하는 방법도 모르는데 노력하는 사람들이 하는 삽질이 안타깝다. 이런 안타까운 상황에 있는 개발자가 본인의 실력 향상을 통한 업무능력 증진이 아닌 업무에 투입하는 노력을 늘려 결과물을 뽑아내는 상황이라면 조금 더 영리하게 본인의 커리어를 쌓아가는 과정을 밟았으면 좋겠다.
감사합니다 코드랩에서 좀 더 찾아봐야겠네요 혼자 공부하면서 외롭고 구글링으로만 버텨왔는데 그러면서 나는 왜이렇게 부족할까 라는 생각을 하면서도 앉아서 찾아보고 그러는 도중에 di 관련 글 보다가 여기까지 왔습니다 ㅎㅎㅎㅎ이렇게 잘 하시는분도 지금의 저와 비슷한 경험이 있다는것에서
희망을 갖고 갑니다 ㅎㅎㅎㅎ
좋은 글 감사합니다!