코딩 잘하는 방법 또는 프로그래밍 잘하는 방법은 뭐가 있을까? 어떻게 해야 능력있는 개발자가 될 수 있을까? 프로그래밍 언어나 개발 프레임워크를 새로 익혀야 할 때 개발 잘하는 사람은 보통 자신만의 루틴이 있다. 단계별로 자신만의 과정을 거치는데 그 과정을 하나씩 살펴 보겠다.
1.책을 사서 봐라
가장 잘 팔리는 얇은 입문서를 골라서 가능한 빠르게 읽어라. 정독은 필요없다. 통독이 적당하다. 다시말해 꼼꼼히 읽지 말고 처음부터 끝까지 훑어보듯 읽어보라는 말이다. 꼼꼼히 읽어봐야 어차피 한번에 다 이해할 수 없다. 빠르게 훑어보며 전체적인 개념을 이해하는 것이 중요하다. 굵직한 목차 정도가 머리에 그려지면 성공이다.
유튜브나 개발 블로그가 넘쳐나는 요즘 세상에 무슨 책이냐 라고 하는 사람이 분명히 있을 것이다. 하지만 유튜브나 블로그와 같은 온라인 자료와 실제 종이에 인쇄가 되어 나오는 책은 사실 엄청나게 큰 차이가 있다.
책이 온라인 자료와 가장 크게 다른 점은 실제로 출판되어 실물로 나온다는 것이다. 한번 출판되어 판매가 시작되면 수정할 수 없다. 그렇기 때문에 목차부터 엄청나게 고민하고 연구해서 만든다. 내용은 틀린 부분이 없는지 몇 번의 검증을 거친다. 출판사는 투자된 금액을 회수하고 나아가 수익을 만들어야 하기에 전문가가 관여하여 내용 구성과 가독성에 많은 노력을 기울인다.
그리고 옛날 사람의 감성일지는 몰라도 책장을 넘기며 보는 느낌과 좋은 구절에 밑줄을 그어가며 깨알같은 메모를 남길 수 있는 책의 매력은 아무리 좋은 것들이 나와도 아직까지는 따라갈 수 없는 것 같다.
2.습작을 해봐라
어느 정도 개념 파악이 된 것 같으면 이제 바로 실습이다. ‘백문이 불여일타’라 했다. 직접 내 손으로 타이핑하여 코딩하는 것이 개발을 잘할 수 있는 최고의 방법이다.
예제를 따라 해보는 것도 방법이지만 잘 만들어진 적당한 수준의 공개된 코드를 베껴보는 것도 큰 도움이 된다. 똑같이 하라는게 아니라 조금씩 자신만의 스타일로 바꿔 보는 것이다. 이 때 문법적으로나 기술적으로 막히는 부분이 생길 것이다. 봤던 책을 다시 찾아봐도 되지만 이 때는 인터넷으로 검색해서 유튜브나 개발 블로그의 도움을 받는 것도 좋은 방법이다.
책은 전체적인 부분을 파악하는 용도에 좋고 부분적으로 막히는 것은 검색을 통해서 온라인 자료의 도움을 받는 것이 좋다. 검색도 훈련이 필요한 중요한 기술이다. 자꾸 검색하다 보면 키워드를 뽑는 요령도 생기고 신뢰할 수 있는 자신만의 레퍼런스도 많이 생길 것이다. 개발자라면 스택오버플로우와 같은 개발자 커뮤니티와 친해지는 것이 좋다.
이 과정에서 기본 문법이나 스킬이 익숙해질 것이다.
3.나만의 개인 프로젝트를 수행해라.
습작을 통해 어느 정도 익숙해 졌다면 이제는 개인 프로젝트를 한번 만들어봐라. 너무 거창한 거 말고 작지만 다양한 스킬을 경험해 볼 수 있는 주제로 시작하는 것이 좋다. 습작이 수동적인 과정이었다면 이 과정은 보다 능동적인 과정이다.
이미 이전 주제에서도 다뤘지만 끝까지 완성해 보는 것이 정말 중요하다. 이 때는 혼자 개발하는 것이 좋다. 아무래도 다른 사람들과 같이 개발하다 보면 조금이라도 나은 사람에 의해 끌려가게 된다. 이 과정은 스스로 생각하고 주도하여 끝까지 완성하는 것이 포인트다.
끝까지 완성해봐야 보이는 것들이 있다. 처음부터 끝까지 한 사이클을 몇 번 완성해 보면 점점 프로젝트 전체를 보는 눈이 생긴다. 모두 스스로 고민하고 진행했던 것이기 때문에 추후 진행하게 될 프로젝트의 많은 시행착오를 줄여줄 것이다.
이제 완성한 개인 프로젝트는 가능한 많이 공개해라. 소스까지 모두 공개해서 많은 사람의 의견을 들어라. 설마 공개하기 아깝다는 생각이 드는가? 분명히 당신의 코드는 허접할 것이다. 반대로 부끄러워 할 필요도 없다. 정말 많은 개발자들이 자신의 코드를 오픈하고 다른 개발자와 의견을 나눈다. 다른 개발자의 충고나 조언이 많은 도움이 될 것이다.
4.다른 사람의 코드를 많이 봐라.
글을 쓰는 작가도 한 권의 책을 쓰기위해 수백 수천의 책을 읽는다. 개발자도 마찬가지이다. 좋은 코드를 만들기 위해서는 좋은 코드를 많이 봐야 한다. 자꾸 보다보면 코드를 이해하는 속도도 빨라지고 좋은 부분과 나쁜 부분이 점차 보이기 시작할 것이다.
그리고 최근 소프트웨어 개발은 절대 모든 코드를 전부 구현하지 않는다. 많은 부분을 오픈소스를 활용하게 되는데 개발 기간의 단축이라는 효과도 있지만 남이 잘 만들어 놓은데다가 검증까지 거친 코드를 사용하지 않을 이유는 없다. 좋든 싫든 어차피 우리는 다른 사람의 코드를 많이 봐야 한다. 훈련이 필요한 이유다.
5.개인 프로젝트를 반복해서 개선해라.
코드에 버그가 있으면 고쳐야 한다. 이것은 당연하다. 여기에 더해 잘 동작하지만 비효율적이라면 고쳐야 한다. 좀 더 라인 수를 줄여 콤팩트하게 바꿀 수 있다면 그렇게 해야 한다. 코드가 이해하기 어렵게 작성되었다면 좀 더 이해하기 쉽게 바꿔야 한다. 좋은 코드가 나올 때까지 끊임없이 코드를 다듬는 습관이 중요하다.
개인적인 생각이지만 나는 주석(Comment)를 좋아하지 않는다. 주석은 반드시 필요한 부분이 존재하지만 최소한으로 유지하도록 애써야 한다는 생각이다. 주석은 코드의 로직과 관계없는 외적인 상황에 대한 설명이 필요한 경우에만 사용되어야 한다. 로직은 코드 그 자체로 이해되어야 한다. 로직에 대한 설명이 필요한 코드라면 미련없이 다시 만들어라.
소프트웨어 개발에 대한 방법론은 계속 바뀌고 진화한다. 얼마전에 최선이었던 방법이 지금은 그렇지 않은 경우가 많다. 내가 만든 코드도 여기에 맞춰 계속 개선해 보는 습관이 필요하다. 이런 습관이 쌓이고 쌓여 나를 좋은 개발자로 만들어 줄 것이다.
핑백: 개발자 현실, 미래, 로드맵