brunch

You can make anything
by writing

C.S.Lewis

by 박재성 Apr 01. 2019

후배 개발자에게 - 2019년

좋은 소프트웨어(이하 SW) 개발자를 키우고 싶다면 좋은 SW 교육자를 키워라.라는 글을 썼다. 이 글은 정부에 전하고 싶은 메시지였다. 이런 글을 쓰고 많은 사람들의 공감을 받는다고 세상이 쉽게 변하지 않는다는 것을 안다. 특히 정부는 쉽게 바뀌지 않는다. 변화는 SW 개발자인 우리가 만들어야 한다. 더 빠른 변화를 만들어 가려면 SW 개발자인 우리가 행동해야 한다.


나는 2011년에도 후배 개발자에게 비슷한 글을 썼다. OKKY에 올라온 "옛날 선배 개발자분들 정말 짜증 납니다."라는 글에 대한 답변으로 쓴 후배 개발자에게 - 2011년 글을 소환해 봤다. 


SW 개발 문화는 2011년과 큰 틀에서 달라진 점이 많지 않은 듯하다. 하지만 좀 더 세분화해서 살펴보면 서서히 변화가 생기고 있다. 이런 변화에 집중해 몇 가지 이야기를 하고 싶어 글을 쓴다.


SI 업계에서 일하는 개발자라면 SI 업계를 떠나라.

지금 SI 업계에서 일하고 있는가? SI 업계를 떠날 수 있는 방법을 찾아라. 특히 2, 3년 차의 주니어라면 더더욱 수단과 방법을 가리지 말고 다른 업계로 떠날 방법을 찾아라. 너무 가혹한가? 'SI 업계에 얼마나 많은 개발자들이 일하고 있는데 함부로 그렇게 말할 수 있냐?'라고 이야기할 수 있다. 알고 있다. 욕을 먹는 한이 있더라도 나의 대답은 같다. 하루라도 빨리 떠나라.


지금까지 우리는 정부와 갑/을 회사들에게 변화할 수 있는 시간을 많이 줬다. 하지만 내가 SW 개발자의 길을 걷기 시작해 20년이 지나도록 SI 업계는 크게 변화하지 않고 있다. 아니 오히려 후퇴하고 있다. 역량 있는 개발자가 피하는 곳이 되면서 SI 프로젝트의 품질은 점점 더 떨어지고 있다. 특히 우아한형제들, 네이버, 카카오와 같은 일반 사용자용 소프트웨어 회사들과의 기술 격차는 점점 더 벌어지고 있다. 


개발자에 대한 처우는 어떠한가? 나아지고 있는가? 일반 사용자용 소프트웨어 회사들의 개발자에 대한 인식과 처우는 점점 더 좋아지고 있다. 반면 SI 업계의 개발자에 대한 인식과 처우는 10년 전에 비해 나아진 점이 거의 없다. SI 업계에서 5년, 10년을 일했을 때 미래의 비전이 보이는가? SI 업계에서 5년, 10년을 일한 후 일반 사용자용 소프트웨어 회사로 이직하려고 도전해 봐라. 쉽지 않다. 두 분야의 기술 격차, 협업하는 개발 문화, SW를 바라보는 인식 등에서 엄청난 차이가 발생한다. 지금도 많은 SI 개발자가 일반 사용자용 소프트웨어 회사로 도전하지만 실패하는 이유가 이런 차이 때문에 발생한다.


피치 못한 사정 때문에 SI 업계에서 일하고 있다면 5년 이상은 너무 길다. 5년이 되기 전에 뼈를 깎는 노력을 통해서라도 일반 사용자용 소프트웨어 회사로 이직해라. 정부, 수많은 갑과 을들은 아직도 자신들이 무슨 잘못을 하고 있는지 모른다. 과거보다 좋은 개발자가 없다고 불만만 제기할 뿐 개발자의 역량을 키우고, 개발 문화를 개선하기 위한 노력은 여전히 부족하다. 무엇을 주저하는가? 개발자로서 성장할 수 있고, 더 좋은 처우가 보장되어 있는 곳으로 떠나라. 우리가 빨리 떠나야 저들도 변한다. 우리가 행동하지 않는 한 저들은 변하지 않을 것이다.


