개발툴에 대한 선배의 조언

'뇌섹 개발자'로 만들어주는 툴의 세계③

컴퓨팅입력 :2015/07/23 13:21    수정: 2015/07/23 13:35

김우용, 임민철, 임유경 기자

소프트웨어 개발자에게 개발툴은 생산을 위한 수단이다. 어떤 툴을 어떻게 사용하든 궁극적인 목표는 최고의 성과를 내는 것이다.개인의 취향을 담기도 하지만, 그 취향조차 개발자의 생산성을 높이는 것과 관련된다. 폰트, 테마, 하이라이트, 들여쓰기 등등 세세한 부분에 신경쓰는 건 오랜 시간 모니터를 바라보면서도 최대한 집중력을 유지하려는 노력의 한가지다.선배 개발자들은 개발툴과 프로그래밍에 대해 어떤 생각을 갖고 있을까. 후배를 위한 선배 개발자들의 작은 조언들을 모아봤다.

1. 키보드를 최대한 활용하라

코딩할 때 키보드를 최대한 활용하는 게 생산성을 높이는 방법이라는 데 많은 개발자가 동의한다.

VI툴의 인기도 마우스를 쓰지 않고 키보드만 사용할 수 있기 때문이다. VI툴의 단축키 활용에 익숙해지기만 하면, 작업 속도가 비약적으로 빨라질 수 있다.

타이핑을 하다가 마우스로 손을 가져가면 집중력이 끊어진다. 다시 집중하기까지 사람에 따라 걸리는 시간이 다르므로, 마우스 사용을 손실로 여기는 게 당연하다. 마우스를 쓰면 죄악이란 극단적 표현까지 나오는 이유다.

고수일수록 생산성을 높이기 위한 나름의 작전을 갖고 있다. 손의 움직임까지 낭비를 줄이려 한다.

키보드와 단축키를 최대한 활용하려는 모습은 최고의 성과를 가장 빠른 시간 안에 만들어내려는 개발자의 노력 중 하나다. 툴을 화려하게 쓰려는 노력은 단순한 취향이나 집착이 아니라 일을 잘하고 싶어하는 욕망인 것이다.

2. 마우스 사용을 두려워 마라

그렇다고 개발자가 마우스를 완전히 배척하는 건 아니다. 개발 과정에서 마우스를 쓸 일은 매우 많다. 그래픽 요소를 다뤄야 하는 개발의 경우 마우스를 쓸 수밖에 없다.

SW 개발이란 게 단순히 코드를 쳐넣는 것만 의미하지 않는다. SW 개발은 설계부터 테스트, 배포, 관리에 이르는 전 단계를 포함한다. 때문에 마우스 사용을 무조건 기피하는 건 바람직하지 않다.

특히 기업이나 조직에서 코드를 바라보는 시각과 연결될 때 가장 위험하다.

당연히 SW 개발의 결과물은 코드다. 대부분의 회사가 개발자의 생산성을 평가할 때 코드의 양으로 판단한다.

그러나, 코드를 실제로 쓰기까지 수많은 행동이 있다. 프로젝트의 얼개를 그려보고, 어떤 식으로 로직을 짤 지 생각하는 설계와 디자인의 시간이다. 코드를 다 짠 뒤 제대로 작동하는 지 테스트하고, 잘못된 부분을 수정하는 디버깅 시간도 있다. 버그를 찾아내는 시간도 만만치 않다. 컴퓨터 앞에서 키보드를 빠르게 두들기지 않아도 개발자는 치열하게 일하고 있는 것이다.

왕수용 민트기술 대표는 “주어진 문제를 푸는 해법이 이미 나와 있고, 빨리 결과물을 내놔야 하는 입장이라면 툴의 생산성을 고민하는 게 맞다”며 “반면, 해법을 찾아가는 입장이라면, 코드만 줄줄이 타이핑하는 시간은 그리 길지 않다”고 말했다.

3. 남의 툴에서 배워라

다른 사람의 툴과 활용 모습을 보면, 얻는 게 제법 많다.

이민석 국민대학교 교수는 “초급 개발자에겐 코딩 스타일이 넘어야 할 산 중 하나”라며 “예쁜 코드와 안 예쁜 코드의 경계가 있는데, 선수들은 에디터 속에서 코딩 스타일을 지켜가며 짠다”고 말했다.

그는 “로직은 맞아도, 프로그램 자체가 걸레처럼 만들어져서 문제가 될 수 있다”며 “선수는 생산성을 높이기 위해 제대로 정립된 방법을 갖고 있는데, 툴을 쓰는 모습을 통해 그들의 철학을 느낄 수 있다”고 덧붙였다.

왕수용 민트기술 대표는 “코딩도장에서 다른 사람과 코딩을 하다보면, 상대방의 PC를 사용할 일이 있다”며 “타인의 개발환경 설정이 낯선데, 그 환경설정을 통해서도 배우는 게 많다”고 말했다.

4. 툴을 두려워 하지 마라

개발자 중에 오랜 시간 써온 툴만 고집하는 경우도 더러 있다. 편하고, 익숙하기 떄문이다.

개발툴은 개발자의 창조를 위한 수단이므로, 툴을 익숙하게 쓰는 게 중요하다. 하지만, 기술 발전에 따라 전보다 더 편리한 수단이 계속 나온다. IDE의 경우 개발언어의 업데이트에 따라 발전하며, SW 개발 요소요소의 난맥상을 풀어주는 툴이 세계 곳곳에서 만들어지고 있다.

