상세 컨텐츠

본문 제목

[밍글] 🐾 협업하는 개발의 첫걸음, 트리브에서 얻은 경험.

DEV

by 하는다람쥐 2024. 6. 30. 20:05

본문

트리브는 제가 iOS 개발을 시작함과 동시에 개발하게 된 앱 서비스입니다. 돌이켜 보면 이 프로젝트에서 얻은 경험이 현업 개발자로 일하게 된 것에 굉장히 많은 도움을 주었습니다. 개발자로서 적절한 기술 스텍을 쌓는 것도 당연히 필요하지만, 실제 프로젝트를 하며 부딪히게 되는 문제들을 해결하는 과정은 굉장히 중요하다고 생각하거든요. 아무것도 모르는 왕초보 개발자였던 제가 냅다 앱 개발 팀에 뛰어들게 되면서 겪은 우여곡절과 깨달음에 대해 조금 이야기 해보자 합니다.

 

😯 어떻게 이런 귀한 트리브에 누추한 분이

그 전에 어떻게 트리브에 참여하게 되었는가… 에 대해 잠깐 얘기할려고 합니다. 막학기를 앞두고 앞으로 뭐해먹고 살아야 할지 고민하던 대학생 시절, 프로그래밍 수업을 들었을 때 재밌게 공부했던 흥미와 접근성이 좋고 인터렉션이 다채로운 어플리케이션을 만들고 싶다는 생각, 그리고 마침 노트북이 맥북이었던 환경. 이 3가지가 저를 iOS 개발로 뛰어들게 만들었습니다.

인생이라는 건 정말 우연과 타이밍의 일치입니다.

그 당시 제 주변에는 iOS 개발을 하고 있는 사람도 없었고 도움을 받을 사람도 없었기 때문에 일단 기초적인 지식을 얻고자 인터넷 강의 사이트에 있는 iOS 기초 개발 강의를 열심히 듣기로 합니다. 그러나 어쩐지 동기가 부족한 느낌에 냉큼 졸업과제로 iOS 앱 개발을 진행하겠다고 선언하게 되는데요. 그 소문이 어디까지 갔는지 같은 과 언니에게 같이 앱 개발을 해보자는 제안이 왔고, 삼고초려 뺨 때리는 엄청난 설득 스킬(밥 사주기)로 얼레벌레 도전하게 됩니다. 그것이 바로, 3년동안 진행하게 된 사이드 프로젝트인 트리브의 시작이었습니다.

 

🤔 좋아 해보자고! 근데 뭐 부터 하지?

iOS 앱 개발 시작 n개월 차인 두명의 개발자가 만나서 앱 개발을 시작할려고 합니다. 당장 무엇부터 해야할까요? 멋쟁이 개발자라면 척척 해내겠지만 협업 경험이 없는 왕초보 개발자들은 일단 iOS 개발 툴인 Xcode를 맥북에 띄우고 화면을 노려봅니다.

대가리만 극지 말고 뭐라도 해

협업 할 수 있는 환경 만들기

당연하지만, 볼륨이 큰 서비스는 혼자 개발하는 것이 아니라 두 명 이상의 개발자가 협업하는 것이 일반적입니다. 그렇기 때문에 협업을 위한 다양한 툴이 존재하는데요. 조금이라도 개발을 시작한 사람이라면 알고 있을 Github가 대표적으로 협업을 하는데 사용하는 개발 툴입니다. Github에 대한 기본적인 개념과 사용방법에 대해서 알아두는 것이 개발자로써 협업을 하기위한 첫 걸음이라고 할 수 있습니다. Github에 대한 필요성과 튜토리얼에 대해서는 많은 사람들이 정리해 놓은게 있으니 그것들을 참고하여 공부해보도록 합시다. 개인적으로 아래의 주제들에 대해서 안다면 현업에서도 Github를 사용하는데 문제가 없었답니다.

  1. Github에서 사용하는 용어들의 개념
  2. 저장소(repository)의 개념 및 사용 방법
  3. 브랜치(brench)의 개념 및 활용

 

🥹 두근두근 이제 바로 개발 시작해도 되나요?

개발할 수 있는 환경과 협업을 위한 환경까지 구축했다면 바로 서비스 구현을 위한 개발을 시작할 수 있습니다. 이제 바로 개발에 뛰어들면 될까요!? 사실 그래도 문제는 없습니다. 실제로 처음 트리브를 개발할 때는 환경을 만든 뒤에 바로 개발을 진행했죠.