취업 준비 중이라면 성장할 수 있는 스타트업도 고려해라.

취업 준비생이라면 복지 좋고, 안정적이고, 연봉도 높은 회사를 찾는 것은 당연하다. 하지만 이런 좋은 조건의 회사가 입사하는 것이 쉽지 않다. 이런 회사에 입사하기 쉽지 않은 이유는 채용하는 개발자의 수가 적기 때문이 아니라 요구하는 역량 수준이 너무 높기 때문이다. 이 회사들이 요구하는 수준의 역량을 갖춘 신입 개발자는 거의 없다. 신입 개발자에게 협력 능력까지 요구하는 것은 너무 과한 것 아닌가? 자신들은 투자하지 않고 바로 현업에 투입해 일을 시키겠다는 도둑놈 심보가 따로 없다. 하지만 어쩌겠는가? 현실이 그런 것을... 


SW 개발자로 성장하는 데 있어 좋은 조건의 회사로 취업하는 것도 좋은 시작이지만 작은 스타트업에서 시작하는 것도 좋은 방법이다. 단, 조건이 있다. 내가 보고 배울 수 있는 선배 개발자들이 있는 곳이어야 한다. 체계적인 교육 과정이 없어도 괜찮다. 일하면서 눈동냥으로라도 배울 수 있는 선배 개발자가 최소 3,4명 이상은 있는 스타트업이어야 한다. 면접 과정에서 반드시 확인해야 한다. 자신과 같은 분야에 몇 명의 선배 개발자가 있는지, 어떤 방식으로 일하고 있는지는 내가 성장하기 위해 정말 중요한 요소인 만큼 반드시 확인해야 한다.


스타트업. 힘들다. 맞다. 힘들다. 힘든 만큼 배우는 것도 많다. 단, 자신이 배우고자 하는 의지가 있고, 성장하고 싶은 의지가 있을 때 배움이 크다. 자신이 주도적으로 문제를 해결하고, 더 많은 분야에 기여할수록 더 많은 것을 배우고 성장할 수 있다. 누군가 체계적으로 가르쳐주지 않는다. 나 스스로 학습하고, 성장하고, 해결책을 찾아야 한다. 이렇게 선택한 스타트업의 개발 문화가 좋고, 성장 속도도 빠르다면 회사의 성장 속도에 맞춰 같이 성장하면 된다. 단, 그렇지 않은 상황이라면 2, 3년 후에 이직하면 된다. 내가 노력한 만큼 성장해 있을 테니까. 인생에 길이 하나만 있는 것은 아니지 않은가? 좋은 조건을 가진 회사만 집착하지 말고 내가 성장할 수 있는 곳이라면 도전해 보자.


꾸준히 학습할 수 있는 시간을 만들어라.

상당수 개발자들은 이미 알고 있다. 현재 일하고 있는 곳에서 비전을 찾을 수 없으며, 무엇인가 잘못되었다는 것은 알고 있다. 악순환의 고리에 빠져 있다는 것도 알고 있다. 하지만 이런 악순환의 고리를 어떻게 풀어가야 할 것인지를 알 방법이 없다. 현실은 너무 바빠 새로운 도전을 할 수 있는 마음의 여유가 없다. "어떻게 되겠지?"라는 막연한 희망을 품고 1년, 2년의 시간을 보낸다. 변화를 이야기하는 개발자도 주변에 없다.


자신이 지금 이런 상황이라면 어떻게 하겠는가? 어떻게 하는 것이 변화를 만들어 낼 수 있을까?


변화를 만들기 위해 가장 먼저 바꿔야 할 부분은 문제를 바라보는 시각이다. 혹시라도 문제의 원인을 사회 시스템의 문제, 갑/을/병/정으로 이어지는 하청 구조의 문제, 선배 개발자의 문제와 같이 외부에서 찾을 수 있다. 맞다. 본질적인 문제의 원인은 이런 구조적인 문제 때문에 발생한다. 하지만 문제의 구체적인 해결책을 이런 구조적인 부분에서 찾고, 해결되기를 기대하는 것은 너무나도 먼 미래의 이야기이며, 내 영향력 하에서 바꾸기도 힘들다. 이런 구조적인 문제는 장기적으로 해결되기를 기대하면서 일단 나의 영향력 하에서 바꿀 수 있는 것부터 바꾸려는 시도를 해야 한다.


