소프트웨어 개발을 위한 툴은 많다
소프트웨어 개발은 사실 아무 컴퓨터에 메모장만 있어도 대략은 가능하다. 하지만 천공 카드에 구멍 뚫어가며 프로그래밍하던 시절도 아니고, 굳이 그럴 필요가 있겠는가? 오늘은 개발자들이 사용하는 툴에는 어떤 것들이 있고, 왜 사용하는지에 대해 대략적으로 알아보고자 한다. 오늘 소개할 것들은 구체적으로 어떤 것을 써라!라고 소개하기보다는, 어떤 목적을 위해 어떤 툴들이 쓰이는지를 주로 이야기하고자 한다.
애자일 개발을 위한 Issue Tracking Software
애자일(Agile)은 소프트웨어를 개발하는 방식 중의 하나인데, 개발을 크고 길게 안 하고, 작고 짧게 하겠다는 방식이라고 보면 된다. 예를 들어 게임을 하나 만든다고 하면 한 5년 정도 걸려서 짜잔~ 하고 나오는 것 같지만 사실 내부적으로 보면 굉장히 짧은 주기로 작은 미션들이 반복되는 형태가 되는 식이 많다. 주로 스트린트라, 보통 2주이다, 불리는 단위로 기간을 나누어서 무언가를 성취하는데, 예를 들어 이번 스프린트에는 캐릭터가 뛰어다니는 걸 만들 거야, 다음 스프린트에는 캐릭터가 기본 공격을 하는 걸 만들 거야, 이런 식이다. 뭐 회사마다 어떤 개발 방식을 취하는가는 다들 다르겠지만, 꽤나 사람 쥐어짜기 좋은 구조의 개발 방식이다.
그런데 이러한 식으로 개발을 하려면 가장 중요한게, 그래서 누가 무엇을 언제까지 할 건데? 를 추적하는 일이다. 그래서 보통 Jira라고 하는 툴을 많이 사용하는데, 아래 그림에서 보듯이 사람 이름이랑 무슨 일을 하는지, 지금 어떤 상태인지 등이 간단한 카드 형태로 나와있어서 누가 무슨 일을 하고 있는지 한눈에 보기가 편하다. 얼핏 보면 팀장 전용 팀원들 감시 도구 같은 느낌이라고 보일 수도 있겠지만, 그것보다는 내가 무슨 일을 언제까지 해야 하는지 확인하는데 아주 유용하게 쓰인다. 다양한 리포트 같은 것도 제공하기에 누가 일을 제대로 하는지 안 하는지 굉장히 티가 나게끔 해주는 고마운(?) 도구다.

Version Control, 모르면 많이 곤란하다
Version Control 혹은 Source Code Management는 개발에 있어 굉장히 중요한 과정이다. 예를 들어 내가 끝내주는 코드를 만들어두었다고 치자. 저장도 잘 해놨고, 기가 막히게 잘 돌아가는 것도 확인을 했다. 그런데 자고 일어나니 신이 내려준 듯한 영감이 떠올라서 코드를 살짝 만졌다. 그랬더니 갑자기 아무것도 안 된다!
이런 일은 누구에게나 일어날 수 있다. ctrl + z를 눌러서 되돌아갈 수 있을 수준의 변경이라면 다행이지만, 그게 아니라면 어떻게 할 것인가? 그리고 이 잘 돌아가던 코드를 다른 동료가 건드려서 뭔가가 잘못되었다고 하면 그건 또 어떻게 할 것인가? 처음부터 다시 코드를 짜야 하나? 이런 비극적인 상황을 막기 위해 꼭 필요한 것이 버전 컨트롤 툴이다.
이 툴의 가장 큰 특징은 repository라고 불리는 저장 공간을 사용한다는 점이며, 이 저장 공간의 특징은, 모든 히스토리를 저장한다는 것이다. 히스토리를 저장하기 때문에 예전으로 되돌리는 것도 쉽고, 누가 이 거지 같은 코드를 짜서 망쳐놨는지 추적도 쉽고, 또한 바뀌어서는 안 되는 코드가 반영되는 것을 막을 수도 있다.
가장 유명한 버전 컨트롤 프로그램으로 Git(깃 이라고 읽는다)이 있는데, 처음 개발을 시작한다면 이것에 대해 기본적인 공부는 하는 것을 추천한다. 사실 소규모의 회사에서는 이걸 사용하지 않는 경우도 종종 보기는 했는데, 그렇다면 가까운 시일 내에 큰일이 날 수가 있으므로 재빠른 탈주를 권장한다.

에디터보다는 IDE
IDE(Integrated development environment)는 직역하자면 통합 개발 환경? 정도겠다. 이게 뭐냐 하면, 코드를 짜는 것을 도와주는 소프트웨어라고 생각하면 되겠다. 사실 코딩 자체는 메모장만 있어도 이론적으로 가능은 하지만, 애플리케이션을 실제로 만들어서 실행시키려면 이것저것 다른 소프트웨어들이 많이 필요하고, 그걸 종합적으로 관리해 주는 것이 이 IDE이다. IDE의 가장 중요한 기능 중의 하나는, 코드에서 오류를 찾아주는 것이다. 예를 들어 컴퓨터가 도저히 못 알아먹을 단어를 쳐두면 알아서 빨간 줄이 쳐지면서 이건 좀 아니라는 강렬한 표시를 남겨주는 것도 일반적인 IDE의 역할이다. 덕분에 기본적인 실수는 많이 줄일 수 있다.
개발하고자 하는 어플리케이션의 종류 및 프로그래밍 언어에 따라 매우 다양한 IDE들이 존재하는데, 나는 개인적으로 무거운 것을 극혐 한다. 아직 무엇을 할지 정하지는 않았지만 무언가 시작해보고 싶다면, 개인적으로 비주얼 스튜디오 코드를 추천한다. 자바든 자바스크립트든 이것저것 다양하게 대응할 수 있고, 코드를 자동완성 해준다거나, 다양한 플러그인을 제공하면서도 가벼운 편이라 나 역시 개발할 때 자주 사용하는 편이다.
