더 나은 프로그래머를 꿈꾸며

이 문서는 본인(주니어 프로그래머)이 성장에 갈증을 느끼며 작성했다. 아쉽게도 이 갈증의 해소 방법은 담고 있지 않다 왜냐하면 본인도 모르기 때문이다. 따라서 이 갈증은 본인 삶이 끝나기 전까지 계속 함께 할 것 같다. 여기서 성장 이란, 과거 보다 더 나은 현재를 가리키고 있다.

과거를 하루, 일주일, 한달 어떠한 시간의 단위로 정의 하든지 성장한 미래의 자신은 아래와 같아야 한다.

  • 과거 구현하지 못한 내용을 완벽히 구현해 낼 수 있어야 한다.
  • 과거 이해가 되지 않던 개념들을 자연스럽게 활용할 수 있다.

시간이 누적 될수록 과거를 가리키는 시간의 정의는 짧아야 한다. 왜냐하면 시간의 누적은 곧 지식의 누적이며 그러한 지식을 누적하는데 있어 전적으로 문제해결 능력을 바탕으로 하기에 절대적으로 향상할 것 이다. 물론 위의 가정은 본인이 매번 어려운 도전을 자발적으로 이어나가고 있는 것을 전제한다. 만약 이에 해당되지 않는다면 나는 이를 ‘성장이 멈춘 사람’이라 정의하고 싶다. 대개 프로그래머라는 직군은 본인의 공학적 지식과 기술을 통하여 문제를 해결하는 사람이라 일컫는데, 위에 언급한 성장이 멈춘 ‘프로그래머’는 지식의 한계치가 정해져 있기에 지속적으로 성장하고자하는 프로그래머와 실력적으로 차이가 날 수 밖에 없다. 이는 시간이 지남에 따라 큰 폭으로 차이가 날 것이다. 나 역시 이러한 상황을 맞이하고 싶지 않아서, 아래와 같은 지침 아닌 지침을 통해 성장하려고 한다. 이 문서가 나와 비슷한 면모를 가진 사람들에게 도움이 되길 바란다.

끊임없이 갈증하라.

갈증은 아주 좋은 신호이다.

다만, 이 신호를 무시하지 않고 행하였을 때 우리는 비로소 참된 결과를 얻을 수 있다. 이를테면 새로운 개념에 대해 학습 하고자 하는 갈증이 생겼다면 지체하지 말고 바로 그 즉시 해소하라. 그리고 또 새로운 갈증을 느껴라, 그리고 다시 해소해라. 이러한 일련의 행동을 반복했을 때 우리는 성장한다. 따라서 끊임없이 갈증해야한다. 갈증과 해소 상당히 모호한 말일 수 있고, 어떤형태로 해야할지 감이 안잡힐 수 도 있다고 생각되어 본인의 사례를 예로 들어보고자한다. 본인은 갈증의 요소들을 대개 주위로 부터 많이 얻고 있다. 이와 같은 요소는 그 즉시 학습을 하고, 별도의 공간에 메모를 해두었다가 블로그나 이외 개인 저장소와 같은 형태의 클라우드에 학습한 내용을 정리하여 업로드한다. 정리에 대한 내용은 아래 일전 내가 공유한 문서들을 참고하길 바란다.

실제로 이러한 정리는 복습의 시간을 주고, 선행 학습에서 제대로 이해되지 않았던 개념들에 대한 이해를 돕는데 많은 도움을 준다. 하지만 이러한 정리는 상당히 손이 많이 가기에 시간이 오래 소요된다. 따라서 매 학습 마다 이와 같은 정리를 진행하면 오히려 시간을 많이 뺏기게 되므로 적절히 조정할 필요가있다.

이러한 애로사항을 해결해주는 것은 주기적 기술 서적 구매 이다. 나의 경우 길면 1 - 2 개월, 짧으면 1주 간격으로 읽고 싶은 기술 서적을 구매하여 학습하고 있다. 현재는 아직 습관으로 까지는 자리 잡지 못했지만, 꾸준히 행하여 이를 습관화하여 게속 학습하는 프로그래머가 되기를 희망하고 있다.

