경험하고 싶은것
- QA를 도입과 리팩토링 명단을 작성해보기
- 기능이 안되는 부분 정상작동 시키기
- 재사용가능한 부분을 재사용할 수 있게 만들기
경험한 것
문서화 도전
모든 것을 기억하고 있으면 좋겠지만 사람은 망각의 동물, 문서화를 꼼꼼히 하지 않는다면 매번 복기하느랴 시간을 다쓰게 된다. 프로젝트를 진행하면서 이거 어떻게해야됐더라? 하고 자주 문서를 살펴보는 상황이 많았고 문서화의 중요성을 알게 됐다.
이러한 경험을 통해 나는 문서화는 작업을 효율적으로 만들어주는 수단이라고 생각한다. 그래서 리팩토링을 효율적으로 하고 싶어 QA표를 만들어 보기로 마음 먹었다. 그래서 유저테스트시나리오를 작성해보고 표도 만들었다. 하지만 이게 잘 지켜지지 않은 것 같다.
그 이유는 뒤부분의 내용과도 겹치지만 하나의 기능에 대해 많은 고민을 했기 때문에 해야될 것을 많이 늘여뜨렸지만 작업은 해야될것의 40%정도 밖에 하지 못해서 이다.
3일동안 고민해보기
로그인 폼에서 데이터를 전달해주고 받고 토큰을 저장한 후에 화면을 이동시키는 로직을 3일동안 고민 해본 적이 있었다. 잘 안됐던 이유는 화면이 이동시 라우터가 작동해야되는데 동작하지 않은것이다. Route 메소드도 사용해보고 webAPI method도 사용했지만 잘안됐다. 화면이 이동하지 않아 문제가 발생했기에 화면을 이동시키는 로직을 따로 분리해야겠다 생각을 하게 됐다. 이러한 해결 방법을 생각하기까지 3일이라는 시간이 걸렸다.
로그인 유지를 위해 토큰값이 있으면 기존페이지를 보여주고 없다면 로그인페이지로 이동하게 하는 라우터를 만들어 로그인할 때 성공한다면 토큰값을 넣어주어 로그인이후 성공한다면 화면이 이동하는 로직을 만들어 정상작동하게 됐다.
재사용을 고려하여 코드를 작성하기
기존의 코드는 로그인과 회원가입이 나눠져 작성되어 있었다. 나는 로그인을 고민하면서 로그인과 회원가입을 하나로 합칠수 있을거 같다고 느꼈다. 하지만 느낌만으로 코드를 짜는것은 위험하다고 생각해서 내가 왜 그렇게 생각했는지 근거를 찾기로 했다.
3일동안 코드와 로직을 생각하니 endpoint만 다르지 Post요청에 파라미터도 똑같고 API 통신 이후 받아오는 리턴값이 User객체로 동일한 것을 알게 됐다. 그래서 이부분을 특정 객체를 활용해 분기점을 나눠 login과 SignUp함수를 Auth함수로 통합했다.
계획기간 초과
로그인/회원가입, url요청시 디폴트 이미지 출력을 하니 7일동안 프로젝트를 잡고 있는 나의 모습을 발견했다. 리팩토링을 하기전에는 5일동안 리팩토링을 하고 싶었지만 예상치 못하게 시간이 오래걸려 해야될것은 쌓이고 시간은 다쓴 경험을 했다.
물론 마감시간을 초과하여 작업을 한건 사실이지만 꼭해야되는 기능을 완료했기 때문에 이번 리팩토링은 의미있는 경험이라고 느꼈다. 다음에 또 할 수 있게 된다면 다른 기능들도 고치고 싶다.
지켜나가고 싶은것
- 리팩토링의 유의미하다는 생각
- 해야될 항목 정하기
- 재사용성을 고려해보기
배운것
도움 청하기
로그인 로직을 혼자 해결했다고 자부할 수는 없다. 로그인 로직을 깊게 고민한것은 사실이지만 깊게 고민하고 그것을 정리하여 다른사람이 만든 코드를 이해하기도 했고 멘토님께 주관식의 질문보다는 객관식의 질문을 하여 상대가 이해할 수 있게 질문하는 것이 나에게는 좋은 경험이었다.
혼자서 해결하면 좋지만 그것이 해결이 안된다면 결국 목표에 닿지않아 실패했다고 생각해서 내가 현재 상황에서 할 수 있는 모든것을 동원해서 해답을 찾아가는게 내가 생각하는 개발자의 문제 해결 능력이라고 생각한다.
근거를 가지고 접근하기
로직이나 코드를 작성하다보면 이거 뭔가 하나로 합쳐질거 같은데… 라는 고민을 예전부터 했었다. 하지만 이런 생각은 여기까지만하고 근거를 찾아 행동으로 옮기는 것을 배우게 됐다. 항상 모든 행동에는 직감과 논리가 따라야 된다 생각하게 됐다.