"숏커톤은 실패하라고 하는 거래요"
Review on Short-kathon @ PARD, 2023-11-25
TL;DR:
500 Internal Server Error
500 Internal Server Error는 제가 자주 보는(그리고 자주 보면 안 될) 메세지이지만, 제 숏커톤 경험을 한 줄로 요약하기 좋은 표현입니다.
두려워서 걱정이던 그 숏커톤을 마무리하였습니다. 마참내! 저는 이번 PARD 숏커톤에서 FT I Land 팀의 백엔드 개발자로 참가하였습니다. 당일 19시부터 대략 15시간 동안의 (밤을 새는) 일정을 소화하였고, 이 글을 쓰기 시작한 시점(2023-12-02 00:00)으로부터 3시간 전에, 팀원들이 한 자리에 다시 모여 각자 회고를 공유하였습니다.
팀원 모두가 웃으며 숏커톤을 마무리하였고, 모두가 웃으며 다시 만나 웃으며 이야기를 할 수 있었습니다. 하지만 웃음 뒤에 숨겨야 하는 아픔이 컸을 지도 모릅니다. 전 이번 숏커톤이 인생에서 겪어 본 첫 해커톤이었고, 그래서 (그 자체의) 시간이 짧았던 것에 반비례하여 많은 것을 느낀 것 같습니다. 아래는 제가 이번 숏커톤을 거치며 느낀 것을 적은 것입니다:
유의 사항: 사진이 없어서 죄송합니다. 가독성이 떨어진다면 말씀해주시면 감사하겠습니다 Orz
1. 이상
꿈에선 나도 10점 만점에 100점을 받지
이번 숏커톤은 그 팀이 행사 당일 짜여진 것이 아닙니다(숏커톤 주제는 당일에 나왔습니다). 4주 전 파드 공지를 통하여 팀이 형성되었고, 숏커톤 이전에 몇 번 모임을 가지며 팀에서의 네트워크를 구축한 상태였습니다.
팀도 팀이지만, 제가 담당하는 서버 파트 쪽에서도 공식적인 세미나 일정이 모두 마무리되어, 지금까지 했던 것들을 다시 돌아보며 자기만의 '구조'를 갖춰보라는 과제를 받은 상황이었습니다. 지금까지 한 것만 잘 하면 문제가 없을 것이라고 생각했습니다.
파드 내 개발자 연합 세미나를 통해서도 다른 파트(기획과 프론트엔드 쪽)와 어떻게 협업해야 하는지 배우며 숏커톤에 대한 대비 의지(?)를 쌓았습니다.
저는...
기획자, 디자이너 못지 않게 아이디어 회의에도 적극적으로 참여하는,
데이터 설계부터 API 명세서까지 빠르게 마무리하고 프론트엔드 개발자를 도와주는,
API 명세서를 잘 짜서 프론트엔드 개발자가 명세서에서 대부분의 질문을 해결할 수 있게 하는,
프론트엔드(앱) 개발자와 자주 소통하며 서로가 서로를 검증하게 하는,
내가 맡은 부분은 꼼꼼하게 점검하며 이상이 없음을 확실하게 하는,
... 그런 개발자의 모습을 숏커톤에서 보여줄 수 있을 거라고 생각했습니다. 어떤 프로젝트가 되었든지 간에, 그 코어를 잘 지어낼 수 있을 거라고 생각했습니다.
2. 이상과 현실
현실이 꿈과 같으면 얼마나 좋을까? 적어도 꿈에 가깝기라도 하면 얼마나 좋을까?
저는... 그런 이상적인 개발자가 될 수 있을 거라고 생각했습니다.
![]()
"누구나 그럴싸한 계획을 가지고 있다.
쳐맞기 전까진주둥이를 맞기 전까진." - 마이크 타이슨
... 왜 그런 말 가끔 들어보셨잖아요. 이상과 현실이 너무나도 달랐습니다. 안 좋은 방향으로요. 팀은 좋았습니다. 제가 차이를 많이 느끼고 정말 불만이었던 건 제 개인 영역이었습니다. 아무래도 15시간이라는 시간 제약에서 오는 수많은 부분들을 고려하지 못한 게 크지 않을까 싶습니다.
2-1. 잘?했던 점
2-1-A. "기획자야 나 열심히 하고 있어"
...를 직접 말한 건 아니고, 기획자(동원)가 제게 느낀 부분이라고 합니다. 좀 더 정확한 워딩을 사용하자면, "시키지 않아도 할 걸 알아서 잘 하고 있었다"고 했었습니다.
2-1-B. 모두가 의견을 진지하게 수용하였다
모두가 아이디어 결정에 적극적으로 참여하였고, 아닌 것 같은 부분들도 지적하며 모두가 서로에 대해 개방적인 자세를 취했습니다. 개발 단계에 들어가서도 소통 중 나온 의견들에 마찰을 가지지 않고 이야기를 잘 했던 것으로 기억합니다.
2-2. 못한 점
2-2-A. "기획자야 나 열심히 하고 있어"
잘했던 부분에 올라갔는데 여기에도 왜 있냐면, 기획자와 소통이 거의 없었기 때문입니다. "알아서 잘 하겠다"란 말이 크게 좋아 보이지 않은 게, 기획자한테 물어가면서 잘 되고 있는지 확인을 받고 피드백을 받아가며 개발을 해야 잘 한다고 생각하지, 말도 안 하고 잘 하는 게 어디 있을까 싶었습니다. 그나마 기획자가 주기적으로 상황 확인을 해 줘서 다행이었지 아니었으면 알게 모르게 진행 방향이 기획자가 의도한 것과 계속해서 틀어졌을 겁니다.
2-2-B. 모두가 의견을 진지하게 수용하였다
... 이건 잘했을 수도 있지만 오히려 잘못했을 수 있는 부분입니다(기획자가 그러더라구요). 중간에 파드 헤더진으로부터 총 2+번의 피드백을 받았는데, 이 때 받은 피드백은... "이 아이디어는 실용성이 없다", "이 아이디어가 다른 것들과 뭐가 다른지 모르겠다" 등등 부정적인 피드백이 대다수였습니다. 그리고, 아이디어를 구체화하는 방향보다, 다른 아이디어를 찾아보는 방향으로 피드백이 이루어졌습니다.
저를 포함한 팀원들은 이걸 너무 진지하게 수용했던 것 같습니다. 그래서, 기획 중인 아이디어가 2번 뒤집어졌고, 그에 따라 개발을 시작하는 시간이 늦어졌습니다. 고집을 가지고 원래 기획하던 아이디어를 그대로 끌고 갔다면 이 시간을 아낄 수 있었을지도 모릅니다. 몇몇 파트장들로부터 들은 이야기인데, "PARD 숏커톤 프로젝트는 거창한 게 아니라 일단 구현 가능한 걸 만드는 데에 초점을 둬야 한다"고 하더라구요.
2-2-C. 준비가 너무 부실하였다
제가 제일 못했다고 생각하는 부분이며, 이상과 현실 간의 차이를 많이 느낀 부분이며, 그렇기에 제가 이번 숏커톤에서 제일 크게 경험하고 느낀 부분입니다. 위의 "이상"에서 제가 생각했던 이상적인 모습을 갖추려면 그에 따른 철저한 준비가 있어야 했습니다. 지금까지 서버 파트 세미나에서 했던 프로젝트들도 다시 보고, API 명세서 작성도 연습해 보고, 아이디어/프로젝트에 필요한 데이터들과, 서비스에서 오가는 정보, 백엔드에다 요청할 듯한 행동 등등을 고려해보는 연습도 해보고... 적어도 서버 파트 세미나에서 했던 것들은 확실하게 되짚어보고 가야 했습니다.
그런데 그러지 못했죠.
숏커톤 일정 중에 서버 개발을 하면서 경험했던 문제들은 다음과 같습니다:
시간 내에 할 수 있는 기능을 해내야 하다 보니, 원래 생각하고 있던 기능들에서 빠진 것들이 정말 많았습니다. 보안 쪽에 문제가 발생하여 의도했던 로그인(과 로그인 하여 사용할 수 있는 서비스 제한) 기능을 진행하지 못하였고. 이미지 업로드 기능은 그 방법을 생각해내지 못하여 결국 구현 계획에서 제외되었습니다. 시간 제약이 있었기에 예상했을 법한 것이지만, 시간 안에 그걸 다 구현해낼 능력이 없음을 느꼈습니다.
팀원이 6명(백엔드 1명, 프론트엔드(앱) 3명, 디자이너 2명, 기획자 1명)인데, 기획자와 프론트엔드 1명하고만 주로 이야기를 했지 나머지 프론트엔드 2명과 디자이너들과는 아이디어 생성 시기를 제외하고 소통이 거의 없다시피 했습니다.
API 명세서를 작성하고 프론트엔드 개발자에게 건넸는데, 제가 서버와 주고받을 Request/Response과 그 세부 데이터 변수명을 그 이후에도 자주 변경하였습니다. 실제로 프론트엔드 개발자가 API Call에서 오류를 겪고 있길래 살펴보니 바뀌기 전의 변수명을 사용하고 있었기에 발생한 일이었습니다. 이런 사소한 변경을 최소화해야 하지 않았을까, 적어도 바뀌었을 때 제가 이야기를 바로 해줘야 하지 않았을까 합니다.
뼈대를 꾸미고 거기에 살을 붙이는 데에만 정신이 팔려 자가점검을 하지 않았습니다. 코드를 채워넣은 건 좋았는데, 이게 제대로 작동하는지 확인도 하지 않고 (시간에 쫓겨) 완료되자마자 프론트엔드 개발자에게 API 명세서를 보여줬던 게 기억납니다. 이후에 뒤늦게 테스트를 하며 오류를 발견하였고 디버깅에 상당한 시간을 소비하였음에도 불구하고, 제대로 된 원인을 찾지 못하여 - Log도 제대로 하지 않았었거든요 - 결국 서버 쪽에서의 작동이 불완전한 상태로 마감시한을 맞이하였습니다.
500 Internal Server Error가 (자주) 떴을 때 제 기분은 날개에 구멍이 뚫려 하늘에서 떨어지는 기분이었습니다.
3. 이상과 현실과 미래
롱커톤 때는 (숏커톤 때보다 더) 잘 해내야지
글을 쓰기 시작한 시점으로부터 약 2.5주 뒤에 PARD 롱커톤 공식 일정이 시작됩니다. 롱커톤 팀은 글을 쓰기 시작한 시점으로부터 18시간 이내에 구성될 거구요. 롱커톤은 숏커톤의 15시간을 훌쩍 넘기는 3주란 기간을 가집니다. 이에 따른 특성들도 분명 달라질 겁니다. 하지만, 롱커톤에도 (숏커톤을 통해 배운) 적용할만한 부분들이 분명 있습니다.
3-1. (롱커톤을 거치며) 해볼 점
3-1-A. 내가 배운 파트는 보완하고, 좀 더 일반적으로 사용할 법한 부분들을 보강하자
서버 파트 세미나 일정이 종료되었지만, "야! 나도 백엔드 개발자다!"라고 하기엔 부족한 부분들이 많습니다. OAuth 인증을 사용한 보안 방식을 적용해보고, 유닛/통합 테스트 코드를 추가하여 이런 점검을 자동화해보고, 이미지나 영상 같은 미디어 파일을 저장하고 불러오는 것도 해 보고... 그 이외에도 더 할 게 있을 겁니다. 롱커톤 기간 동안에는 이런 부분들이 필요할 거니까요.
... 근데 그것보다 이 때까지 한 것들을 다시 되돌아보며 확실하게 내 것으로 만드는 게 더 중요하지 않을까 싶습니다. 그것도 안 하고 새로운 것들을 배우는 건 깨진 둑에 물 붓는 격이 아닐까 싶어요.
3-1-B. 피드백에 너무 휘둘리지 말자
의견은 중요합니다. 좋은 의견이든 나쁜 의견이든, 건설적인 의견은 중요합니다. 하지만, 그런 의견들도 일부는 무시해야 할 수 있습니다. 귀를 틀어막자는 건 아닙니다. 숏커톤처럼 시간이 촉박한 상황에서 이리 치이고 저리 치이다가 원래 생각하던 걸 완전히 뒤엎고 새로운 걸 찾는 것 보단, 어느정도 고집을 가지고 가지고 있는 생각을 밀어붙이는 것도 필요하다고 생각합니다. 선택과 집중이 필요한 시기도 있어야 하겠죠.
3-1-C. 협업 툴을 배워보자
이건 숏커톤 때는 하는 것이 쉽지 않았다고 생각합니다. 모두가 '협업 툴'을 써본 경험이 다를 것이며(없는 사람부터 능숙한 사람까지. 저는 없는 쪽입니다), 그걸 배워보려고 시간을 소비하는 것이 어쩌면 '낭비'일 수 있다는 - 숏커톤 시작 전에 서로 이야기해보고 배웠으면 몰라도 시작하고 나서는 시간에 쫓기니까 안 되는 - 생각이 들었습니다.
3-1-D. 기존의 완성도를 높여나가자
시간이 긴 만큼 어떤 기능들을 추가할 가능성이 숏커톤 때보다 더 높을 겁니다. 그것에 대한 지식을 습득하고 코드로 옮겨 구현해보고 하겠지만, 그 전에 지금 하고 있는 게 잘 돌아가는지 꼭 점검하고 확인해야 더 안정적인 개발을 할 수 있지 않을까 싶습니다. Swagger를 통한 API 명세서 작성 및 테스트 방법도 살펴보고, 로그도 자주 남겨서 점검을 수월하게 하고, API 명세서도 꼼꼼하게 기록하고 하면서 최대한 원래 있는 것들을 확실하게 끝내놓고 기능 추가를 시작해야 할 것 같습니다.
3-2. 글을 마치며
2023년도 벌써 그 마지막 달이 왔으며, 바닥에 한기가 도는 겨울이 왔습니다. 학기도 벌써 14주차 끝과 그 자체의 끝으로 달려가고 있습니다. 숏커톤은 끝이 났지만, 롱커톤은 조만간 시작입니다.
숏커톤 당시, 저희 팀이 입상하진 못했지만... 모두가 웃으면서 끝냈다는 게 상당히 놀라웠습니다. 뭔가 제대로 하지도 못 하고 입상도 못 해보면 엄청나게 스트레스를 받으며 기분이 추욱 처질 줄 알았는데, 제 자신이 그걸 비교적 무덤덤하게 받아들이고, 앞으로 보완해야 할 일들을 생각하며 마음을 다져가는 게 신기하더라구요. 서버 파트 친구가 저한테 와서 "우리 서버 파트 안에서 스터디를 가져보자"고 한 것도 기억이 납니다. 하지만 슬프게도 곧 기말고사가 다가오기 때문에 스터디를 할 시간이 없을 겁니다. 지금도 이야기만 꺼냈지 감감무소식인 걸 보면 그런 것 같아 보입니다. 저희 팀을 떠나서, 다른 팀들도 입상한 팀들은 그걸 소중히 하고, 입상하지 못한 팀들도 못 받았다고 슬퍼하거나 힘들어하는 게 아니라 더 나은 내일을 기약하는 모습들이 정말 놀라웠습니다. 모두가 롱커톤을 염두에 둔 것 같아 보였습니다.
파드 헤더진들이 이야기하기를
파드 숏커톤은 실패하라고 하는 거에요
라고 합니다. 그 짧은 시간 동안 모든 걸 잘 해낼 순 없을 거라며, 지금까지 배운 걸 최대한 활용하고, 그 때 얻은 경험을 가지고 해커톤에 임하게 할 수 있는 예방주사 같은 게 될 거라고요. 그러니, 입상 못했다고 주저앉지 말고, 롱커톤을 위해 다시 준비하고 준비해야겠죠.
우리 팀원들, 세진, 민, 신원, 동원, 예인, 서윤아. 팀으로 만나서 정말 반가웠고, 나이 차가 엄청났을 텐데도 잘 끼워줘서 정말 고마웠고 팀으로 같이 숏커톤까지 한다고 고생 많았다. 웃으면서 마무리할 수 있어서 정말 좋았어. 이번 숏커톤에서 각자 얻은 것들 잘 끌어안고 롱커톤에서 각자의 위치에서 빛을 내길 바랄게 :)
...
짧고 거친 파도가 지나갔지만, 커다란 해일이 멀리서 오고 있으니.
댓글
로그인 후 댓글을 남길 수 있습니다.
ㅋㅋㅋㅋㅋㅋ 글 진짜 잘쓰시는 형님;;
500에러 한 번 더 확인 부탁드릴게요
백끼얏호우 (비명)
형 진짜 숏커톤 수고 많았어요!!! 롱커톤 때는 더 좋은 모습으로 좋은 프로덕트 만들어봐요!!!!
롱커톤은 성공으로 이끄는...!!