그리고 ...

그 작은 발걸음은 스노우볼이 되어 미래의 우리에게 거대한 스파게티 코드로 돌아왔습니다. 개발을 하면서 업보를 쌓아 미래의 나에게 부채를 넘기는 것은 흔한 일이지만, 그래도 아무 것도 없는 개발 처음에는 최대한 깔끔하게 개발을 진행하는게 좋겠죠. 그래서 만약 내가 과거로 돌아가 같은 상황이 된다면 본격적으로 개발을 진행하기 전에 몇가지 준비해 놓을 것 같습니다. 

 

전체적인 앱의 구조를 파악하기

비유하자면, 개발을 하면서 참고할 지도를 미리 만들어보는 것입니다. 앱 화면의 구성 요소와 서비스 구조를 구성하는 것은 기획과 디자인의 영역이지만 그걸 실제로 구현하는 입장에서 개발자 또한 앱의 구조를 파악하고 있어야 효율적인 정보 구조를 짤 수 있습니다. 앱 내부의 정보들을 어떻게 구성하고 서비스 별로 구성할 지 기획해야하니까요.

앱에서 사용되는 정보와 기능들을 정리해보는 것도 좋습니다.

이 과정 없이 개발을 진행하게 되면 특히나 협업하는 개발에선, 중복되는 코드가 굉장히 많아 질 수 있습니다. 실제로 트리브에서는 유사한 정보를 가진 3가지 객체를 다른 화면에서 사용하고 있었죠(...) 처음 앱 개발을 하면 아무래도 화면 하나 완성 하는 것에 많은 시간과 노력이 들기 때문에 시야가 좁아질 수 있습니다. 의식적으로라도 전체적인 구조를 떠올리고 개발하는 것이 볼륨있는 서비스를 개발할 때 부채를 줄일 수 있습니다.

 

요구사항을 개발 관점으로 정리하기

개발을 하게되면, 어떤 것이든(기획안이든 프로토타입이든) 요구사항이 있을 것 입니다. 대부분 훌륭한 기획자와 디자이너들은 요구사항을 봤을 때 이해할 수 있도록 제공해주실 테고 그걸 바탕으로 개발을 하면 될 것입니다. 하지만 그걸 컴퓨터에게 알아 듣도록 시키는 건 또 다른 이야기죠.

개발자한텐 단순한 '점'이 아니니까요.

 

개발을 하기 위해선 구현하는 입장으로 요구사항을 파악해야합니다. 지금 현재 내가 구현한 상태를 바탕으로 어떤 것들을 더 고려해야하는 지를 생각하는거죠. 이런식으로 정리하다보면 요구사항에 누락된 부분을 발견할 수도 있고 어떻게 개발하는 것이 효율적인 지도 자연스럽게 생각하게 됩니다.

 

앞에서 말한 것들을 협업하는 개발자와 공유하기

큰 개발에는 함께할 개발자가 필요합니다. (당연함)

지금 저희는 함께 일하고 있습니다. 개발은 A를 건드렸더니 Z가 바뀌는 마법이 일어나기 때문에 앞에서 말한 것들을 포함하여 수시로 함께 일하는 동료와 서비스에 대한 생각을 공유하는 것이 중요합니다. 그렇게 서로 이야기 하다보면 얼마나 같은 걸 보고 다른 생각을 하고 있었는 지도 알게 되고 개발을 하다가 좁아진 시야를 넓혀주기도 하죠. 아무튼 개발도 사람과 하는 직업이니까요! 컴퓨터와 나 둘만의 로맨틱한 데이트 시간이 아니었답니다. 그러니까 협업을 할 때는 꼭 혼자가 아님을 기억하고 사소한 것들도 자주 이야기할 수 있도록 합시다.

 

😜 이제 진짜 개발 해 봅시다.

앞서 말한 것들만 잘해도 왕초보 개발자는 탈락입니다. 현업에서도 이런 것들이 사실 안지켜지는 경우가 있거든요. 개발 실력 자체와는 별개로 생각을 어떻게 하냐의 차이라고 생각하기 때문에 인지하고 있는 것만으로도 하지 않는 것과는 분명하게 차이가 있습니다. 자 이제 열심히 스택오버플로우와 유투브를 돌아다니면서 (요즘은 ChatGPT도 함께 한다구요) 열불나게 공부해 봅시다 !! 

 

