본문 바로가기

Grew from/Book-Memo

[북메모] 벤츠타는 프로그래머


대부분의 공부는 좋은 결실을 보기 위해서는 끊임없는 인내와 노력이 필요하다. 그렇기 때문에 더더욱이나 확실한 동기를 부여하고 공부를 시작하는 것이 중요하다.

프로젝트를 처음 시작할 때만 해도 무엇을 어디에서부터 시작해야 할지 감을 잡지 못했었지만, 비용을 받고 진행하는 프로젝트라는 긴장감을 가지고 집중하면서 프로그래밍 공부를 하다 보니 그것이 어느새 몸에 배어 버린 것이다. 만일 이 프로젝트를 시작하지 않았더라면, 필자의 윈도우 프로그래밍 공부는 훨씬 더 시간이 걸렸을 것이다.

따라서 여러분도 좋은 프로그램을 만들고 싶다면, 현재 여러분이 가장 많이 쓰거나 잘 사용하고 있는 프로그램을 분석해보는 것도 좋다. 그렇게 해서 자신이 좋아하는 프로그램의 아류작을 만들다 보면 그 과정을 통해서 본인의 프로그래밍 실력이 한층 늘게 되는 이점 외에도, 원제작자의 고민과 노력을 엿볼 수 있어서 더욱 그 프로그램을 사랑하게 되는 계기가 될 수 있기 때문이다.

이면지에 그려가면서 정리한 알고리즘 덕분에 구현하고자 하는 프로그램 개발이 끝날 수 있었고, 지금도 복잡한 알고리즘을 구상할 때에는 머릿속으로만 시뮬레이션하거나 직접 코드를 작성하는 것보다 이면지에 해당 알고리즘과 관련된 사항을 정리하고 그림으로 그려본다. 꼭 이면지를 이용하지 않더라도 여러분에게 맞는 설계도 그리는 방법이 무엇인지를 고민해보고 그것을 실제로 적용해보자. 바로 이것이 코더와 프로그래머를 구분하게 되는 첫걸음이 될 것이다.

지금은 하나만 가지고는 수시로 변화하는 시장의 요구에 제대로 부응할 수 없다는 문제가 있다. 따라서 자신이 경험하거나 알지 못하는 사항에 대한 것도 최대한 빨리 해결책을 찾아내는 것이 중요한 능력이 되었다.

업무로 하는 프로그래밍이라면 당연히 데드라인이 정해져 있겠지만, 프로그래밍 공부를 위해 프로그램을 만들 때는 강제적인 데드라인을 잡아놓지 않으면 흐지부지되거나 한없이 늘어질 수밖에 없다. 따라서 어떤 것이든 상관없으니 반드시 강제성을 띠는 데드라인을 설정하고, 이를 달성하기 위해 주어진 시간을 잘 쪼개어 계획을 수립하는 것이 중요하다.

따라서 여러분도 원래 구상했던 계획에 못 미치더라도 어느 정도 수준에 이르면 반드시 완성을 시키는 습관을 들여야 프로그래밍 실력이 늘게 된다. 또한, 완성된 프로그램은 돈을 받고 팔든지 아니면 무료로 사용할 수 있도록 공개를 하게 되면 프로그램의 완성도를 높이는 훈련을 하게 되는 셈이다. 이런 훈련을 반복하다 보면 처음부터 버그가 거의 없는 무결점 코드를 만들어내는 개발자가 된 자신을 발견할 수 있을 것이다.

좋은 프로그램을 만들기 위해서 개발자가 열심히 노력하는 것도 중요하지만, 그보다 더 중요한 것이 있다면 그것은 바로 사용자의 의견에 귀를 기울이는 것이다.

객관성을 가진 평가를 하기 위해서는 같은 분야에서 충분히 검증된 경력을 가진 선배나 동기, 또는 센스가 뛰어난 후배의 도움을 받을 필요가 있다. 지금은 비록 그들의 조언이 비수가 되어 가슴에 박히더라도, 그러한 고통을 감내하면서 나의 수준을 인정하는 순간부터 여러분의 실력은 크게 향상될 수 있다.

애초에 방향을 잘못 잡았던 소프트웨어 개발은 정상으로 되돌리는 것보다 제대로 된 방향을 향해서 처음부터 다시 개발하는 것이 더 빠르고 효과적인 방법이기 때문이다. 그러기 위해서는 내 생각이 틀렸음을 인정하는 태도가 선행되어야 한다.