소프트웨어 엔지니어라는 직업을 꿈꾸는 친구들에게
어제 아들 녀석의 친구와 오랜 시간 통화를 했다. 일종의 진로 상담이었는데, 주제는 자동차에 관련된 소프트웨어 개발을 업으로 삼고자 한다면 무엇이 필요한지에 관한 것이었다. 내가 그쪽 분야에서 일하고 있으니까 실제 업계에서 일하고 있는 전문가의 시각에서 조언을 구하는 것이었다.
아들 친구라서 편하게 이런저런 이야기를 많이 나누기도 했지만, 사실은 우리 아들 녀석도 비슷한 고민을 하는 중이다. 곧 제대하는데, 그 후에 무엇을 하면서 먹고살아야 할 것인지에 대한 확신이 없는 것이다.
아들은 입대 전에 미국에서 고등학교에 다닐 때 프로그래밍 수업을 듣기도 했고, 워낙 게임을 좋아해서 막연히 소프트웨어를 배워서 개발자가 되고 싶다고 생각했었던 것 같다. 졸업 후 커뮤니티 컬리지를 다니면서 관련된 과목들을 배우긴 했지만, 워낙 기초적인 수준이고, 아마 그나마도 군 생활을 하면서 다 까먹어서, 거의 처음부터 다시 시작한다고 생각해야 할 것이다.
소프트웨어 개발은 개인의 재능에 따라서 만들어낼 수 있는 성과가 엄청나게 차이가 나는 분야이다. 물리적으로 실재하는 물건을 제작하는 하드웨어 분야에서는 개인에 따른 생산성의 차이가 한계가 있게 마련이다. 하지만 소프트웨어 개발은 한 개인의 창의력과 아이디어 그리고 감각에 따라서 개인 개발자가 만들어내는 결과물의 양과 질이 수십 배나 수백 배의 차이가 나는 일이 흔한 분야이다.
일하면서 정말 뛰어난 개발자들을 여럿 만났는데 그 재능이라고 부르는 것이 무엇인지 정확하게 그리고 한 가지로 말하기는 쉽지 않다. 어떤 뛰어난 사람들은 정말로 원래 머리가 좋고 이해력과 통찰력이 뛰어나서 훌륭한 개발자가 된 사람도 있을 것이다. 이런 것들은 타고나는 것이라서 어쩔 수 없는 부분이 있다.
하지만 어떤 문제를 줘도 남들보다 빠르게 핵심을 파악하고 필요한 결과물을 만들어내는 능력이 타고난 재능에만 주로 의존한다고 생각하지 않는다. 사람마다 타고난 머리가 다르니 분명 어느 정도의 차이는 있지만, 그것은 어느 분야에서 어떤 일을 하더라도 나타나는 정도의 차이이다.
타고난 재능보다는, 탄탄한 기초 지식을 토대로 문제를 파악하고 해결하는 훈련을 많이 하는 것, 그리고 자기가 하는 일에 대한 열정을 갖고 즐기면서 하는 것이 훨씬 더 중요하다는 생각이다. 열정이라는 것은 본인의 성향에 따라서 갖게 되는 것이니, 스스로가 어떤 일을 할 때 가장 즐겁고 보람을 느끼는지는 잘 알아서 찾아야 할 것이다.
앞으로 올리게 될 글들은, 우리 아들과 친구 녀석들처럼, 뭔가 소프트웨어에 관심이 있고, 프로그램을 만들어보니 즐겁고, 그래서 그쪽 분야에서 일하고 싶다는 마음을 갖게 된 사람들을 위한 것이다. 대단히 새로운 내용은 없을 것이다. 정성을 갖고 인터넷을 찾아보면 나올만한 내용들이다. 다만, 그래도 이쪽 분야에서 오랫동안 일해 오면서, 나 스스로가 좀 아쉬웠던 부분들, 혹은 다른 직원들이 일하는 것을 보면서 느꼈던 것을 바탕으로, 중요한 기초라고 생각되는 분야들에 대해서 최대한 쉽게 설명해 보려고 한다.