영국생활 & IT2014.01.21 20:48

위대한 한국 개발자!

그래도 외국에 나와서 공부를 하고 또 일을 하게 될 때까지는 나름대로 나는 한국 개발자다 라는 자부심이 있었다. 야근을 불사르며 어떤 플랫폼이든 언어를 두려워하지 않고 적응하며 코드를 작성해 나간다. 그래서 다른 나라에서 하루에 딱 8시간씩만 일해온 그 개발자들 보다는 하루 최소 10시간 이상을 개발에 전념해 온 한국의 개발자들이 당연히 나을 것이라고 생각했다.

하지만, 요즘에는 그 자부심에 대해서는 많이 사라진지 오래다. 어떤 면으로 보면 주니어 즉, 초급 레벨의 개발자라면 큰 차이는 없어보이지만 시니어 레벨이 된다면 그 확연하다. 국내에서 중/고급 개발자라면 어떤 사람을 떠올릴까? 어느 플랫폼을 확실히 이해하고 있고 스스로 설계가 가능하면서 프로젝트를 리드하고 문제가 생기면 풀어 줄 수 있는 사람 정도가 아닐까? 물론 객관적으로 봤을때 말이다. 

하지만 영국에서 시니어 개발자라고 하면 한국의 개발자의 레벨을 넘어 SOLID 컨셉에 기반한 OOP의 개념과 수많은 패턴을들 미리 이해하고 있고, 어떤 패턴을 어떤 상황에 도입해야 나중에 수정사항이 생겼을 때 문제없이 코드를 변경할 수 있을지를 보게 된다. 서비스적으로는 항상 트래픽을 고려하여 SOA 관점으로 서비스를 다양한 테스트를 통해 성능을 진단한다. 그리고 문화적으로는 스크럼 마스터라는 자격증이 일찍이 유행할 정도로 애자일이 잘 자리 잡았기에 시니어 개발자들은 XP나 스크럼을 도입하여 좋은 개발문화를 바탕으로 튼튼하게 개발한다.

아무리 같은 시니어 개발자라고 해도 그 수준이 확연히 차이가 난다. 한국에서 실력이라고 하면 개발 속도에 많이 맞추어지는 경향이 있다. 적어도 실력있는 개발자는 일정을 밀리지 않고 잘 끝낼 수 있어야 한다. 하지만 영국의 시니어 개발자라고 하면 주니어 개발자들이 막힌 문제들을 잘 풀어 줄 수 있고 속도보다는 얼만큼 코드를 객체지향 관점에서 잘 작성했느냐에 따라서 많이 달라지게 된다. 아쉽게도 국내는 Agile과 TDD/BDD 와 같은 개발 문화에 대해서는 아무래도 갈 길이 먼 것이 사실이다. 물론, 최근의 많은 스타트업들이 좋은 개발 문화를 도입하려는 시도가 있기에 희망적이기는 하다.


무엇이 어떻게 잘못되었길래 이런 문화의 차이가 만들어 졌을지를 생각해 보았다.


먼저 국내의 90% 이상을 차지고 하고 있는 S.I의 시장 점유율이 큰 문제다. 한국에서 S.I. 프로젝트들이라고 하면 바로 중요시 되는 것이 바로 개발 기간과 프로젝트 마감 날짜이다. 설계가 어떻든 무엇을 어떻게 요구했든 기간내에 끝내느냐 못 끝내느냐의 이슈에 따라서 개발자들을 야근으로 몰고 간다. 또한 창의적인 일 보다는 생산성에 최적화된 솔루션을 기반으로 그저 복사 & 붙여넣기로 프로젝트를 이끌어 가는 것이 대부분이다. 아니 주변의 SW회사들을 보더라도 그런 경우가 많았다.


영국은 문화에서부터 살펴보면 사람들은 작은 불편이 있어도 참으면서 살아가는 것에 익숙하다. 집의 가전제품이 고장나도 인터넷이 안되도 전화가 안터져도 그러려니 하면서 맞추어 살아간다. 그렇기 때문에 영국에서의 많은 기업들도 자사 IT 환경을 구축하기 보다는 SW를 구매하거나 이미 만들어진 시스템들을 도입해서 쓰는 것을 많이 선호한다. SAP이나 Dynamic 그리고 세일스포스와 같은 IT 서비스들이 이미 여러 기업들을 거쳐 큰 비중을 차지하고 있기도 하지만 전문 분야일수록 거기에 맞는 제품을 또 적절히 잘 사용하기도 한다.


이런 기업들의 문화 때문에 S.I가 죽고 SW 회사들은 더욱더 탄력을 받기 시작한다. 나라의 입장에서도 매일 똑같은 것을 뜯어 고치거나 비슷한 것을 찍어내는데 돈을 낭비하는 것보다는 잘 만든 SW들을 브랜드화 시켜 세계로 가지고 나가는 것이 물론 더 경쟁력이 있을 것이다. 영국의 대부분의 솔루션 회사들은 뉴욕에 지사들을 가지고 있다. 언어가 같아서 더 쉽게 확장이 가능할 수도 있겠지만 그만큼 소프트웨어도 확장성을 고려해서 만들어졌다는 것이다.

이런 영국의 SW회사들을 보자면 당연히 제품은 잘 테스트 되어야 하고 또한 향후의 기능확장에도 큰 제약이 없어야 한다라는 원칙이 세워지기 때문에 개발자들은 보다 객체 지향적인 코드와 패턴으로 설계될 수밖에 없다. 테스트 팀(QA)이 무엇보다도 중요하고 더불어 개발자 또한 대부분 테스트 코드 작성에 관여하고 있고 자동테스트를 기본으로 셋업한다.


이런 영국에서 일하고 있는 나의 코드를 보면 아! 나는 가짜였구나 라는 생각이 쉽게 가시지 않는것이 사실이다.

Posted by 박경훈