-
CBV를 개발하면서 배우고 성장한 점들Projects/CBV (Calculation Base Verifier) 2020. 6. 28. 17:18
CBV에 대한 설명은 이전 글을 참고해주시길 바랍니다!
2020/02/16 - [Projects/CBV (Calculation Base Verifier)] - CBV (Calculation Base Verifier)에 대하여
CBV (Calculation Base Verifier)에 대하여
배경 우리 학교에는 RC (Residential College)제도를 운영하고 있어서 모든 학생들이 특정 RC에 소속되게 된다. 난 2019년 한 해동안 손양원 RC의 대표를 맡아서 생활관 거주 학우들을 섬겼다. 학생 대표��
alinew.tistory.com
들어가며
CBV를 개발 완료한지 거의 반년이 지났다. 그동안 이 글을 쓰려고 했지만 캡스톤 준비 등으로 바빠서 손을 못 대고 있었다.
다행히 드디어 캡스톤이 끝났기 때문에 CBV를 개발하면서 배운 것들을 정리해본다.
1. 메뉴얼을 작성하면서 배운 책임감
처음에는 '굳이 메뉴얼을 작성해야 할까?' 라는 생각을 했다. 왜냐하면 사용법이 워낙 간단하고 직관적이었기 때문이다. 하지만 다시 생각해보니 프로그램을 제대로 사용하기 위해 지켜야 하는 몇 가지 제한사항들이 있고 사용자들이 버그를 발견했을 때 내게 보고할 수 있게 할 필요가 있을 것이라고 생각했다. 그래서 아래와 같이 사용자를 위한 메뉴얼을 작성했다. 사용자 메뉴얼에는 간단한 소개, 사용법, 결산안 파일 작성시 유의사항, 연락처를 적었다.
Manual for user
https://docs.google.com/document/d/1iB-jlziCRD-oLdJxVNljup591Q6e9ygZ38nUnDBWXAA/edit?usp=sharing
사용자 메뉴얼을 작성하고나니 '만약 내가 이 프로그램을 더 이상 손 대지 않는 상황에서 버그가 발견된다면 다시 원시적인 방법으로 결산안을 심사하는 것인가?' 라는 생각이 들었다. 그래서 문제가 생겼을 때 누군가가 메뉴얼과 코드만 읽고도 해결가능하도록 개발자용 메뉴얼을 정리해야 겠다고 생각했다. 개발자용 메뉴얼에는 간단한 소개, system overview, sequential diagram, github 주소, core algorithm에 대한 설명 등을 적었다.
Manual for developer
https://docs.google.com/document/d/1MQZmSEiY9-539nOzQMa8ARbBW9RADAIeyiosbyFtnNU/edit?usp=sharing
메뉴얼을 작성하면서 얻은 가장 큰 수확은 개발자로써 가져야 할 책임감이었다. 솔직히 처음에는 작성하는게 귀찮아서 하기 싫었다. 하지만 메뉴얼을 작성하지 않으면 누군가 프로그램을 사용하는데 어려움을 겪을 수도 있고 그렇게 되면 결산안 심사는 원래의 원시적인 방법으로 퇴보할지도 모른다는 생각에 끝까지 책임감을 가지고 작성하기로 다짐했다. 처음 겪은 귀찮음이 무색할 정도로 메뉴얼 작성은 내게 큰 도움이 되었다. 왜냐하면 누군가 메뉴얼만 읽어도 이해가능할 정도로 내 머리속에 있는 로직을 글로 적으니까 이전보다 CBV에 대해 더 깊이 이해할 수 있었기 때문이다.
2. 창피함과 함께 배운 테스팅의 중요성
첫 구현을 마친 뒤 더이상은 마라톤 회의가 없을 것이라는 생각에 엄청 들떠있었다. 뿐만 아니라 부끄럽지만 사람들에게 받을 칭찬을 생각하면서 혼자 실실 웃기도 했다.
그 때는 몰랐다. 내 프로그램에 버그가 있다는 사실을…
운영위원회를 열기 전 몇몇 학생 대표끼리 모여서 간단하게 결산안을 검토하는 예.결산안 심의위원회 라는 회의가 있다. 예.결산안 심의위원회를 시작할 때 '드디어 내 자식같은 CBV가 세상에 빛을 보는 순간이구나!' 라는 생각에 조심스럽게 손을 들고 "제가 프로그램을 하나 만들었는데 이걸 사용하면 이제 일일이 계산기 두드리면서 검사 안 해도 될 것 같습니다!" 라고 말했다. 그 자리에 계신 분들 모두 관심을 보였고 그 분들 앞에서 당당하게 프로그램을 실행했다.
하지만 결과 페이지에는 아무런 결과도 보이지 않았다. 그 순간 너무 당황했다. 그래서 "어... 이게 원래는 되는데... 어...버그가 있나봅니다. 잠시만요…" 이렇게 말하고 바로 디버깅에 들어갔다. 하지만 머리가 새하애져서 5분이 지나도 버그를 발견하지 못 했고 진행자분께서 계속 진행하겠다고 말씀하셨다.
회의가 끝나고 기숙사에 돌아가서 디버깅한 결과 내가 개발할 때 전혀 고려하지 못 한 경우가 있다는 것을 깨달았고 버그를 해결했다. 그 당시에는 너무 창피했지만 지금 생각해보니 차라리 그 때 버그를 발견할 수 있었던 것이 다행이었다는 생각을 한다. 그리고 앞으로 개발할 때는 꼼꼼하게 테스팅해야겠다는 생각해야 겠다고 다짐했다.
3. 감사인사를 들었을 때 느낀 보람
손양원 대표가 나다! CBV를 사용하고 회의 시간이 굉장히 많이 줄었다. 그래서 많은 학생대표들께서 내게 감사인사를 전하셨다. 그 순간 개발하면서 겪은 어려움이 싹 가셨다. 그리고 '이 맛에 개발자 하는구나 !' 라는 생각을 했다. 배워서 남 주는 경험 정말 최고다!
4. 개발자 커뮤니티 적극 활용하기
핵심 코드를 작성할 때 '1,000,000*2' 같은 string을 어떻게 parsing해서 계산해야 하는지 고민이었다. 처음에는 '간단한 parser를 만들까?' 라고 생각했지만 그건 overhead라고 생각했다. 그래서 결국 stackoverflow에 잘 정리해서 전 세계에 있는 개발자 선배들의 도움을 받아야겠다고 생각했다.
그 결과 아래와 같이 질문을 올리고 내가 생각조차 하지 못 한 방법이 있다는 것을 알게 되었다. 그래서 그 방법을 사용하여 문제를 해결했다.
'Projects > CBV (Calculation Base Verifier)' 카테고리의 다른 글
CBV (Calculation Base Verifier)에 대하여 (0) 2020.02.16