개발자를 꿈꾸는 취업 준비생에게 글에서 언급했듯이 나는 28살에 프로그래밍 공부를 시작했다. 3개월 동안 자바 전문가 과정을 수료하고 개발자의 길을 걷게 되었다. 단 3개월을 공부하고 개발자의 길을 걷기 시작했는데 부족함이 얼마나 많았겠는가? 지금은 상상도 할 수 없는 일이다. 내가 프로그래밍 공부를 시작하던 2000년은 가능했고 많은 개발자가 비슷한 과정으로 개발자를 시작했다.
3개월 학원을 수료했는데 아는 것이 뭐가 있겠나? 아는 것이 거의 없는 상태이다 보니 학습할 것이 너무 많았다. 그런데 무엇부터 어떤 순서로 학습하는 것이 좋을지에 대한 가이드가 없다 보니 막막했다. 주변에 조언을 구할 선배나 동료도 거의 없는 상태라 막막함은 더 컸다. 인터넷에 올라온 글의 대부분은 개발자로 인정받으려면 기본이 중요하다. 그러니 자료구조, 알고리즘, CS(Computer Science)는 반드시 학습해야 한다는 글이 대부분이었다.
무엇부터 학습할 것인가에 대한 우선순위를 놓고 고민하다 지금 현장에서 필요로 하는 지식과 역량은 무엇인가라는 생각이 들었다. 그런데 1년 차 개발자가 생각하기에 인터넷 글에서 조언하는 자료구조, 알고리즘, CS에 대한 필요성을 느끼기 힘들었다. 현장에서 필요한 역량은 어떻게 하면 객체 설계를 잘하고, 유지보수하기 좋은 코드를 구현할 것인가가 더 필요한 역량이 아닌가라는 생각이 들었다. 추가로 든 생각은 내가 4년 동안 전공한 개발자들과 자료구조, 알고리즘, CS로 경쟁해 봤자 어차리 경쟁력이 떨어지지 않을까라는 생각이 들었다.
그래서 깔끔하게 포기했다. 나는 개발자에게 기본이라 할 수 있는 자료구조, 알고리즘, CS는 포기하고 설계를 잘하고 프레임워크 내부 동작 원리를 깊이 있게 이해하는 것에 집중하기로 했다. 그렇게 몇 년을 설계와 프레임워크 학습에 대부분의 시간 투자를 했다. 그렇게 학습한 결과 자료구조, 알고리즘, CS에 대한 깊이는 얕지만 다른 측면에서 나의 역량을 발휘할 수 있었다.
그렇게 버리고 나니 개발자로 살아가는데 문제없었나? 몇 년 동안은 문제없었다. 경력이 쌓이면서 자료구조의 필요성을 느껴 자료구조를 학습했고, 데이터베이스, 네트워크 순으로 필요하다 생각하는 시점에 학습을 이어나갔다. 하지만 1년 차부터 무리해서 많은 것을 학습하려 하지 않았기 때문에 내가 필요하다 생각하는 시점에 나의 속도에 맞춰 학습할 수 있었다. 나의 속도에 맞춘, 필요에 의한 공부는 프로그래밍 학습에 동기 부여를 높이고, 공부에 대한 재미를 느끼게 만들었다.
맞다. 나는 개발자로 살며 알고리즘을 학습해 적이 거의 없다. 아니 몇 번은 시도해 봤다. 하지만 알고리즘을 학습하다 보니 고등학교 시절 수학을 공부하던 것과 다른 것이 없다는 것을 느꼈다. 나는 고등학교까지 수학을 참 좋아했다. 다른 과목에 비해 확실히 높은 점수를 받는, 내가 진정 좋아하는 과목이었다. 그런데 그때뿐이었다. 고등학교를 지나 대학에 입학하고, 사회로 진출해 수학에 흥미를 느껴 추가로 학습해 본 경험은 거의 없다. 그렇게 좋아했고 많은 시간을 투자했던 수학과 관련해 기억나는 것도 거의 없다. 나는 정말 수학을 좋아한 것이 아니라 수학 점수를 잘 받아 좋은 대학에 입학하는 것이 목표였기 때문이다.
알고리즘을 학습하다 보니 내가 알고리즘에 대한 필요성을 느끼거나 알고리즘 문제를 해결하는 것에서 즐거움을 느끼지 못한다는 것을 깨달았다. 나는 단순히 좋은 회사에 취업하기 위한 일환으로 알고리즘 코딩 테스트를 준비했던 것이다. 내가 현장의 문제를 해결하는데 필요한 알고리즘은 극히 제한적이었다. 알고리즘이 현장의 문제를 해결하는데 많은 도움이 되었다면 나는 더 많은 시간을 투자했을지도 모른다. 기존에 필요성을 느껴 학습을 이어갔듯이 알고리즘의 필요성을 느끼는 순간까지 알고리즘 공부는 하지 않기로 했다.
코딩 테스트 준비를 하지 않으면 좋은 회사에 취업하기 힘든 것 아닌가? 맞다. 그래서 나는 알고리즘 코딩 테스트를 보는 회사는 가지 않기로 마음먹었다. 알고리즘 코딩 테스트가 아닌 형태로 코딩 테스트를 보는 곳도 있고, 코딩 테스트 없이 취업할 수 있는 곳도 있다 생각했다. 내가 알고리즘 역량이 아닌 나만의 강점이라 할 수 있는 역량을 갖추면 함께할 회사가 있지 않을까라 생각했다.
그런 마음으로 24년째 개발자와 교육자로 잘 살아가고 있다. 내가 잘할 수 있고, 잘하는 역량을 키워 나가면서... 이렇게 살아가는 나를 보며 누군가는 부족한 개발자라 이야기할 것이며, 그런 부족함을 가진 사람이 프로그래밍 교육을 한다면서 욕할 수도 있다. 그래도 괜찮다. 그건 그 사람의 기준으로 개발자의 모습을 바라보고 있는 것이기 때문이다. 나는 나의 기준으로 개발자가 갖추어야 할 역량을 정의하고 살아가고 있기 때문이다. 우리 삶에 있어 한 가지 길과 역량에 대한 기준이 한 가지만 있는 것은 아니지 않은가?
교육자로 살면서 취업 준비생들과 1:1 면담할 기회가 많다. 대부분의 면담 주제는 '역량이 부족해 취업이 가능할지 모르겠다.', '주변에 잘하는 친구들이 많아 자신감이 많이 떨어진다.'이다. 이런 고민을 하는 친구들의 학습 과정을 살펴보면 대부분 비슷하다. 자신이 학습할 주제가 있음에도 불구하고 주변 친구들의 관심사에 휘둘리거나, 취업을 위해 블로그 글쓰기, Github에 잔디심기, 알고리즘 코딩 테스트 등등등. 취업에 대한 불안감 때문에 취업에 유리하다는 활동을 계속해서 추가하고 있다. 그렇다 보니 자신이 부족한 역량에 투자할 시간이 부족하고, 계속해서 얕은 학습을 반복하게 된다. 이는 자신의 기준에 맞춰 학습을 이어가는 친구들과 점차 격차를 벌리면서 자신감과 재미까지 떨어지는 경우가 많다.
미래는 불확실하다. 그런 불확실성이 불안감을 키운다. 특히나 지금 같이 취업하기 힘든 상황이라 불안감은 더 커진다. 그렇게 키워진 불안감이 점점 더 많은 활동을 하도록 강요하게 만든다. 하지만 이런 접근 방식은 오히려 취업과 점점 더 멀어지게 만들 수도 있다.
불안감을 극복하기 위해 새로운 활동을 추가하는 것이 아니라 자신이 정말 필요하다 생각하는 활동에만 집중하는 것은 어떨까? 추가하는 것이 아니라 버리는 것이다. 주변 사람들이 하는 활동을 하지 않으려면, 기존에 하던 활동을 버리려면 용기가 필요하다. 추가하는 것보다 버리는 것이 더 큰 용기가 필요하다. 나 자신을 믿고 묵묵히 걸어갈 수 있는 용기. 내가 선택한 이 길이 맞다는 용기. 그 용기가 다름을 만들고, 이런 다름 속에서 자신만의 강점, 자신감, 재미를 찾을 수 있다.
내가 무엇인가에 집중할 것인지를 찾는 좋은 방법은 취업을 목표로 하는 것이 아니라 좋은 개발자로 성장하는 것을 목표로 하는 것이다. 좋은 회사에 취업하기 위해 알고리즘 코딩 테스트가 필요한 학습일 수 있지만 좋은 개발자로 성장함에 있어 알고리즘은 우선순위를 뒤로 미룰 수 있을지도 모른다. 목표를 무엇으로 정하느냐에 따라 내가 집중할 것이 무엇인지 달라진다. 목표가 달라지면 주변에 휘둘리지 않으면서 내가 집중할 것에 집중할 수 있다. 즉, 버릴 수 있는 용기가 생기는 것이다.