본문 바로가기

인턴 후기 :: 2021년 2월의 문제들

by kicksky 2021. 3. 8.

한 달 가량 일을 했고, 많이 배우고 느꼈다. 잊으면 안 될 것 같아서 기록해놓는다.

 

기술적인 면

#1 '틀린' 코드.

어떤 문제가 있었고 생각해낸 해결 방식 중 하나는 a 라우트의 A 컴포넌트에서 state와 props를 location.state에 담아 b 라우트의 B 컴포넌트로 이동했다가 다시 a 라우트의 A 컴포넌트로 돌아오는 것이였다. 로컬 개발 환경에서는 이렇게 해서 문제가 해결되었는데 배포를 하니 다시 동일한 문제가 발생하여 이 방법은 폐기시켰다.

이 방법은 사실 로컬에서 작동한다한들 그리 좋은 해결책은 아니였던 것 같다. 우선 다시 처음의 url로 돌아왔을 때 state를 통째로 다시 업데이트 해야했고, 부모 컴포넌트로부터 받는 props의 경우에는 자식 컴포넌트에서 업데이트를 해야했기 때문에 안티 패턴에 가까웠던 것 같다.

결국 B 컴포넌트를 재활용했다. A 컴포넌트에서 B 컴포넌트를 조건부 렌더링 해주는 방식으로 해결했다. 이 방식도 탐탁치는 않지만 앞선 해결 보다는 덜 최악이였다. 어쨌거나 state 값을 가지고 url을 이동할 수 있다는 점을 알게 된 것은 다행이다.

 

+ 사실 이 문제를 해결하기 전에 다른 이유로 지적 받아 삭제한 코드와 아이디어가 있었는데 (다른 사람들은 모르지만) 결국 돌고돌아 최종 해결책에 반영이 되었다. 나도 처음에 받은 지적이 타당하다고 생각하지만, 결국 그 아이디어가 동일한 큰 흐름 속에서 발생한 다른 문제를 해결한 것을 보면 완전히 틀린 코드가 있을까 하는 생각도 들었다. (있겠지) 내가 A를 구현했지만 B로 해야한다고 지적을 받더라도 A와 B를 동시에 구현할 수 있는 방법이 존재할 수도 있다는 점...

 

#2 에러 핸들링.

에러 핸들링에 관한 문제였다. async await 함수를 중첩으로 사용할 때, 에러를 잡는 방법이였다. 에러가 가장 깊은 레벨에서 발생했을 때 catch가 이를 잡으면 얕은 레벨에서는 확인할 길이 없다. 그럴 때는 앞선 catch에서 잡은 에러를 다시 throw를 해주어야 가장 얕은 레벨에서 이를 받아 catch 할 수 있다. 이거를 왜 몰랐지?

 

#3 동료의 코드.

디자인 패턴을 파악하고, 남의 코드 잘 읽기. 비록 일을 그만두기 며칠 전에 코드에 적용된 디자인 패턴을 알게 된 것은 아쉽지만. 사실 다른 사람의 코드에 내 코드를 얹는 것은 일하면서 가장 어려운 부분 중 하나였다. 어떤 것이 허용되고 어떤 것을 해서는 안 되는지를 스스로 판단하기 어려웠다. 다음에 또 협업을 하게 되면 가장 신경 쓰는 부분이 될 것 같다.

 

그 외 Git 사용법, AWS 등...

 

일 머리, 의사소통

#1 큰 그림.

회사의 서비스, 비지니스 로직, 유저 플로우 제대로 이해하기. 이것도 지적을 많이 받은 부분인데 스스로 좀 안일했던 것 같다. 한번에 정신 차리고 딱 이해했으면 훨씬 좋았을 것이다. 

 

#2 문제 파악.

의사소통과 협업. 문제가 생겼을 때, 나 스스로 문제에 대한 파악이 우선 되어야 다른 사람에게 도움을 청하기 더 용이하다는 점. 하다못해 단순한 용어부터 그렇다. 정확한 어휘와 표현으로 내가 처한 상황과 내가 생각한 해결책 등을 제시해야 서로 일하는 데 불편함이 덜 할 것이다. (당연하게도)

 

#3 '쓸데없이' 기죽지 말 것.

신입은 바보인가? 바보일 수도 있지만 아닐 수도 있다. 상황마다 다르겠지만 동료와 의사소통 할 때에는 내가 상대방으로부터 받는 에너지 만큼의 동일한 에너지로 되받아 쳐야할 때도 있는 것 같다. 불필요한 오해를 받지 않고 싶다면 말이다. 

'' 카테고리의 다른 글

[220521] 개발자, 프로덕트(디자인) 팀과 협업  (0) 2022.05.21
[220520] 문제 해결  (0) 2022.05.20
[211216] 단상  (0) 2021.12.16
우아한형제들 경력 개발자 인터뷰 리뷰  (0) 2021.10.04
킨더구리 v2 프로젝트 후기  (0) 2021.04.13

댓글