나의 영향력 범위 내에서 바꿀 수 있는 시작은 나의 역량을 키우는 것이다. 바쁜 회사 생활이지만 내가 목표로 하는 역량을 가진 개발자가 되기 위해 최소 1, 2년은 꾸준히 학습에 집중 투자해야 한다. 내가 교육 과정을 시작할 때 다음 몇 가지 조정을 통해 시간을 확보하라고 가이드한다.


시간 확보

애인과의 만남 시간 조정. 예로 2주에 1회

친구들과의 관계 끊기

TV 보지 않기, 게임하지 않기

우선순위 조정

 프로그래밍 관련 책만 읽기

 야근하면서 장난감 프로젝트하기


나는 업계에서 인정할 만한 수준의 개발자가 되려면 최소 1, 2년의 프로그래밍 관련 학습에 집중 투자해야 한다고 생각한다. 컴퓨터공학과를 전공했다고 하더라도 현장에서 필요한 역량이 다르기 때문에 이런 시간 투자는 반드시 필요하다. 최소 1, 2년이다. 상황에 따라 더 길어질 수도 있다. OKKY 커뮤니티에서 평생을 저 기준으로 살라고 이야기했다고 해서 오해를 산 경우도 있다. 평생을 어떻게 저런 기준을 가지고 살 수 있겠는가? 우리가 전문가라고 인정을 받으려면 최소한의 시간이라도 투자해야 한다. 1, 2년 집중 투자한다면 점차 학습할 내용도 적어지고, 경험도 쌓이기 때문에 더 적은 시간을 투자할 수 있다.


주변을 정리하고 우선순위를 조정해 꾸준히 프로그래밍 학습과 연습에 투자할 수 있는 시간을 확보하자. 내가 변화를 만들 수 있는 시작점이 될 수 있다.


지금 일하는 곳에서 변화를 만드는 시도를 해라.

나의 영향력 범위 내에서 바꿀 수 있는 좋은 해결책은 나의 역량을 키워 내가 원하는 다른 곳으로 이직하는 것이다. SI 개발자라면 역량을 키워 일반 사용자용 서비스를 개발하는 회사로 이직하거나, 내 몸을 갈아 넣는 느낌을 받는 스타트업이라면 성장할 수 있는 다른 곳으로 이직하면 된다. 무작정 이직만을 생각하라는 것이 아니다. 현재 내가 일하는 곳에서 나의 영향력을 발휘해 변경할 수 있는 부분을 바꾸기 위한 노력은 게을리하지 않았으면 한다. 이 같은 시도는 아무리 열악한 곳이라도 나를 성장시킬 수 있는 계기가 되며, 이런 성장으로 인해 내가 원하는 곳으로의 이직을 가능하게 할 것이다. 우리가 괜찮다고 생각하는 회사들이 원하는 인재는 주어진 환경에서 시키는 일만 잘하는 개발자가 아니라 자기 주도적으로 환경을 개선하고 문제를 해결하는 개발자이기 때문이다. 어쩌면 해결해야 할 문제가 많은 SI와 작은 스타트업이 이런 역량을 경험할 수 있는 좋은 곳이 될 수도 있다.


"개발 문화가 좋은 곳에서 일하고 싶다."라고 많은 개발자들이 이야기한다. 하지만 어느 곳이나 몇 개월이 지나 적응이 되면 문제점과 불합리함이 보인다. 어떻게 하겠는가? 또다시 이직을 준비해야 하나? 내가 생각하는 이상적인 개발 문화를 가진 조직은 없다. 자신이 지향하는 이상적인 개발 문화를 만들기 위해 도전할 수 있는 기회가 있는 조직을 찾아야 한다. 그런 조직이 아니라면 지속적으로 개발 문화를 개선해 나갈 수 있는 조직으로 변화하는데 기여해야 한다. 이런 시도는 결국 나 자신을 성장하게 만들고 나의 영향력은 점점 더 커질 수 있다.