허광남 OKKY 공동대표는 “장인은 도구를 탓하지 않지만, 좋은 도구는 장인의 능력을 배가시켜준다는 말이 있다”며 “좋은 도구는 개발에 집중할 수 있게 해주며, 개발자의 능력을 높여준다”고 말했다.

그는 “자바를 교육할 때 메모장에 교육시키는 곳이 있는데, 그는 스마트폰을 쓰는데 전화번호를 외우게 하는 것과 비슷하다”며 “기본을 아는 것도 중요하지만, 여유를 갖고 원하는 비즈니스와 서비스의 목표에 대해 생각하고, 성과를 내기에 가장 빠른 언어와 도구를 알면 알수록 좋다”고 덧붙였다.

그는 'ctrl+shift+f' 같은 정렬 단축키를 활용하면 좋다고 조언했다. IDE가 언어별 코드 컨벤션대로 정재해준다. 최근의 IDE는 코드를 재구성하는 리팩토링 기능을 제공해 파일, 클래스 참조 영역, 라인 등에 걸쳐 변수명이나 함수명 등을 재구성하기 쉽게 도와준다.

5. 툴이 모든 건 아니다

툴을 잘 쓰면 좋다는 말은 기본기를 잘 갖춘 경우에 성립하는 말이다. 자칫 툴의 편리함만 좇다 실력을 쌓지 못하는 우를 범할 수 있다.

유명환 엑세스주식회사 연구소장은 “스스로 문제해결 방법을 생각하는데 잘 훈련되고 경험많은 사람, 기반을 이해하는 사람은 새로운 것을 기존 지식에 맞춰 금방 습득할 수 있다”며 “배경지식과 경험없이 유행만 좇아 배우는 개발자는 기반을 이해할 여유 없이 외워서 활용하게 된다”고 설명했다.

그는 “이렇게 되면 새로운 게 나왔을 때 그 정체를 명확히 받아들이기까지 더 오래 걸리게 된다”며 “결국 경험많은 아키텍트급 개발자와 코더급 개발자가 양극화될 수 있다”며 기본기를 강조했다.

6. 무턱대고 타이핑하지 마라. 생각하라

앞서 SW 개발은 여러 단계에 걸쳐 일어난다. 각 단계는 한번으로 끝나지 않는다. SW에 완성은 없고, 계속해서 가꿔가며 생명을 불어넣어야 한다. 개발 과정이 순환구조를 갖고 있는 것이다.

SW 개발은 창조하는 작업이다. 코드를 입력하는 건 창조를 위한 노동에 가깝다. 손으로 타이핑해 모니터에 활자화하기까지 설계하는 시간을 무시할 수 없다.

이민석 교수는 “프로그램을 짤 때 고민하는 시간과 실제 모니터 앞에 앉아 프로그램을 짜는 시간의 비율이 매우 중요하다”며 “설계는 창의적인 일이므로, 알고리즘을 고민하고 전체적인 그림을 그려가면서 단계적으로 시간을 어떻게 배분할 지 알아야 한다”고 설명했다.

그는 “처음 코딩을 배울 때 과제를 받으면 무턱대고 바로 코드를 짜려 한다”며 “설계에 쓰는 툴을 쓰기도 하고, 종이에 그려보기도 하면서, 짜야할 프로그램의 구조와 얼개를 쭉 만든 다음에 코드로 채워나가는 고민의 시간이 중요하다”고 덧붙였다.

GNU 커뮤니티 한국 모더레이터 윤종민씨는 “코딩을 하기전에 그림을 좀 그려놓고 하는 스타일이다”라며 “내 저장소를 천천히 들여다보면서 예전에 만든 코드를 다시 살펴보기도 하고, 어떤 언어가 제일 좋을 지 생각하고, 다른 사람이 만든 메소드는 없는지 찾아보기도 한다”고 말했다.

김정 NHN넥스트 교수는 “요즘은 개발을 잘 한다는 것이 코드를 금방 작성해내는 것이라 하기 어렵다”며 “개발의 사후 작업을 어떻게 할 수 있느냐가 중요한데, 코딩, 커밋, 빌드, 테스트, 디버깅, 배포, 리포트 대응 등 일련의 수명주기를 유려하게 진행하는 지식을 갖춰야 한다”고 밝혔다.

유명환 소장은 “학생들을 만나면, 노트북을 접고 노트와 연필부터 잡으라고 한다”며 “수준 낮은 프로그래머일수록 일단 치기부터하는데, 초반에 좀 빠를지라도 프로그램의 완성은 늦어진다”고 조언했다.

그는 “블록다이어그램을 만들면서 블록 간 메시지 포맷을 정하고, 플로우차트를 그려가야 다음 단계가 빨라진다”며 “또, 소스를 짤 때 주석을 많이 넣는게 좋다고 보는데, 어떤 루틴이 안될 때 주석이 이해에 도움이 된다”고 덧붙였다.

4편에 계속...


[연재 순서]

① 뇌섹 개발자로 만들어주는 툴의 세계

② 개발자, 코드 빈 칸으로 왜 싸우지?

관련기사

③ 개발툴에 대한 선배의 조언

④ 개발자를 위한 소소한 개발툴 활용팁

김우용, 임민철, 임유경 기자yong2@zdnet.co.kr