프로젝트일기: Project1 Day 1-2
드디어, 첫 프로젝트
드디어 이번 교육과정의 첫번째이자 내 인생의 첫 코딩 프로젝트가 시작됐다. 물론 첫 프로젝트인만큼 엄청 거창한 내용은 아니고 지금까지 배웠던 것을 복습하고 이를 응용하는데에 의의를 둔다. 그럼에도 지금까지 프로그래밍을 해본 경험이 없었기에 미지의 일을 한다는 불안감과 동시에 근거 없는 자신감이 함께 피어올랐다. 아마 든든한 조원분들이 함께 있어서 그러지 않을까.
사실, 이런 프로젝트를 완전히 생짜로 처음 접해본 것은 아니다. 나는 대학교를 다니던 작년 겨울에 듣던 수업에서 ‘교사를 위한 유튜브 과학 영상 자동추천 알고리즘 개발’ 프로젝트의 일원으로 기여했던 적이 있다. 다만, 이 때는 전문적으로 프로그래밍을 배운 것이 아니였어서 직접적인 코드 설계 및 코딩 작업은 전문가 인원들이 맡고, 나는 프로젝트의 방향성이나 관련된 아젠다를 제안하고, 워드임베딩 결과를 유의미하게 해석하는 역할을 했었다. 전문가 동료분들이 만들어주신 그 정성스러운 코드를 열심히 팔로우업 하는 와중에 매번 ‘나도 저렇게 원하는 것을 설계하고 코딩으로 잘 구현하는 사람이 되고 싶다’는 마음이 계속해서 들었다. 훗날 개발자가 되고 싶다는 꿈도 이 때즈음부터 더욱 짙어지고 구체화 되어갔다.
그리고 이제야 처음으로 한명의 초보 개발자로써 작은 프로젝트의 첫발을 띠게 된 것이다. 이 얼마나 소소하면서도 감격스런 순간인가! 과거의 비대면 프로젝트 경험을 최대한 살려 최소 1인분을 하고, 나아가 팀원들이 원활하게 프로젝트를 진행할 수 있도록 서포팅을 할 수 있으면 좋겠다고 생각한다. 물론 내 역량이 허락한다면 말이다.
- 자세한 테이블 구조나 기능에 대한 코멘트는 다음에 ‘프로젝트 정리’ 카테고리에서 자세하게 서술할 것이므로, 여기에선 단순히 흐름을 따라가며 내가 느낀 감상들이나 소소한 궁금증 등에 대해서만 이야기할 것이다.
1일차(210623). 일단 저지르고 생각하자.
프로젝트의 핵심은 1명이 최소한 하나의 VO/DAO/Service 패턴의 코드를 설계하고, 기능을 도입해야 된다는 것이었다. 우리 조는 6명이므로 6개의 패턴을 만들어야 했다. 그런데 각 기능에 대한 코딩에 앞서 가장 중요한 문제가 있었다. 구체적인 기능 구현에 앞서 데이터를 담을 DB 체계를 구축해야 한다는 점이었다. DB 체계가 먼저 잡혀야 코딩에 사용되는 sql문이나 코드들이 제대로 호환될 수 있을 것이라고 생각했기 때문이다.
마침 최근에 컴활 자격증을 따며 데이터베이스 개념에 대해 익숙해졌다고 착각(?)한 나였다. 그래서 무턱대고 내가 DB체계를 구축하겠다고 나서고야 말았다. 대신 VO/DAO/Service 패턴 코딩은 익숙하게 해왔던 회원관리 table과 관련된 기능만 담당했기 때문에 적당한 역할분배라고 생각했다.(이때까지는 그렇게 생각했다. 하지만…)
그렇게 테이블을 구성하고 관계를 만들고 있는데, 자칫 잘못 만들면 나중에 코딩을 할 때 다른 사람들이 고생할까봐 엄청나게 걱정이 되었고 최대한 꼼꼼하고 조심스럽게 DB를 구축해나갔다. MySQL Workbench의 기능 사용이 익숙치 않아 낑낑대면서도 결국은 기본적인 테이블의 컬럼 배치 및 타입 설정만 우선적으로 마치며 목표했던 작업량을 채울 수 있었다.
한편으로는 내가 맡은 회원관리 코딩 부분도 다른 인원들이 원활하게 코딩을 하기 위하여 먼저 완성을 시킬 필요가 있었다. 기존에 다뤘던 내용이라 몇가지 다른 부분만 수정하고 테스트를 거쳐 무사히 코딩을 마칠 수 있었다. 팀원들보다 더 먼저 DB구축과 코딩을 마무리해야 한다는 압박감이 살짝 있었지만 이 정도 압박이 있었기에 빠르게 과업을 마무리 할 수 있었다. 누군가가 보면 별거 아닐 수 있겠지만 개인적으로는 굉장히 뿌듯하고 의미 있는 프로젝트의 첫걸음이라고 느껴졌다.
2일차(210624). 1인분은 완료? 서포팅 담당
2일차는 오전중에 테이블의 제약조건들을 정리하고 관계를 정립하여 EER diagram을 만드는 것이 목표였다. 참조키라는 개념이 이전에는 정말 와닿지 않았는데, 컴활 공부를 한 지금은 꽤나 익숙해진것을 느꼈다. 큰 틀을 잡고 세부적인 컬럼의 이름이나 타입, 관계는 팀원들과의 의견교환을 통해 정리했다. 나중에 내가 db관리자가 되지 않는다면 다시는 하지 못할 과업이 될지도 모르기에 그렇기에 좀더 심혈을 기울여서 작업했다. 그 덕에 오전 중에 db구성을 마치고 다른 팀원들이 본격적인 코딩작업을 시작할 수 있도록 준비를 완료했다.
이번 프로젝트에서 내가 명시적으로 맡은 역할은 db구축과 로그인 관련 시스템 코딩, 그리고 최종 발표이다. 따라서 지금 db구축을 마친 시점에서 다른 분들이 코딩을 하는 동안은 붕뜨는 느낌을 받을 수 밖에 없었다. 그래서 무언가 팀에 기여할 수 있는 일이 없을까 하고 할일을 만들어내기 시작했다.
내 경험상 온라인 비대면 프로젝트는 상당히 난감한 부분이 많았었다. 현재 시점에서 진행되는 작업상황을 확인하기가 어렵고, 오프라인에 비해 즉각적인 소통을 하기가 어렵기 때문이다. 내가 하고 있는 일이 무엇인지 남들이 몰라 비효율적으로 시간을 쓴 적도 많았고, 누군가 하고 있을줄 알았던 일이 완료되지 않아 당황했던 적도 있었다. 그렇기에 적어도 현재 본인이 하고 있는 작업의 진행상황과 어려움에 봉착했는지 여부 등 서로의 상황을 갱신하고 확인할 수 있도록 ‘현황판’ 개념의 스프레드시트를 제작해서 공유하기로 했다. 어떻게 보면 귀찮은 일일지도 모르지만 이런 시스템이 있어야 전체적인 프로젝트가 원활하게 진행될 수 있을 것 같았다. 다행히(?) 시간이 남은 내가 빠르게 이것을 만들었고, 그 결과 한눈에 프로젝트 진행상황을 모든 인원이 파악할 수 있어서 상당히 도움이 되었다.이외에도 스프레드시트에 db에 구축된 테이블들의 관계, 제약조건, 타입 등을 똑같이 정리하여 코딩에 도움이 되도록 조치를 취했다.
이것은 작은 일이지만, 무언가 남이 시키지 않고 스스로 일을 만들어서 수행한 경험이 굉장히 오랜만이라 매우 의미있었다. 지난 몇년간 정해진 커리큘럼과 매일매일 나오는 인강, 과제 등을 수동적으로 따라가기만 했던지라 특별히 스스로 새로운 일을 구상하고 진행할 에너지가 나에겐 없었는지도 모른다. 나에게는 꽤 귀중한 경험이었다. 내가 한 작업에 대해 긍정적인 피드백을 받아본 것도 오랜만이라 더 기분이 좋았다. (지금까지는 긍정적이든 부정적이든 피드백을 받을 수 조차 없었기 때문이다.) 이래서 내가 어떤 일을 하든 뒤에서 받쳐주는 서포팅 역할을 자처해왔던 것 같다. 이루 말할 수 없는 뿌듯함이 동반되기 때문이다.
어쨌든 2일차도 종료. 몇몇 인원들이 자신의 코딩을 잘 마무리했고, 나머지 기능들도 내일이면 자연스럽게 구현될 것이라고 예상이 되었다. 그때까지는 말이다. 하지만 다음날 우리는 예상치 못한 복병들과 마주치고, 어려움에 봉착하게 되고 말았다.
Leave a comment