생각의 속도

반짝이는 영감이 날아가버리기 전에

by DCode

시작하며


꼰대스러운 이야기지만, 현업에서 마주하는 선후배 개발자들과의 이야기들, 또 알게모르게 멘토링을 해오며 느낀 궁극의 결론은 역시 정도(正道)를 걷는 것이 왕도(王道)라는 사실이다. 나는 '늦더라도 바른 길을 택하라', '돌아 가더라도 바른 길을 택하라' 같은 말을 아주 싫어하는데, 끝까지 가는 길은 애초에 바른 길로 가는 수 밖에 없다. 적당히 하다 말 거면 적당히 가도 좋을 것이지만, 조급하게 좀더 빨라보이는 길을 걷다보면 어느순간 되돌아 짚어야 할 것들이 태산같이 쌓여있게 마련이다.


일반적인 자질에 관한 것 말고도 한가지 유심히 생각을 해 보아야 할 부분이 있다. 이론도 탄탄하고 경험도 많다면 그 후에 가져야 할 소양은 무엇일까. 창의적인 발상과 실행력은 자질의 영역일까. 새로이 등장하는 트렌디한 것들은 어떻게 따라잡아야 할까. 답은 정해져 있지 않다. 그러나 그것들을 해결할 한 가지의 방법론적인 것이 존재하는데, 그것은 바로 시간을 확보하는 것이다. 시간을 확보하면 여유롭게 궁리할 아이디어들도 정리할 수 있고 자기계발에 투자해 스스로의 가치를 제고해볼수도 있을 것이다. 어쩌면 해야만 하는 일들에 매몰되어 하고 싶었던 것을 못 했던 아쉬움을 만회하며 스스로에게 동기부여를 해 줄 수도 있을 것이다. 답은 시간이다.



할 수 있는 실천사항들


그렇다면 누구에게나 공평하게 주어지는 시간을 어떻게 확보할 것인가? 더 많은 시간을 확보하기 위해 잠을 줄이는 것이 능사는 아니다. 나 역시 잠은행에 과도한 채무를 지고 있고, 그 이자와 잃은 건강의 댓가에 허덕이며 40대를 맞아 파멸해가고 있을 뿐이다. 뭐, 이 부분은 개인의 조절여하에 따라 달라진다고 해보자. 다만 다른 부분의 접근은 필요하다. 바로 작업의 효율성을 높이는 것이다. 흔히 개발직종에서 말하는 작업의 효율성은 설계의 오류를 피하고 디버깅에 안전한 코드를 작성하기 위해 섬세한 고민을 하는 것으로부터 얻는다고 믿어지고 있다. 물론 이것은 정답에 가깝다. 이것만 충실하게 지켜도 사실 할 수 있는 만큼을 했다고 말할 수도 있을 것이다. 하지만 정론이란게 왜 정론이겠는가? 어렵다. 참으로. 여기에 몇 가지 필요하다고 생각되는 것들을 나열해 보고자 한다. 당연하겠지만 프로그래밍 언어 자체의 구사능력과 알고리즘, 컴퓨터 구조 같은 것들은 기본이다. 모르면 헤메고 헤메는건 다른걸로 커버가 되지 않는 시간손실을 가져온다



1. 대소문자 영타 및 기호 입력 속도는 매우 중요하다.

물론 자동완성 기능은 Visual Studio를 비롯한 거의 대부분의 IDE에서 도입되어 입증되어 온 매우 유용한 도구이다. 지원하지 않는 IDE에선 이를 가능케 해주는 플러그인 정도는 필수처럼 여겨진다. 그러나 이것들은 완전하지 않다. 당신이 프로그래머라면, 커리어를 이어가는 내내 키보드를 두드리고 앉아있을 것이다. 기본적인 영문 입력과 대중소 괄호들, 숫자 및 사칙연산 그리고 % 기호 같은 것들은 반사적으로 칠 수 있을 만큼 숙달되어야 한다. 목표는 영문 몇 타 도달이 아니다. 이건 의식하지 않고 바로 튀어나올 정도가 되어야 한다. 굳이 정하자면 입으로 pseudo-code를 라인별로 말하면서 그걸 칠 수 있는 수준이 되어야 한다는 이야기다.




2. 사용하게 될 IDE의 기능을 숙달하자.

멍청하게 vim 단축키 목록같은걸 뽑아놓고 달달달 외우라는 말은 하고 싶지 않다. 최소한 어지간한 IDE들은 다음의 기능들을 거의 반드시라고 해도 좋을 정도로 지원한다. 필요할 때 찾아 헤메지 않고 바로바로 실행할 수 있도록 단축키 내지는 실행 메뉴들을 정확하게 파악해놓고 있는 것이 기본이다.

- Complie 관련: 빌드, 새로빌드

- 디버깅 관련: 디버깅 실행, 중지, 한단계씩 실행, (가능하다면)호출함수 내부로 추적해가며 실행 등

- 편집 관련: 복사/붙여넣기, 찾기, 바꾸기, 편집취소/재실행, 소스/헤더 전환, 참조 목록 검색 등

- 기타 자주 쓰는 리팩토링 관련 기능들



3. 텍스트를 다루는 테크닉들에 관심을 가지자.