시간은 흐르고

... 그렇게 3년이 흘러 현업 개발자가 되다. 😅

그렇게 되었습니다. 갑자기 무언가 많이 삭제된 것 같지만요. 정말입니다. 열심히 공부하고, 개발하고, 정신을 차려보니 시간이 흘러 있었습니다. 3년 간의 프로젝트를 끝내며 뒤돌아 보았을 때, 어떤 것들이 개발자로서 성장하는데 도움이 되었는 지 생각해봤습니다.

계속 공부할 수 있는 환경에 노출 시키기

사람의 의지는 생각보다 약하죠. (저는 그래요). 프로젝트를 진행하면서 가장 좋았던 점은 저 혼자만 하는 일이 아니었다는 것 입니다. 계속해서 다른 개발자와 새로운 기능에 대해서 고민하고 어떻게 개발해볼 것인지 공유하는 것은 열심히 하고 싶다는 책임감과 의지를 장기간 동안 유지할 수 있도록 도와줬습니다. 혼자서 공부했다면 이렇게 빠른 기간에 많이 성장하지 못했을 것 같다는 생각도 드네요. 물론 공부를 통해 배워가는 과정은 스스로 해야하는 시간이지만, 그 시간을 버티고 즐기면서 할 수 있었던 건 함께 공부한 사람들의 영향이 컸습니다.

이런 친구가 꼭 필요합니다.

개발자 외에도 다양한 직군과 일 해보기

개발 실력과는 별개로 다양한 직군을 희망하는 팀원들과 공동 프로젝트를 진행하는 경험은 확실히 중요합니다. 실제로 실무에서는 개발자 끼리만 업무를 하는 것도 아니고 정말 다양한 사람들과 함께 작업하기 때문이죠. 개발자가 아닌 사람들은 어떤 부분을 간과할 수 있는지, 그리고 어떤 부분을 통찰력 있게 볼 수 있는 지에 대해 경험 한 것이 실제 실무에서 커뮤니케이션을 문제 없이 진행하는 데 많은 도움을 주었습니다.

그래도 일은 같이 해야죠

무엇을 했는 지 보다도 어떻게 했는 지를 생각하기

다시 돌아봤을 때, 트리브에서 짠 코드들은 형편 없습니다. 당연하죠. 저는 그때 막 개발을 시작한 거였으니까요. 다만 그 과정에서 내가 어떤 방식으로 공부를 하는 것이 효율적인지, 그리고 어떻게 문제 상황에서 해결을 할 수 있을 지에 대한 경험들을 많이 쌓았습니다. 그 경험을 기록하고 거기서 어떤걸 알게 되었는지 기록했던 것들이 저 스스로를 증명해야할 때 (예로 면접이 있겠죠^^) 좋은 인상을 줄 수 있었습니다. 물론 공부한 것에 대한 결과가 중요하게 느껴질 수도 있겠습니다. 하지만 개발을 한 지 얼마 안된 제가 얻을 수 있었던 의미있는 것들은 결과보단 과정에서 느끼는 자신만의 경험이었습니다. 

 

😇 마치며.. 

인생은 운7기3이라는 말이 있죠. 저는 그 운이 좋은 사람들을 만나 할 수 있는 경험이라고 생각합니다. 저에게 트리브라는 프로젝트는 그런 복덩이 였던 것 같네요. 회고를 작성하면서, 허겁지겁 일 하면서 잊고 있던 성장에 대한 중요한 마음가짐들을 다시 정리하는 시간을 가진 것 같습니다. 길고 길었던 트리브를 이제 놓아드리겠습니다. 바이바이 트리브!

🧷 함께 읽어보면 좋을지도

앞에서 말했던 멋쟁이 트리브 친구들이 함께 작성한 회고인 만큼, 다른 글들도 읽어보면 다른 시각으로 어떻게 프로젝트를 바라보고 있는지 확인할 수 있습니다. 저는 그 중에서도 제 글에서 협업을 강조했던 만큼 실제 프로젝트에서는 어떤 툴로 어떻게 협업했는지를 설명해주는 글을 소개하려고 합니다. 

위 글에서는 슬랙으로 전체적인 프로젝트를 어떻게 관리했는 지 간단하게 알려드리고 있습니다. 실제 프로젝트를 진행할 때 어떤 식으로 관리해야할지 모르겠다면, 한번 참고해 보는 것도 좋을 것 같습니다. 

관련글 더보기