개발 이슈,해결법

회고 (2022 하반기)

난쏘공돌이 2022. 11. 24. 15:06

[프로젝트를 하면서 느낀 점]

이 회사에서 나는 백엔드 개발자로 Python 과 JS를 사용해 오고 있다.

물론 처음부터 둘 다 하려고 한 건 아니고,

필요에 의해서? 그리고 좀 더 편한 작업을 위해서 사용했다.

연구소 내에서 내가 맡고 있는 작업은 물론 백엔드 작업이지만, 그 중에서도 DB에 저장된 임상 관련 데이터들을 조합, 정제하여 다른 EDC가 읽을 수 있는 xml 형태로 넘겨주는 작업이다.

데이터 구조가 생각보다 복잡했고 data를 합치는 과정에서 중복된 데이터를 제거하거나 common 이 체크된 경우 아예 새로운 data format으로 만드는 등의 작업을 하다 보니 Python이 가장 적합했다.

나는 약 9월 말 부터 Imtrial에 합류하여 두 달 조금 안되는 기간 동안 ODM이라는 데이터 표준 그리고 외부 rave system을 지원하는 ODM 확장을 작업했는데, 일단 기존 코드를 분석하는데 소요되는 자원이 너무나 컸다.

어떤 로직은 query를 쳐서 모든 data를 dict 형태로 작업하는 것도 있었고, 또 어떤 로직은 쿼리 결과를 DataFrame 으로 변환 하여 계속 작업했다. 그러다 보니 간단한 로직을 바꾸는 데에도 두가지 경우를 모두 고려해야 했다.

이런 고민들을 좀 줄이기 위해 나는 새 기능을 작업할 때, DataFrame을 많이 사용하려고 했다. indexing 측면에서도 더 직관적이고, 특히 Pycharm 에서 Sciview 기능을 통해 DataFrame의 형태 그대로 보여주는 기능을 사용하여 디버깅에 용이하게 사용할 수 있기 때문이다.

나름 중복코드 없이 깔끔하게 짜려고 노력했지만, 기존 코드에서 로직을 바꿔야 하는 경우 중복코드를 많이 사용했다. 모듈화를 진행하면서 생길 side effect를 걱정했기 때문이다. 하지만 이 코드를 그대로 내버려둘 생각은 없다. 이후 유지 보수를 위해서라도 리팩토링을 통해 유지 보수가 좋은 코드를 짜두려고 한다.

 

[하고 싶은 것]

나의 발전을 위해 크게 생각하는 부분은 [클린코드 / 리팩토링 / ORM] 세 가지로 생각하고 있다.

사실 클린코드와 ,리팩토링은 큰 범주라 얼마 만에 마무리를 할 수 있을지 모르겠다.

가독성 측면에서는 클린 코드를 PEP 8 형식에 최대한 맞추어 작업하고,

지금 돌아는 가는 현재 로직을 모듈화 시키고 하나의 모듈이 하나의 일만 할 수 있도록 작업하는 리팩토링을 꼭 진행할 예정이다. 현재 코드는 일부 모듈화가 되어있지만, 다른 분의 코드와 내 코드가 혼재 되면서 하나의 모듈에서 여러가지 일들을 한꺼번에 진행하고 있다. 이걸 나눠보고자 한다. 물론 바꾸면서 모든 테스트들이 반복되어야 겠지만…

마지막은 ORM이다. 현재 데이터 구조가 복잡해서 ORM을 도입하기 어려운 실정이다. 해서 이번 12월에 진행되는 팀 내 DevDay 행사에 ORM에 대해 공유하고, 앞으로 개발될 고도화 프로젝트에 적용을 제시해보려고 한다. 나 역시도 ORM에 대해 심도 있게 다뤄본 적이 없어서 지금 현 시점 발표 자료를 만들며 공부하고 있다.

[아쉬웠던 점]

임상 분야에 종사하고 있다 보니 필연적으로 임상 지식이 필요하고, 해당 부분을 완전히 이해하지 못한 채로 개발을 하다 보니 요구 사항 속의 요구 사항을 찾아내기 힘들었다. 계속 물어봐야 하고, 만약 물어보지 못하고 코드를 올릴 때면 QA에서 거절이 나거나 다시금 결함으로 재 작업을 해야 했다.

지금에 와서는 시스템의 기능들을 일부 이해하고 있고, 전체적인 진행들이 보여서 좀 덜하긴 한데 아직도 내가 모르는 규칙이나, data format들이 많이 있다. 시간이 얼마나 걸릴지는 모르겠지만 요구 사항과 내 지식 사이의 갭 차이를 줄이는 다음 년도가 되기를 소망 한다.