INSPIRATION/IT 2020. 10. 25. 01:09

New Project

개발자는 언젠가 새로운 프로젝트를 시작한다.

이미 익숙해진 기존의 개발환경에서 시작할 때도 있고,

새로운 구성원/인프라를 만나 새 개발환경부터 고려해야할 때도 있다.

1. 경험

1998 ~ 2001년, 어릴적 독학으로 코딩을 할 때는 형상관리라는 것조차 생각도 못했었는데,

2015년, 다시는 안 할 것 같던 코딩을 직업으로 삼게 되며 변해온 개발생태계는 물론 협업환경에 대해 생각하게 되었다.

그런데 이놈의 협업환경이 가만히 있지를 않기도 한다.

나는 개발자로서 다음과 같은 협업환경의 변화를 거쳐왔다.

  1. 정규직 신입
    • Redmine + Git + Jenkins + Slack
  2. 정규직 만 1년 후
    • Trello + Git + Mattermost
  3. 정규직 만 2년 후
    • GitLab(Git + Gitlab-CI) + Mattermost
  4. 프리랜서
    • GitLab(Git + Gitlab-CI) + KakaoTalk
  5. 정규직 만 3년 후
    • Jira + Git + Confluence + Bamboo + Slack
  6. 개인개발자로서는
    • (GitHub or GitLab) + TravisCI ...

신입시절 팀내 모든 선임들이 머지않아 회사를 나갔고,

시간이 흘러 도구를 좋아하는 선임이 들어오고,

시간이 흘러 팀재량으로 쓰던 협업도구(GitLab)를 중단하고 사내통일(Jira)되고

하는 과정속에서 피로감도 상당했다.

2. 프로젝트 관리

코딩을 잘하는 것만큼이나 적절한 협업도구를 운영하여 Team의 소통 비용을 줄이는 것 또한 개발자의 리더쉽이고 능력이라고 생각한다.

개발은 코딩 뿐만아니라 이런 부가적인 일들도 매우 중요하다.

  • 이슈 및 일감관리 (예: Redmine, Trello, Jira ...)
  • 형상관리 (예: Git, SVN)
  • 문서작업 (예: Confluence, Wiki, ...)
  • 실시간대화 (예: Slack, Mattermost, ...)
  • CI (예: Jenkins, Bamboo, GitLab-CI, Travis, ...)

그 이유는 개발이 장난이 아니기 때문이다.

함께 이야기하고 기록을 남기며 만들어 내는 작업이 동반되어 장시간 쌓아올리고 보완해야한다.

인간의 기억은 하드디스크(HDD)와는 다르다.
오래될 수록 기억은 희미해지고 날조되기도 한다.

날조된 기억으로 사업을 떠받치는 개발을 하고 있다면..
언젠간 사업의 신뢰하락으로 이어질 것이다.

여러 개발자간의 긴호흡정성이 필요하다.

3. 통합 협업도구

인간은

도구를 사용하는 동물이다.

가상의 공간에서도 도구를 사용하는 동물이다.

그중에서도 협업을 위한 도구들이 있다.

그 도구들이 어떤 의도든 간에 Web에 무료로 오픈되어있다. 감사히 사용하자.

지극히 짧은 경험속에서 간편함과 전체적인 기능을 중심으로 일개 어떤 개발자의 주관적인 관점에서 적었다.

개인적으로는 GitLabSpace를 추천한다.

오픈소스를 개발하고 싶다면 GitHub를 추천한다.

3-1. Jira & Bitbucket

  • https://www.atlassian.com/software/jira
  • Release: (Jira:2002년) (Bitbucket:2008년)
  • ★★☆☆☆
  • 지라(JIRA)라는 이름은 고지라라는 일본식 이름에서 따왔다.
  • 꾸준히 개발되어 현재 가장 강력한 Tool로 인정 받고 있는 모양이다.
  • Jira, Bitbucket, Confluence, Bamboo 이렇게 연결되어 많이 사용하는 것 같다.
  • 연동하면 좋다지만, 뭔가 일체형 느낌이 안나서 개발자인 내 기준에선 별로
  • 정말 큰조직에서 분할되어 보기에는 좋을 것 같다.

3-2. Redmine

  • https://www.easyredmine.com/
  • Release: 2006년
  • ★☆☆☆☆
  • 조금 오래된 느낌이고 예전에 많이 사용되었으나 지금은 다른 Tool보다 기능면에서 경쟁에서 밀리는 것 같다.
  • 개발자로서는 다른 도구들에 비해 매력을 못느낀다.
  • 그래도 나름대로 단순하고 깔끔함이 있다.

3-3. GitHub

  • https://github.com/
  • Release: 2008년
  • ★★★☆☆
  • 가장 유명한 Tool이다. 엄청난 Open Source 저장소이자, 때때로 개발자들의 등용문이 되기도??
  • 개발자라면 계정 하나씩은 가지고 있어야 하지 않을까
  • 무료 Plugin 기능들을 연결하여 CI나 Coverage 등등등.. 연결 가능하다.
  • 2019년부터는 제한적이지만 Private 저장소도 무료로 지원

3-4. GitLab

  • https://gitlab.com/
  • Release: 2014년
  • ★★★★☆
  • GitHub보다 기능이 많고 UI도 깔끔하고, 공짜로 지원해주는 기능도 많고, 설치형제품도 부족한 것 없이 상당히 많은 것을 가능하다.
  • 자체적으로 Gitlab-CI라는 것이 있어서 Docker기반의 CI환경 연동이 가능하다.
  • 이슈관리, 칸반보드, Wiki, CI연동 등.. GitHub의 수많은 오픈소스들만 아니면.. 무조건 GitLab이다. 강추할 수 밖에!

3-5. Space

  • https://www.jetbrains.com/ko-kr/space/
  • BETA: 2020년
  • ★★★★★
  • 위에서 언급한 모든 도구를 통합했다.
  • Platform 이라는 큰 개념으로 접근한 야심찬 도구이다.
  • 다른 통합도구에서 찾아볼 수 없는 Chat기능을 지원하는 것부터 너무 큰 매력을 느낀다. 정말 이거 하나면 다 끝날 것 같다.
  • 게다가 Java 개발자들에게 인기있는 IDE인 IntelliJ와의 연동이 뭔가 설레게 한다. :D

4. 마치며

무늬만 IT회사고 협업시스템이 안 갖춰진 곳이라면,
마법과도 같은 통합 협업도구를 고려해보자.

프로그램 개발에 대한 인식이 너무 투박한 것 같다.
(생략)
회사시스템이 받쳐주지 않는다면, 개발자 Level에서 꼭 고려해야 한다고 본다.

새 Project가 시작되며 기억을 되새기며 글을 적는다.
좋은 짜임새의 글은 아닐지 모르겠지만.. 누군가 공감하고 누군가 생각할 수 있는 글이길 바란다.

...

실은 이번엔 지인과 비공식 프로젝트를 하는데 있어서

Jetbrains사의 Space를 사용해보려 한다.

현재 2020.10.25 Beta 버전을 무료로 서비스하고 있기에 참여해보고 싶어졌다.

지금까지 계속 변화해온 나의 협업환경은 항상 무언가 갈증이 있었다

이 갈증을 해소해 주길 기대한다.