변화는 큰 변화가 아니어도 괜찮다. 현재 자신의 위치에서 영향력을 미쳐 바꿀 수 있는 부분부터 바꾸면 된다. 처음부터 너무 큰 변화를 시도하다 포기하고 실망하는 것보다 작은 변화부터 하나씩 시도해보면서 성공하는 경험을 만드는 것이 더 중요하다. 이런 성공 경험은 변화를 만들어 가는 것에 대한 자신감과 용기를 준다. 실패해도 괜찮다. 결과적으로 가장 많은 것을 배우고 성장하는 것은 나 자신이기 때문이다. 영향력이 적을 때는 적은 만큼의 변화부터 시작해 경력이 쌓이면서 영향력이 커지면 더 큰 변화를 만들어 가면 된다. 경력이 쌓이고, 리더가 된 후에 변화를 만들어 가야지라고 생각할 수 있지만 막상 영향력을 발휘하는 위치가 되면 쉽지 않다. 변화를 만들어 가는 것 또한 연습이 필요하기 때문이다. 경력이 적더라도 자신이 주도적으로 개선해나갈 수 있는 부분을 찾아 조금씩 바꿔 나가는 연습을 해보자.


클린코드 구현하는 연습을 해라.

우리는 프로그래밍을 배우는 시작 단계에서 클린코드의 중요성에 대해 배울 수 있는 기회가 적다. 컴퓨터 공학과를 졸업해 취업 준비 중이거나, 국비지원 과정을 통해 취업 준비 중인 친구들을 만나보면 백이면 백 구현 자체에만 집중하지 코드 품질을 이야기하는 친구는 없다. 하지만 우리가 흔히 좋은 회사라 이야기하는 곳은 클린코드를 구현하는 역량을 가진 친구들을 원한다. 이런 경향은 점점 더 강해지고 있다.


지금까지 우리는 어떻게 하면 빨리 만들 수 있을까에 집중해 왔다. 빨리 구현하는 개발자를 인정해 준 것 또한 사실이다. 특히 SI는 빨리 구현하는 것에 집중하는 경향이 좀 더 강하다. 계약 관계의 구조상 프로젝트 개발과 유지보수를 분리하고 있는데, 이런 분리는 개발 단계에서 빨리 구현하는 것에만 집중할 수밖에 없는 상황을 만들고 있다. SI 환경에서 인정받는 대부분의 개발자를 보면 결과물을 빨리 구현하는 경향이 강하다. SI 개발자가 일반 사용자용 서비스를 개발 회사로 이직하려 할 때 가장 큰 걸림돌이 클린코드를 구현하는 역량이다. 일반 사용자용 서비스를 개발 회사는 빨리 구현하는 것보다 읽기 좋고, 유지 보수하기 좋은 클린코드를 구현하는 역량을 더 중요하게 생각한다. 이런 불일치가 인력 수급의 불일치를 만드는 주요 원인 중의 하나이다.


자신이 생각하는 좀 더 좋은 회사로 이직을 원한다면 클린코드를 구현하는 연습에 시간을 투자해라. 클린코드를 구현하는 연습은 참 쉽지 않은 연습이다. Computer Science 지식과 같이 일정 시간을 투자해 꾸준히 학습하면 알 수 있는 그런 영역이 아니다. 책을 통해 연습할 수 있는 영역이 아니다. 꾸준한 연습을 통해 조금씩 향상해 나갈 수밖에 없다. 나는 회사 프로젝트를 통해 클린코드를 연습하는 것이 아니라 자신만의 장난감 프로젝트를 통해 다양한 시도를 하면서 연습하는 것이 가장 좋은 연습이라 생각한다.


오프라인 커뮤니티에 참여하자.