윈도우10에 들어와서, 어마어마하게 획기적인 기능이 추가되었다. 해당 OS를 사용하고 있다면, 지금 당장 Win+V 키를 눌러보라. 뭐를 활성화시켜야되고 하는 과정이 있는데 한 번만 하면 된다. 전부다는 아니더라도 Ctrl+C를 이용해 복사해두었던 것들이 목록으로 뜬다. 코드편집시 매우 유용한 기능이다. 이렇게 추가되는기능들에 관해 관심을 가지고 부지런히 익혀라. 피가 되고 살이 된다. 예를 들자면 Alt+좌클릭 드래그 같은 것 처럼. 뭔지 모르겠다고? 글쎄 이게 참 좋은데 뭐라 설명할 방법이 없네..



4. 괜찮다 싶은 꼼수를 보았다면 한번쯤 해보고 어떻게 쓸까 생각해두자.

unsigned short crc16[] =
{
#include "crc16.csv"
};

예를 들자면, 이거라면 당신의 소스에 256개의 16진수를 지루하게 박아 넣을 필요가 없다. 간단하지만 컴파일러의 전처리기 처리에 관한 이해가 필요한 부분이다. 물론 값의 편집(예시라면 필요없겠지만)은 Excel을 사용하면 매우 편해진다.

또한, 복붙만으로 어떻게 안 되는 것들이 있다. 이 때, 라인 단위의 편집이 키보드 입력의 반복만으로 가능하다면 Macro 기능을 꼭 사용해라. 수백-수천 라인을 타이핑해야 할 상황으로부터 벗어나게 해 준다. 장점은 단순한 편의성 제공 뿐만이 아니라 입력과정에서 발생할 수 있는 Human Error로부터 해방되며, 그로 인해 입력 내용을 검토해야 하는 스트레스와 실제적인 작업시간이 사라진다.




5. 방어적인 코딩에 신경을 쓰지 않아도 될 만큼 방어적으로 코딩하자.

이게 무슨 개 풀 뜯어먹는 소리냐고 할 수 있는데, 기본적인 다음의 몇 가지 패턴들은 약간의 트레이닝을 통해 진짜로 아무 생각없이 곧장 작업에 적용할 수 있다. 이외에도 많은 것들이 있으니 공부해두자. 다소 뜬금없는 이야기지만, 만약에 접할 기회가 있다면 SQA 툴을 사용해서 자신의 코드를 검수해보고 이 깐깐한 규칙에 맞추어 코딩하는 것을 숙달해놓는 것도 좋을 것이다.





6. 두 번 이상 반복할 작업이면, 스크립트를 짜두자.

이건 주로 리눅스쪽 개발환경에서의 이야기이다. 굳이 내가 아니더라도 사수나 선배로부터 주구장창 듣게 될 이야기이므로 더 이상의 자세한 설명은 생략한다.




마치며


자랑하듯이 몇 가지의 내용들을 써 두었지만 목적은 이것을 현란하게 구사하는 것이 아니니 더 큰 목적에 집중하자. 애초에 설정한 목표는 무엇이었던가? 바로 시간을 아끼는 것이다. 단위 시간에 당신이 해야 할 작업을 신속하게 해치우고 더 많은 것을 처리하거나, 반사적으로 입력이 이루어지고 있는 동안에 좀 더 중요한 것(주로 예외처리겠지만)을 생각하라는 것이다.


이 글의 제목이 무엇이겠는가? 역설적이게도, 작업을 하는 여러분의 손이 살펴보고 판단할 시간을 죽이고 있다는 말이다 뭐.. 사실 아무리 빨라봤자 이게 0이 될 수는 없지만 숙련되지 않은 사람일 수록 이 비용은 굉장히 크며, 하루 여덟 시간을 코딩을 하며 실제적으로 텍스트 입력에 주의를 기울이느라 소스코드와 전체 구조를 생각하지 못하는 시간이 늘어난다는 이야기가 된다. 생각의 속도를 손이 따라잡도록 트레이닝한다는 것이 쉽지는 않겠지만, 이건 대외적으로는 생산성에 관한 평가, 겉으로 보이는 실력에 관한 이미지같은 것에도 지대한 영향을 미친다. 이게 뭐가 중요하냐고? 당신이 높은 평가를 받게 되면, 보상은 뭐 장담할 수는 없지만 대체로 당신의 커리어에 좋은 영향을 줄 수 있는 중요한 일들을 하게 될 가능성이 높아진다는 것이다. 단언컨대, 조직 내 평가가 중요하지 않다고 말할 직장인은 없다.


물론 외부적인 동기부여도 중요하지만, 짧은 양의 일이라면 파라라락- 하고 타이핑이 이루어지며 완성되는 코드에 도취되어보는것도 나름의 재미다. 더 중요한 것은, 그런 여유가 곧 당신의 코드 품질에 반영이 된다는 점을 자각하기를 바라는 바이다. 왜 이런 이야기를 했냐고 묻는다면, 현업에서 좀 더 나은 동료들을 만나고 싶기 때문이라고 해 두자. 아니면 내가 배울 때 이런 것들을 조언해주는 사람이 없어서 아쉬웠다거나.


다 써놓고 보니 가독성이 떨어지는 글이라 후회가 막심하다. 이 시덥잖은 글이 누군가에겐 도움이 되길 바란다는 마음만 남겨둔다.


작가의 이전글내 청춘이 지나갔다