최고의 동료들과 함께하라.

동료라는 존재는 삶에 있어 아주 큰 영향력을 행사하는 요소 중 하나다. 최고의 기준은 개인마다 각기 다르겠지만, 본인은 ‘자신보다 뛰어난 사람’이라 정의하고 싶다. 자신 보다 커뮤니케이션 능력이 높을 수 도 있고, 개발 능력 이외 여타 다른 부분의 능력이 높은 사람일 수 있다. 이와 같을 때, 우리는 그 동료를 통해 자신의 부족한 부분을 채우고 배울 수 있으며 때론 경쟁할 수 있다. 최고의 동료는 분명 자신에게 값진 배움을 선사해줄 것 이라 확신한다.

실수를 인정하라.

우리는 모두 실수를 한다. 하지만 대개 그 실수를 인정하는 태도에 있어서 연차가 지날수록 부정적으로 변한다. 이는 상당히 위험하며, 아주 잘못된 성장을 했다는 것을 반증한다.

실수를 인정하고 더 좋은 방안을 찾아 문제를 해결하는 것이 성장의 반 이상을 차지한다고 생각할 만큼 실수는 중요한 요소이다. 다만 되풀이 되지 않는 실수라 가정했을때 그렇다. 이와 같을 때 실수를 인정하지 않는 태도는 성장의 아주 큰 걸림돌이 되는 친구이며 동료들에게도 큰 악영향을 주니 특별히 주의해야한다. 당신이 실수 했다면, 실수를 겸허히 인정하고 더 좋은 방법을 고민해보길 바란다.

꼼꼼하라.

본인은 너무 부족한 주니어 프로그래머이지만, 운 좋게 좋은 프로젝트를 몇 개 진행하면서 아주 값진 것을 학습하게 되었다. 바로, 무시할 만큼 아주 작은 요소에 집착 해야 한다는 것을 뼈저리게 깨달았다는 것이다.

이를테면, A와 B라는 인물이 있다 가정하고 이 둘이 소유하고 있는 개발적 능력치가 동일하다 했을 때, 이 둘의 결과물은 동일할 것 이라 생각되는가 ? 누군가 실수를 하지 않았다면 맞겠지만, 위의 언급했듯 우리는 모두 실수를 한다. 다만 이러한 실수는 사전의 꼼꼼한 검수를 통해 방지를 할 수 있다.

결국에는 싸움의 승부는 디테일에서 결정된다. 작은 요소도 무시하지 말고, 여러 상황들을 머리속에서 그려가며 좀 더 완벽해지길 노력하라.

즐겨라.

본인은 프로그래밍이라는 행위가 때로는 레고를 하는 것과 같다는 생각을 하곤 한다. 왜냐하면 각기 다른 작은 요소들을 내 입맛에 맞추어 가지고 놀면 후에 거대하고 아름다운 결과물로 내게 돌아오기 때문이다. 이러한 나의 사고방식으로 인해 나는 매우 안타까운 현실과 마주했다.

바로, 프로그래밍이라는 행위를 로 정의하는 프로그래머들을 알게 된 것이다. 이들은 이 행위가 아주 재미 없고 따분하며 빨리 도망가고 싶다 생각할 만큼 이 행위를 일적으로 구분하는데, 그 모습을 보자니 매우 불행해보였다. 이 문서를 읽고 있는 여러분도 알다시피 이들은 절대 행복할리 없으며, 성장할리도 만무하다.

지겹고 따분한 것을 학습하겠는가 ? 아니면 재밌고 가슴설레는 것에 학습하겠는가?

따라서 프로그래밍은 절대적으로 즐겨야한다.

마치며

작성하고보니, 상당히 거만하게 보일 수 있다 생각된다. 이 부분에 대해서는 도입부에도 언급했 듯, 이는 나를 위해 하는 말이라 생각하고 작성했다. 따라서 혹여 문서를 읽으며 조금 불편한 부분이 있었다면 이러한 부분을 고려하여 주시길 부탁드린다.

관련 읽을 거리

You might also like...

What do you think?