주변에 조언을 구하고, 코칭을 해줄 선배 개발자가 있다면 정말 운이 좋은 경우다. 주변에 같이 일하는 선배, 동료 개발자가 없거나, 선배, 동료 개발자가 있어도 정치적인 상황 때문에 조언을 구하지 못하는 경우도 다반사다. 이 같은 문제를 해결하는 좋은 방법 중의 하나는 오프라인 커뮤니티 활동에 참여하는 것이다. 커뮤니티는 정치적인 목적이 없는 상태에서 소통할 수 있기 때문에 자신의 고민을 마음 터놓고 이야기할 수 있고, 도전하고 싶은 일들을 마음껏 도전하고 시도해 볼 수 있다. 내가 리더십 능력이 부족해서 리더십 능력을 키워보고 싶다면 커뮤니티에서 도전해 볼 수 있다. 커뮤니티를 리딩 하면서 발생하는 다양한 이슈를 해결해 볼 수 있다. 자발적으로 하겠다는 사람을 아무도 말리지 않는다. 내가 많은 사람 앞에서 발표하는 것이 부담스럽다면 소규모인 스터디 내에서 발표 연습을 할 수 있다. 나는 커뮤니티 속에서 내가 꿈꾸고, 생각하는 다양한 것들을 시도하고 실패하고, 성공하면서 여기까지 왔다. 커뮤니티 내에서의 도전은 반드시 완벽하지 않아도 된다. 약간 부족하더라도 새로운 도전을 기꺼이 받아들이고, 성장할 수 있는 기회를 주는 곳이 커뮤니티다. 


나는 이런 도전을 할 수 있는 기회가 있어 커뮤니티를 한다. 커뮤니티에 참여하고 싶다. 자신의 관심사와 일치하는 커뮤니티가 있다면 참여하면 된다. 그런데 자신의 관심사, 성향과 맞는 커뮤니티가 많지 않다는 것이 문제이다. 자신이 찾는 커뮤니티가 없다면 내가 직접 만들고 운영해 보자. 생각하는 것만큼 어렵지 않다. 힘든 순간도 있지만 노력에 비해 얻는 것이 훨씬 더 많기 때문에 적극 추천하고 싶다. “목마른 사람이 우물 판다.”는 속담이 있듯이 성장하고 싶은 간절함이 있다면 누군가 만든 커뮤니티를 찾고 기다리기보다 내가 직접 만들어 보자. 커뮤니티를 직접 만들고 운영할 계획이라면 시작부터 너무 거창한 목표, 준비를 하지 않아도 된다. 오히려 빈틈이 있을 경우 다른 구성원이 빈틈을 채워가면서 커뮤니티에 대한 주인의식을 가지게 된다. 일단 용기를 내어 시작하는 것이 중요하다. 부족한 부분은 커뮤니티를 운영하면서 지속적으로 개선하면 된다.


내가 같이 일하고 싶은 개발자는...

교육자의 길을 걷기 시작한 지 벌써 6년이 되었다. 현장을 떠난 지 오래되어 현장의 감이 떨어진 만큼 같이 일하고 싶은 개발자의 상을 제시한다고 의미가 있을지 모르겠다. 하지만 내가 다시 회사의 팀장으로 돌아가 같이 일하고 싶은 개발자를 채용한다는 생각으로 써 본다.


소통, 협업 능력이 뛰어나지 않아도 괜찮다. 자신의 부족한 부분을 인식하고 개선하려는 의지를 가진 친구이면 좋겠다. 문제의 원인을 외부에서 찾는 것이 아니라 자신으로부터 해결책을 찾아 나가는 모습을 보이면 좋겠다.

기술적인 역량이 부족해도 괜찮다. 프로그래밍 자체를 즐기고, 전문가로서 성장하기 위해 노력하는 자세를 가진 친구면 좋겠다.

중요한 문제를 해결하지 않아도 괜찮다. 프로젝트에 항상 중요한 일만 있는 것은 아니다. 우리가 소홀하게 생각할 수 있는 부분의 문제점을 찾아 해결하는데도 관심을 가지는 친구면 좋겠다. 특히 업무 영역이 명확하지 않은 부분에도 서비스의 성공을 위해 관심을 가지고 적극적으로 참여하는 친구면 좋겠다.

삶에 약간의 여유와 유머가 있는 자존감이 높은 친구면 좋겠다.


너무 욕심이 많은가? 맞다. 내가 사람 욕심이 좀 많다.

요구 조건이 너무 많다면 "혼돈의 상태에서 질서를 만들기 위해 주도적으로 문제를 해결하는 자세를 가진 친구"면 좋겠다.

역시나 나는 욕심이 많나 보다.


자신이 꿈꾸는 삶이 있는가?

아무도 나의 꿈을 대신 실현해 주지 않는다.

내가 행동해야 한다.

자신의 영향 내에서 변화시킬 수 있는 작은 것부터 시작해보자.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari