20221107 TIL 아샬님이 전수해주신 소중한 꿀팁들
오늘은 아샬님의 특별한 강의를 들을 수 있는 아주 소중한 날이었다.
들으면서 반성할 것들이 많이 떠올랐고, 많은 꿀팁을 얻을 수 있었다.
일단 가장 많이 반성했던 부분은 팁을 찾으려 하지 말자였다.
이 메시지의 요지는 쉬운 길을 찾으려 하지 말아야 된다는 것이다.
나는 내가 생각을 해서 코드를 짜도 내가 생각해서 짠 코드보다 더 나은 방식이 있을 거란 생각에 생각을 하기보다 어떤 규칙을 찾아서 그 규칙을 따르려고 하는 습관이 있다.
공식을 습득해서 공식에 따라 결과를 도출하는 과정을 몇 년 동안 하면서 항상 어떤 규칙을 찾으려 하는 습관이 밴 것 같다.
그래서 규칙을 찾으려 하지 말라는 피드백을 몇 번 들어서 자제를 하려고 노력을 하고 있지만 아직도 무의식적으로 규칙을 찾고 있는 나의 모습이 보인다..
규칙을 찾으려하지 말라는 이유는 규칙을 찾는다는 것 자체가 일반화를 하게 되는 것인데, 프로그래밍을 하면서 일반화를 하는 것이 바람직하지 않기 때문인 것 같다.
아직 아는 게 많이 없어서 케이스마다 어떤 방식이 더 적합한 건지 판단이 잘 안 설 때가 많은데 그럴 때는 규칙을 찾으려고 하기보다는 아샬님의 조언대로 트레이너님들께 최대한 질문을 많이 해서 힌트를 얻는 방식으로 진행해야 될 것 같다.
몸에 밴 습관을 고치는 게 쉽진 않지만 조금씩 노력을 해야될 것 같다.
잘못 짜고 있었던 사용자 스토리를 제대로 짜는 법에 대해서도 들을 수 있었다.
5주 차에 개인 프로젝트를 진행할 때 화면을 기준으로 '화면의 무엇을 클릭하면 무엇을 할 수 있다.'처럼 사용자 스토리를 작성했었다.
그런데 더 바람직한 사용자 스토리 작성 방식은 화면에 대한 내용이 아니라 기능에 대해 작성하는 것이라는 것을 배웠다.
화면은 바뀔 수 있지만, 사용자 스토리는 화면의 변화에 영향을 덜 받아야 된다고 한다.
그리고 사용자 스토리로 요구사항을 관리하게 되는데, 화면에 대한 내용을 작성하는 것이 아니라 이 기능으로 어떤 가치를 전달할 수 있을지에 초점을 맞춰야 한다.
보통은 As I So를 이용해서 '어떤 role로 어떤 기능을 수행하면 어떤 가치를 얻을 수 있다.'형식으로 많이 작성한다고 한다.
게시물 필터링 기능으로 예를 들면
As 정보를 찾는 사람은
I 게시물 필터링을 통해
So 자신이 찾는 정보를 더 빠르게 검색할 수 있다.
처럼 작성할 수 있다.
기능을 설명하기보다, 가치에 중점을 두고, 이 기능이 왜 있어야 되는지에 대해 고민을 하고 작성을 해야 될 것 같다.
또한 가치는 꼭 사용자에게 주는 가치뿐만 아니라 비즈니스 측면의 가치가 될 수도 있다고 말씀해주셨다.
그리고 사용자 스토리를 처음부터 다 작성하지 않아도 되고 모르는 부분이 있다면 일단 남겨두고 고민을 하는 방식으로 진행하면 된다는 조언도 얻었다!
그리고 풀스택으로 프로젝트를 진행하면서 주의할 점에 대해서 들을 수 있었는데,
UI 컴포넌트를 설계할 때, 프런트 전반적인 UI와 비즈니스 로직을 분리할 때, REST API를 설계할 때, application layer를 설계할 때, 도메인 계층을 설계할 때, DB를 설계할 때 각각이 서로에게 영향을 주면 안 된다는 것이었다.
여러 개를 동시에 작업하다 보면 한 개가 다른 것에 영향을 주기가 쉬운데,
서로 영향을 주면 한 부분만 변경하기가 매우 어려워진다.
예를 들어 REST API가 화면과 밀접하게 연관되어 있다면 화면이 바뀌면 REST API도 수정해야 될 것이다.
프로그램은 변경 비용을 낮추는 게 제일 중요하기 때문에 한 부분이 변경돼도 다른 곳에 영향이 없도록 다른 부분에 끌려다니지 않도록 특히 화면이나 DB 등에 끌려다니지 않도록 주의해야 될 것 같다.
최신 트렌드도 엿볼 수 있었다.
서비스를 기능단위로 구성해서 PostService보다 GetPostService, CreatePostService처럼 각 서비스가 무엇을 하는지 한눈에 볼 수 있도록 하는 방식도 있다는 걸 알게 되었고,
컨트롤러끼리, 서비스끼리처럼 계층끼리 패키지를 묶기보다 관련있는 repository, service, controller를 묶는 방식도 있다는 것을 알게 되었다.
이러한 트렌드도 무조건 좋다고 규칙처럼 받아들이려고 하지 말고 매번 더 바람직한 방식은 무엇인가 생각을 하고, 근거를 갖고 판단을 내려서 프로그래밍을 하도록 하자!
쉽진 않겠지만 규칙을 찾으려 할 때마다 한번이라도 고민을 더 해보고, 생각을 해보고 나만의 근거를 찾으려고 노력을 해보자. 화이팅!