2010년에 설립된 씨알에스큐브는 임상시험 설계부터 자료 수집, 환자 결과 보고와 운용관리 및 위해성 기반 모니터링에 이르기까지 임상시험 전 과정에서 필요한 솔루션을 제공하고 있습니다.
임상시험을 보다 효율적으로 수행할 수 있도록 필요한 솔루션을 개발하고 안정적인 서비스 제공을 위해 노력하는 개발자 성권님, 동호님, 경재님을 모시고 이야기 나눠 보았습니다.
Q. 안녕하세요, 만나서 반갑습니다 🤗 각자 소개 부탁드립니다.
김성권: 안녕하세요, 사업 3팀 김성권입니다.
cubeSAFETY R3의 팀 리더로서 개발 업무와 PM 문의, 일정 조율, 회의 주최 등 업무를 총괄하고 있고, cubeCONSENT의 Admin Webpage 개발을 맡고 있습니다.
김동호: 사업 1팀 김동호입니다.
임상시험 기록을 위한 임상시험지(CRF) 세팅 및 기록을 제공하는 cubeCDMS와 cubeBuilder의 유지보수를 맡고 있습니다.
김경재: 입사한 지 5개월 된 사업 3팀 신입 Application developer 김경재입니다.
cubeCTMS, cubeTMF 그리고 mediCLEO 솔루션의 유지보수 업무를 맡고 있습니다.
Q. 개인적으로 개발자분들과 이야기를 나눠보는 게 처음인데요,
개발 업무의 매력이 무엇인지 궁금해요.
김성권: 개발 업무의 매력은 이슈를 처리하고 개선하여 발전시키는 것이라고 생각합니다.
특히 이번에 cubeCONSENT 신규 프로젝트에 참여하게 되었는데요, 회사에서 하고 싶은 것을 할 수 있도록 많이 지원해주고 있기 때문에 다양한 시도를 하며 재밌게 일하고 있습니다.
김동호: 성취감이라고 생각해요.
개선이 필요한 부분을 찾고 팀원들과 함께 목표를 세우고 달성해나가는 과정에서 성취감을 느껴요.
예를 들면 cubeCDMS나 cubeBUILDER의 경우 사용자가 계속해서 새로운 기능을 추가하길 원하는데요, 새로운 기능을 추가하면서 동시에 이전의 기능들도 문제없이 잘 작동하게 하는 것이 가장 중요해요.
그런데 얼마 전까지만 해도 개발 단계 자동화테스트 도구가 없어서 제대로 동작하는지 파악하는데 어려움이 있었어요. 그래서 지난 분기 동안 준영님과 함께 자동화테스트를 붙여서 솔루션이 제대로 동작하는지 빠르게 확인할 수 있는 환경을 구축하는 목표를 계획하여 달성했습니다.
김경재: 재밌어요.
최근에는 기존의 소스코드를 더 깔끔하게 만드는 리펙토링 작업을 할 때 굉장히 재밌었어요. 살짝 마음에 안 들었던 부분을 수정하고 나면 마음이 편해지고 기분이 좋아지거든요.
Q. 반면에 힘든 점도 있겠죠?
김경재: 개발 업무 자체보다는 여러 사람들과 소통하는 것이 힘든 것 같아요.
일은 혼자 하는 게 아니기 때문에 오해가 생기지 않도록 의사소통을 잘해야 한다고 느끼고 있습니다.
김동호: 음... 마찬가지로 의사소통을 잘하는 게 어려운 것 같아요.
예를 들어 CRF라는 임상시험을 기록하는 문서의 경우 여러 기능을 다양하게 조합할 수 있어서 기획이 변경되는 경우가 많은데 이런 경우에 의사소통을 잘하는 것이 어려워요.
그래도 다행인 점은 저희 팀 PM분들이 제가 어떠한 것을 요청하면 바로 확인해주시고, 문제점이 있으면 빠르게 파악해서 정리해주세요.
이런 부분에서 보면 팀원들과 소통하고 함께 이슈를 해결해나가는 과정이 협업의 재미가 아닌가 싶어요.
김성권: 의사소통 과정에서 오류가 발생하거나 정보 전달이 제대로 되지 않는 경우들이 있습니다. 자주는 아니고요. 🤓
예를 들면 PM이나 QA분들은 개발자가 아니다 보니까 일정 조율 과정에서 가끔 충돌이 발생하기도 해요.
그런데 이런 경우는 개발 프로세스를 몰라서 발생하는 문제이기 때문에 이해하실 수 있도록 쉽게 설명하려고 노력하고 있습니다.
Q. 씨알에스큐브에선 개발자들의 역량을 강화하고 지식 공유를 위해 매월 Dev Tech Seminar를 개최하는 것으로 알고 있는데요, 세 분은 어떤 내용을 발표하셨나요?
김성권: NUXT를 주제로 발표했습니다.
NUXT는 서버사이드 렌더링 애플리케이션 환경을 쉽게 만들기 위해서 만들어진 프레임워크라고 보면 되는데요. 아직까지 회사에선 이 프레임워크를 사용해서 작업한 적은 없지만, 앞으로 참여하게 될 신규 프로젝트에서 NUXT를 사용하려고 준비하고 있습니다.
김동호: 저는 RUM(real user management)에 관련해서 발표했어요.
전에는 사용자들이 저희 서비스를 이용할 때 어느 브라우저를 이용하는지, 페이지 로딩은 얼마나 되는지 이런 점들을 알 수 없었어요. 그래서 판단을 할 때 어려운 부분이 있었는데 이러한 문제를 개선하기 위해 이번에 Raygun이라는 RUM을 도입했습니다.
최근에 RUM을 이용해서 적절한 판단을 내린 경험이 있어요. 일본 고객사의 경우 보수적인 경향이 있어서 기존에 사용하던 도구를 쉽게 바꾸지 않으려고 하는데 얼마 전 마이크로소프트에서 IE 지원을 중단했어요. 그래서 사용자 중 몇 퍼센트가 IE를 사용하는지 파악한 후 IE 지원 중단 시기를 결정해야 했는데요. RUM을 붙여 수집해보니 cubeBUILDER의 경우 바로 중단을 해도 된다는 판단을 내릴 수 있었고, cubeCDMS는 조금 더 유예해야겠다는 결정을 내렸습니다.
김경재: 저는 아직 발표를 하지 않았지만 엑셀 모듈에 대해 발표하려고 계획하고 있어요. 최근 cubeCTMS 대형 계약건이 발생해서 복잡한 엑셀을 출력해야 하는 상황이 생겼거든요. 이 복잡한 엑셀을 출력하기 위한 전용 모듈을 설계했고 이 내용을 바탕으로 세미나를 진행하려고 합니다.
Q. 이전 회사와 비교했을 때, 씨알에스큐브의 장단점은 무엇이라고 생각하시나요?
김성권: 저희의 솔루션을 가지고 계속해서 발전시켜 나갈 수 있다는 점이 장점이라고 생각합니다.
이전 회사는 SI 였기 때문에 소프트웨어를 만들어서 납품했는데요, 지금은 솔루션의 개발부터 유지보수까지 계속해서 관리할 수 있기 때문에 프로젝트에 더 애정이 가는 것 같아요.
또한 이전 직장과는 달리 야근수당이 있기 때문에 더 열심히 일 할 수 있는 원동력이 되는 것 같아요.
단점이라고 하면... 실은 이직을 하고 가장 낯설었던 건 분위기였어요. 이전 회사는 규모가 작아서 메신저가 없었기 때문에 사무실 분위기가 활발했거든요.
지금은 거의 모든 소통을 Slack(메신저)으로 하기 때문에 처음에는 조용한 분위기가 낯설었어요. 그런데 적응되니까 이런 환경이 업무에 집중할 수 있어서 좋은 것 같아요!
김경재: 장점은 회사의 분위기가 개발에만 집중해서 자신의 실력을 향상할 수 있게 돕는 거예요.
이전에는 비효율적으로 작업했던 경험이 많은데 씨알에스큐브에 온 이후로는 일을 할 때 좀 더 효율적으로 할 수 있는 방안에 대해서 고민하게 되었어요.
또한 업무 시스템이 체계적으로 잘 갖춰져 있어서 업무 외에 다른 것들은 신경 쓰지 않고 제 일에만 집중할 수 있는 게 좋은 것 같아요.
단점은 성권님이 말씀하신 것과 비슷해요. 좀 더 시끌벅적한 모습을 상상했는데 모든 걸 메신저로 이야기하다 보니 생각보다 조용하더라고요.
김동호: 이슈 해결 시에 동료 PM, QA, 개발자 분들이 서로 적극적으로 도와주시려고 하는 분위기와 태도가 가장 큰 장점이라고 생각해요.
또한 이슈가 발생했을 때 원인 제공자가 아닌 해당 이슈를 발견하지 못한 이유를 찾으려고 하는 문제 해결 방식도 장점이라고 생각합니다.
단점은 막대한 비용이 드는 임상시험과 관련된 솔루션이다 보니 솔루션의 안정성과 개선 사이에서 고민을 많이 하게 되는 것 같아요. 하지만 이러한 부분은 비즈니스 안정기에 접어든 모든 회사에게 공통적으로 나타나는 고민거리가 아닐까요?
Q. 주로 어떤 언어, 기술 스택을 사용하시는지 궁금해요.
김성권: cubeSAFETY R3의 경우 front-end는 Vue, back-end는 Java Spring을 사용하고 있는데요, 이번에 기존에 있던 로직이 분리된 서버에 Kotlin 언어를 사용하여 Spring을 구축하는 등 다양한 시도를 해보고 있습니다.
cubeCONSENT는 Web은 Vue, back-end는 Kotlin 스프링, App은 Flutter라는 기술을 쓰고 있습니다.
김경재: cubeCTMS는 back-end로 Spring을 사용하고 있고, front-end는 Freemarker라는 자바 템플릿 엔진을 사용해요.
그리고 cubeTMF는 Spring에 Angular 프레임워크를 사용하고 있어요.
최근에 개발하는 신규 프로젝트는 Spring back-end에 데이터를 저장할 때 JPA 프레임워크를 사용하고, front-end 쪽에선 Vue 프레임워크를 사용하고 있어요.
김동호: 1팀의 솔루션들도 3팀의 cubeCTMS와 동일하게 back-end로 spring을 사용하고 있고, front-end는 freemarker라는 템플릿 엔진과 jquery 라이브러리를 함께 사용 중입니다.
Q. 새로운 기술이 자주 빨리 나오고 또한 개발자로서 욕심이 많으실 것 같은데 자기계발은 어떻게 하고 계세요?
김동호: 주로 책으로 공부해요. 책을 볼땐 끝까지 보기보단 필요한 챕터들만 골라서 보는 편이에요. 그리고 블로그를 참고하거나 온라인 강의를 수강하기도 하고요.
김성권: 다른 분야도 그렇겠지만 특히 Web 쪽은 계속 공부를 해야 하는 것 같아요. Web은 계속 발전하고 진화되고 있기 때문에 자기 발전을 하지 않는다면 결국 도태되어 개발자로서 살아남기 힘들다고 생각하거든요.
그래서 저는 책이나 IT기업의 블로그를 참고하고나 회사의 지원을 받아 인터넷 강의를 수강하면서 계속해서 자기계발을 하려고 노력하고 있습니다.
김경재: 저는 책보다는 인터넷 강의를 많이 참고해서 공부하고 있어요. 요즘엔 저희 회사에서 많이 사용하고 있는 Spring 프레임워크에 대한 강좌를 수강하고 있어요.
Q. 개발자로서 갖고 있는 로드맵이 있나요?
김경재: 지금으로서는 Spring에 대해 더 깊게 공부해서 지식을 쌓고 싶어요. 그다음엔 개발자 커뮤니티에서 수년간 가장 사랑받는 언어 1등으로 선정된 RUST에 대해 배우고 싶어요.
김동호: 아직 커리어에 대해 깊게 고민한 적은 없어요. 다만 근무하면서 제가 어떤 문제를 해결하는 데 관심 있는지 알아가고 있는 것 같아요.
문제를 해결하기 위해 고민하고, 공부하고 있는 지금 이 순간들이 모여 앞으로 로드맵을 세우는데 도움이 될 것 같아요.
김성권: 연차가 쌓이다 보니 특정 기술이나 언어보다도 전체적인 아키텍처를 보게 되더라고요. 그래서 앞으로는 back-end, front-end 동향을 계속 보면서 아키텍처도 공부하려고 합니다.
Q. 개발자에게 필요한 역량은 무엇이라고 생각하세요?
김경재: 계속해서 새로운 기술이 나오고 발전하기 때문에 끊임없이 배우려는 자세가 제일 중요한 것 같아요.
김동호: 저희 같은 웹서비스 영역에선 도메인을 잘 아는 동료와 함께 제품을 만들어나간다는 생각을 하는 게 중요해요.
'내 능력을 가지고 엄청난 기술을 만들어야지!'가 아니라 요구하는 기술을 최대한 반영하려면 어떻게 해야 할지 소통하고 계속 고민하는 역량이요.
김성권: 오픈마인드가 필요하다고 생각합니다.
종종 자기만의 기술적 아집에 갇힌 개발자가 있는데요, 이런 분들은 다른 개발자와는 물론이거니와 PM과 같은 다른 분들과 협업이 필요한 상황에서 계속해서 충돌할 수밖에 없어요.
자기 기술에 대한 자신감도 물론 필요하지만 어느 정도는 내려놓고 열린 마음으로 상대방의 의견을 수용할 수 있어야 해요. 동호님의 말씀처럼 나 혼자만 잘하는 것이 아니라 같이 만들어나간다는 생각으로요.
Q. 드디어 마지막 질문인데요, 어떤 분들과 함께 일하고 싶으세요?
김성권: 의사소통에 거부감이 없는 분들이면 좋겠어요. 개발자로서 기술적인 역량도 중요하지만 다른 사람과 의사소통을 하면서 자기의 솔루션을 발전시켜나갈 수 있는 그런 사람이요.
김경재: 저는 개발이 너무 좋아서 미칠 것 같은 사람들과 일하고 싶어요. 테스트 작성이 몸에 습관이 배어있는 사람들이랄까요? 😁
김동호: cubeCDMS와 cubeBUILDER는 회사의 주력 솔루션으로 10년 가까이 서비스되고 있어요. 그렇기 때문에 비교적 안정적이기도 하지만 동시에 도전적인 과제들이 많아요. 고객의 요청사항을 계속 추가하면서도 안정적으로 작동될 수 있도록 해야 하거든요. 최근엔 일본과 중국 등 해외 고객이 증가하면서 더 다양한 요구사항들이 추가될 예정인데요, 이러한 안정된 비즈니스에서 도전적으로 운영 중인 서비스를 개선하고 싶은 마음이 있으신 분이라면 누구든지 환영합니다!