나는 확실히 어떤 A라는 기능을 위해 코드를 작성하고 있다가 A와 연관이 있는 B라는 작업이 등장하면 나도 모르게 A를 냅두고 B를 하는 상황이 많이 있었다.
그래서 팀원이 피드백해줬는데 좋은 것 같아서 기록해둔다.
땡큐 팀원
내 마음대로 말을 지어내봤는데 팀원에게 조언받은 내용이 비동기 작업처럼 다가와서 적어보았다.
어제 상황을 예로 들면 앱스토어에 앱을 제출하기 위해서 dev브랜치를 빌드하려고 하는데 dev 브랜치에서 일부 기능에 문제가 있었다.
생각해보면 dev 브랜치는 항상 문제가 없는 상태로 유지되어야 하는데 그러지 못한 점이 문제인듯
이것의 원인은 dev 브랜치에 머지를 했을 때 e2e로 기능을 테스트하지 않았기 때문
그래서 문제를 해결해 나가는데 A 기능에서 문제가 발생해서 고치는 도중에 문제의 원인이 B기능에도 영향을 미치는 것을 확인했다. 그래서 어느새 보니 B기능을 고치고 있었다. 이렇게 고구마 줄기 따라가듯 문제를 해결하고 있으니 커밋 단위도 애매해지는 것이다. 난 분명 A기능만 고치려고 했는데 B기능도 고치고 있게 되니까
그래서 팀원이 문제를 발견하면 그 즉시 해결하려고 하지 말고 어떤 기능에 문제가 있는지 탐색해서 문제를 다 파악하고 난 뒤에 하나하나 해결해 나가는게 어떻겠냐고 피드백해주었다!
그래서 실제로 해보니 좋았다.
실제로 나는 아래처럼 확인해야 할 기능들을 적어두고 문제가 생기면 바로바로 해결하려고 했다.
AS IS
확인 순서
TOBE
기능 확인은 위 순서대로 하되
문제를 파악해서 적으며 문제들을 종합했다.
이런식으로 ASIS처럼 문제를 바로바로 해결하는게 아니라 문제를 파악하면서 테스크큐에 문제를 넣어두고 파악이 다 끝나면 하나씩 꺼내서 해결하는 방식인 거다.
그리고 해당 문제들을 전체적으로 분석했을 때 모두 엑세스토큰을 관리하는 함수가 변했기 때문에 생기는 문제였다.
그리고 이 과정에서 다른 모든 api 함수들이 metaData라는 request header를 관리하는 함수에 의존하는데 이 metaData함수를 수정하니까 모든 api 함수에 영향을 미치는 것이다.
그래서 모든 api함수를 찾아가며 거기서 호출되는 metaData에 넣어주는 인자를 수정해주었는데 수정하면서도 이런 관계로 작성된 코드는 좋지 않다는걸 느꼈다.
어떻게 해결해야할까