[5/27 개발일지]개발이 전부가 아니다.

유라임 개발이 슬슬 끝나간다. 지난주에 오랜만에 JIRA에 planning하고 쭉 정리를 했다. 결국 이 SSR작업만 두세달을 하고 있고, 그런 와중에 리펙터링도 꽤나 했다. 이제 sharing이랑 로그인/회원가입 만 조금 손보면 될 듯 한데 결국 firebase의 힘을 좀 빌려야겠다는 생각이다. 원래 회원가입 관련해서는 지금까지 개발해둔 것도 있고 해서 왠만하면 내가 관리하려 했는데 사실 이게 좀 귀찮긴 하다. 그렇다고 지금까지 개발한 auth시스템을 모조리 옮기기도 그렇고.. 왠만해서는 솔루션의 힘을 빌리지 않으려 했는데, 적어도 이메일은 SendGrid, 채팅앱은 channel.io, 그리고 이제 auth랑 notification은 firebase를 도입할 예정이다. 거기다 빅데이터 처리는 gcp의 dataflow나 apache beam을 사용할 것이고 데이터 수집과 mixin은 IFTTT를, 데이터 처리 전체는 python+jupyter notebook을, 거기다 forum은 아마도 또 다른 솔루션을 사용하지 않을까 싶다.

어쨌든 개발을 하다보니 이런건 솔루션으로 빼도 괜찮지 않을까 라는 것들이 꽤 많이 나온다. 난 그게 중요한 포인트라고 본다. 어쩌면 솔루션을 구입, 적용하는 것이 최소한의 인력으로 개발하는 데에 있어서 중요한 시사점을 안겨주는 것 같다. 말인 즉, 어차피 혼자 개발하기에는 시간과 인력이 턱없이 부족하니 솔루션을 잘 활용하는 것이다. 사실 위에 나열한 기능은 여태 내가 전부 개발해왔었다. 유라임을 처음 오픈할 때만해도 모두 구현되어 있기는 했는데, 개발이 되면 뭐하나 유지보수가 안되는데. 물론 나도 시간만 많으면 리펙토링이나 개발과 함께 사업진행이 가능하지만, 사업은 개발이 전부가 아니라는 점을 이제서야 깨닿는다. 개발은 최소화, 그리고 이를 서비스화 하기 위해 유저를 모으고 그들이 원하는 기능을 위해서 애써야 한다는 것이다.

약 3개월 정도 유라임 리펙토링에 나섰었다. 남은 핵심기능인 공유기능을 제외하고는 거진 다 완성되었고, 파이어베이스 연동과 랜딩페이지 정도가 남았는데 어떻게 보면 이게 핵심이기도 하다. 9월이면 개강도 앞두고 있는데, 시간이 얼마 안남았다는 생각에 마음은 초조하고, 개발을 하다보면 꼬리에 꼬리를 무는 버그 같은 것들 때문에 정신차려보면 서너시간은 훌쩍 넘기고 있다. 그런데 또 하루종일 개발만 할 수도 없는게 현실이다. 학기 시작전에 공부할께 너무 많고, 운동도 해야하고 집안일도 해야하고. 그나마 코로나 때문에 재택근무&원격수강이 가능해서 작업이 좀더 수월하다고 해야할까.

결국 현실적으로 보면 개발에 매진할 수 있는 시간은 지금은 약 6시간 정도이다. 그래서 그 시간동안 “현실적인” 개발을 할 수 밖에 없다. 정말로 중요한 feature만 개발이 가능하다. 지금은 그래서, 공유랑 로그인, 랜딩페이지만 개발하면 바로 오픈하려고 한다. 이것만 해도 족히 한달은 걸릴 것으로 예상된다. 만약 진짜 밤새서 작업하면 1주일이면 가능할 것 같은데, 지금까지 일련의 경험으로 보면 그렇게 밤새는 것은 전혀 효율적이지 못하다. 사실 유라임이 전에가 그랬다. 핵심 피처를 만드는 데에 2개월 정도 밤낫으로 개발했는데 지금와서 보면 코드가 너무나도 엉망이고 사실 이게 돌아가는게 신기할 정도다. 시한폭탄 같다고 해야할까? 물론 핵심피처들을 만드는게 그렇게 중요한 것은 알겠지만, 그래도 최소한의 기능들은 “잘” 동작을 해야겠다고 생각이 들었다. 그래서 지금처럼 어느정도 시간적 여유가 있을 때 개발을 충분히, 잘 하는게 중요하다고 본다.

그래서 개발하려면 공부가 필연적으로 따른다. 프로젝트 개발론이야 학교에서 지겹게 배울것 같고, 사실 유라임이 정상 기능하려면 어느정도 AI와 ML에 대한 이해도 필수적이다. 그런데 진짜 저건 (특히 수학공부) 욕심을 부리면 안되겠지만 몇년을 잡고 꾸준히 공부해 나가야겠다는 생각은 들었다. 하루에 한시간이라도 말이다. 개발 공부도 해야하고.. 세상에 왜이리도 공부할께 많은가 (ㅠㅠ) 그런데 공부는 평생공부고, 사업은 사업, 취업도 취업이다.

결론은 진짜, 다른 욕심 안부리고 딱 3가지만 개발하고 오픈한다. 공유, 로그인w/firebase, 랜딩페이지. 다른 기능들은 이후에 continuous하게, 마일스톤을 짜서 계속해서 추가하자. 짧고 긴 개발이 될 수 있도록.