스타트업 1인 개발자의 생각
지난 글에서 얘기했듯이 나는 혼자 개발하고 싶지 않았다. 하지만 언제나 그랬듯 모든 일이 내가 원하는 대로 되지는 않으니까... 결국 혼자 2017년은 혼자 개발을 도맡아서 운영했다.
우리 서비스에서 운영하는 프로그램들이다.
안드로이드 어플리케이션 - Java
iOS 어플리케이션 - Swift
관리자용 웹페이지 - HTML, CSS, JavaScript
서버 - Node.js
이것들을 혼자 관리하면서 느낀 장단점을 쭉 나열해보았다.
최고의 장점이다. 난 반쪽짜리 안드로이드 개발자였지만 회사에는 훌륭한 안드로이드 개발자와 훌륭한 iOS 개발자와 훌륭한 서버 개발자와 그저 그런 웹 개발자가 필요했다. 하지만 회사는 다른 개발자를 쓸 여유가 없고 굳이 그럴 이유를 찾지 못했고 방법은 하나뿐. 나의 역량을 저렇게 키울 수밖에 없었다. 그렇게 나를 계속 몰아치다 보니 어느새 저것들을 할 줄 아는 개발자가 되었다. 물론 훌륭하지는 못하지만 서비스가 정상적으로 돌아갈 수 있게 만들어놨으니 이 정도의 성장이면 '실로 정말 엄청난'이라는 수식어를 붙여도 되지 않을까?
내가 하고 싶은 대로 하면 된다. 컨벤션을 벗어나지 않은 수준의 네이밍이나 디자인 패턴, 프레임워크, 코드 작성 규칙 등등 개발에 필요한 선택들은 모두 내가 통제할 수 있다. 물론 그에 따른 문제(잘못된 설계를 하여 겪을 끝없는 유지보수의 고통 등등)는 온전히 내가 책임져야 한다. 대신 그만큼 더욱 선택에 충분한 고민을 할 수 있다. 왜 이 디자인 패턴을 적용하려고 하는지, 어떤 기능을 직접 짤지 라이브러리를 사용할지 등 어떤 게 더 내게 편하고 유지보수에 용이한가를 충분히 고려하게 된다. 선택이 틀렸을 수는 있어도 선택을 위해 고민한 시간은 내 성장의 밑거름이 된다.
내 코드는 내가 리뷰한다 - 다른 사람의 코드를 리뷰하고 도움을 주는 일에 소모되는 시간을 아낄 수 있다.
커밋 목록엔 내 닉네임 밖에 없다. - 깃헙을 통한 협업에서 오는 어려움이 전혀 없다.
온갖 개발을 위한 문서가 필요 없다. - 물론 언젠가 들어올 개발자를 위해 준비는 해야 하지만 아직은 필요 없다.
아주 치명적인 단점이다. 사수에게서 배움을 얻거나 후배 직원의 참신한 인사이트 등을 얻을 기회가 전혀 없다. 다른 누군가의 다양한 코드를 보며 생각할 기회, 어떤 생각을 가지고 코드를 짰는지 얘기할 기회도 없다. 누군가 내 코드나 설계에 지적을 하지도 않고 동의하지도 않는다. 그저 내 가치 판단에 맡길 뿐이다. 다양한 방식을 접하지 못한다는 건 폭넓은 사고방식에 한계를 갖는다는 얘기다.
또한 여느 다른 회사들의 훌륭한 소프트웨어 설계 등등을 나는 전혀 겪어본 적이 없기에 내 방식이 맞는지 틀린 지, 보편적인지 너무 독특한지 알 수가 없다. 이것들을 접해볼 기회만 있다면 다른 회사에서 일해보고 싶다고 생각해본 적이 한두 번이 아니다.
장점이기도 하지만 단점이기도 하다. 1번과 비슷한 내용이지만 조금 다른 점은 개발에 관한 일적인 얘기가 아닌 일상적인 얘기의 부재다. 이쪽 계열의 최신 동향이나 개발 관련한 드립, 개발자라면 공감하며 웃을 수 있는 이야기들을 전혀 할 수 없다... ㅠ
다 내 잘못이다. 모든 책임이 내게 있다.
이건 너무나 자명한 사실이다. 이 모든 걸 다 개발하는 건 가능하지만 이것들을 모두 빠르게 개발하는 건 불가능하다. 더욱이 성능을 고려하여 충분한 고민을 하게 되면 더욱 느려진다. 이는 개발자를 한명만 두어 개발에 드는 비용을 줄이는 것에 대한 트레이드오프다. 또한 iOS 개발 중 서버에 문제가 생겨 접어두고 서버를 본다거나, 관리자 페이지에 문제가 생겨 복구한다거나 하는 등 갑자기 하던 업무에서 손을 떼고 다른 업무를 봐야할 경우가 많다. 이런 경우 기존 업무를 하면서 머리에 쌓여가던 것이 와르륵 무너지면서 갑자기 생긴 업무를 마치고 돌아왔을땐 내가 뭘 개발하고 있었는지 왜 이렇게 개발하고 있었는지 기억이 나지를 않게 된다.
특수한 상황에서 매칭 데이터를 직접 수정해야 하는 경우가 생긴다. 초반에는 이 모든 걸 내가 처리했다. 개발을 하기도 바쁜데 이런 잡무에 시달리다 보니 생산성을 최대로 이끌어내기가 어려웠다. 이 문제를 느끼고 현재는 거의 대부분을 자동화하여 나의 손에서 떠나보냈지만 여전히 내 손을 타는 일들이 있다. 이런 잡무를 피하기 위해선 반드시 자동화를 해놓을 필요가 있다.
난 스스로 횡포를 부리는 사람은 아니라 생각하지만(나 혼자만의 생각일까?) 회사 내에서 혼자 개발자라는 것으로 엄청난 입지를 갖게 된다는 것은 확실하다. "내가 아니면 어떻게 할 건데?"라는 생각을 안 할 수가 없다. 이런 생각이 속마음 어디 구석에 자리를 잡고 있다가 누군가 조금이라도 자존심을 건들거나 역량을 인정하지 않는 말을 한다면 스윽 밖으로 튀어나온다. 이는 바로 갑질로 이어진다. 내가 이뤄낸 성과에 대한 적절한 요구는 괜찮다. 하지만 도 넘은 갑질은 분위기를 망치고 난 어느새 폭군처럼 되어있을 것이다. 이런 갑질은 나를 위해서도 회사를 위해서도 무조건 지양해야 하는 부분이다
단점이 훨씬 많아 보이지만 장점으로 인한 이점이 엄청 크기에 난 충분히 만족하고 앞으로도 한 동안은 혼자 개발을 계속할 예정이다. 다음 글은 혼자였기에 고려할 수밖에 없던 여러 개발 관련 선택에 관해 얘기해보겠다.