IT 신입 개발자들에게 필요한 역량 - 컴퓨팅 사고

2018.04.05 08:00

최근에 네이버, 카카오, NHN엔터테인먼트 등 판교와 분당에 있는 몇몇 주요 IT기업의 시니어 개발자, 개발 리더, 팀장급 분들을 연속적으로 뵙게되면서 알게 된 것이 몇 가지 있다.


사람 뽑는 것이 쉬운 일이 아니지만, 대기업 또는 중견기업 이다보니 중소기업에 비해 상대적으로 사람을 뽑기는 쉬워 보였다. 적어도 지원자는 경쟁률이 생길만큼 오더라.


그래도 현업에서 필요한 사람들을 선발해야 하기 때문에 여러 가지 방법을 사용하는데, 적어도 코딩을 할 줄 안다는 전제로 선발과정을 진행한다고 한다.


당장 실무에 투입할 수 있는 인력을 원하다 보니, 단순히 코딩을 할 줄 안다가 아닌 문제 해결 능력을 갖춘 실무형 개발자를 원한다. 신입 개발자에게 너무 과한 요구가 아닌가 싶기도 하지만, 대부분의 IT 기업에서 개발자에 가장 중요한 자산이고 경쟁력이다보니 나름 고민을 해서 사람을 뽑는 것 같다.


서류 전형보다 우선 코딩 테스트를 거쳐서 사람을 뽑는 경우가 많은데, 일반적으로 자료구조, 알고리즘 등의 전산학 기초에 대해 충분히 학습하였다면 누구나 풀 수 있을만한 문제들로 구성한다(출처 : tech.kakao.com).


알고리즘과 자료구조는 기본 중에 기본이다. 단순히 정렬 알고리즘에는 퀵소트, 힙소트, 머지소트 증이 있고 자료 구조에 큐와 스택 등이 있다와 같이 정의만 알고 있어서는 안되는 것 같다.


알고리즘을 효율적으로 사용하기 위해 적절한 자료구조를 사용하게 되는데, 알고리즘 적용 대상이 되는 데이터를 이해하여 가장 최적의 알고리즘과 적절한 자료구조를 선택하여 구현할 수 있어야 한다.


이렇게 하기 위해서는 우선 알고리즘과 자료구조를 잘 이해해야 하고, 사용할 수 있어야 한다. 알고리즘이나 자료구조 모두 수학적 기반을 가지고 있기 때문에 익숙해지기 위해서 가장 필요한 것은 많은 문제를 풀어서 수학 공부를 하듯이 많은 코딩을 해보는 것이 좋다.


(주)그렙에서 운영하는 알고리즘 연습 서비스를 이용해보자. 하노이탑과 같은 문제가 레벨5 라고 하니 난이도가 높다고 할 수는 없지만, 그래도 제일 기초부터 차근차근 공부할 수 있을 것 같다.



아니면 (주)사이냅소프트에서 운영하는 한국어 오일러프로젝트 사이트도 있다. 수학적인 문제들을 프로그래밍으로 해결하는 퀴즈 풀이 사이트인데, 사이냅소프트에서 한글로 번역한 사이트를 제공하고 있다.



자료구조와 알고리즘에 자신이 있다고 끝이 아니다. 최근 기술 트랜드에 대한 이해가 필요하다. 클라우드, 독커, 블록체인, 머신러닝 등에 대해서 적어도 개요 수준의 이해를 하고 말로 설명할 수 있어야 한다.

이러한 기업들의 평가 기준을 살펴보면 요즘 초등학생 아이를 둔 학부모들의 가장 큰 관심사인 코딩 교육의 목적이나 배경과 이어져 있는 것 같다.

코딩 교육을 하는 것에 대해서 개인적으로 좀 우려가 되는 부분이 있지만, 앞으로 이 아이들이 자라서 살아가야 할 세상을 예상해보면 인공지능과 로봇이 일반화되는 세상이 될 텐데, 과연 어떤 능력이 인간에게 필요할까 생각해 보게 된다.

결국, 창의성과 문제해결 능력이 가장 필요할 것이다. 이중 문제해결 능력을 여러 가지로 이야기할 수 있지만, 현장에 필요한 능력은 다음과 같이 정리할 수 있다.


분해 : 문제, 자료, 과정을 해결할 수 있는 가장 작은 단위로 세분화
패턴/규칙 : 처리 과정, 데이터 등의 안에 있는 패턴이나 추세, 규칙 등 정의
추상화 : 패턴/규칙이 들어있는 모델을 만들어 일반화한 뒤에 반복
알고리즘 : 추상화나 처리를 효율적으로 처리하기 위한 최적의 솔루션 적용


이런 역량을 카네기 멜론 대학교의 Wing교수가 말하는 컴퓨팅 사고(computational thinking)라고 하는데, 컴퓨팅 사고는 컴퓨터과학자뿐만이 아니라 누구나 갖춰야 하는 기본적인 역량이라고 할 수 있다.



혹시 컴퓨터공학을 전공하고 IT회사에서 개발자로 일하는 것을 목표로 하거나 초등학교 아이의 코딩 교육이 신경쓰인다면 결국 창의성과 문제해결 능력이라고 표현할 수 있는 컴퓨팅 사고를 키우는 노력이 필요하다.

이러한 컴퓨팅 사고력을 높이려면, 문제를 정의하여 분석적으로 해결하고 실제 상황을 기반으로한 알고리즘 교육이 되어야 하고 평소에 문제의 현상만 보지 않고 지속적인 질문으로 본질적인 문제를 찾는 습관을 들이는 것이 중요하다.

이렇게 적어놓았지만, 과연 나는 이렇게 아이를 가르치고 있는지, 직원들을 교육하고 있는지 살펴보면 쉬운 일은 아닌 것 같다. 그러다 보니 우후죽순 코딩 학원만 늘어나는 것 같은데….

지금까지 이야기하는 것들은 뭔가 새로운 것 같고 지금까지 없었던 일인 것 같지만, 창의성이나 문제해결 능력은 컴퓨팅 사고력 이전부터 있었던 주제이고 질문이다.

지금까지 잘 알고 있었던 책을 많이 읽고 새로운 경험을 쌓고 뭔가를 만드는 일을 계속하라는 것에서 문제 정의, 분석, 해결 등의 좀 더 구체적인 학습을 해보라는 것이다. 소비만 하지 말고 생산을 하고 내 안에 새로운 것을 채워보는 일을 시작하는 것이 바로 컴퓨팅 사고력을 높이기 위한 시작이다.





마루날 Business 개발자, 개발자 역량, 문제해결 능력, 컴퓨팅 사고력, 코딩 교육

40대를 앞둔 개발자 A에게

2016.08.12 08:24

다른 업종은 정확하게 모르겠지만, IT 중에서도 SW 업계는 40대 개발자들이 이상하지 않을 정도로 개발자들의 나이가 점점 많아지고 있다. 아마도 몇 년 전부터 SW 업계로 신규로 유입되는 인력들이 줄어들면서 자연스럽게 개발자 중에서 40대 인력이 늘어난 것 같다


실제로 업계에서 현역 개발자로 있는 분들을 만나보면 요즘은 대략 45세가 현역 개발자로서 기로를 가르는 나이가 된 것 같다. 물론 몇 년 더 지나면 나이가 더 올라갈 듯하지만, 91학번이라고 쓰고 저주받은 IMF 졸업생(현역 복무 기준)이라고 읽는 72년생들이 현역 개발자 중에서는 가장 나이 많은 개발자들인 것 같다.


물론 회사마다 더 나이 많은 개발자들도 있을 수 있지만, 실제 현역으로 개발을 맡은 개발자 중에서 45세 이상은 찾기 어려운 것이 현실인 것 같다. 


그렇다면, 그 많은 개발자는 어디로 갔을까? '치킨 수렴의 법칙'에 따라서 모두 치킨집을 하고 있을까?


[출처 : JTBC 뉴스 2016. 4. 7 앵커브리핑]

[원본 영상 보기]



그런데, 이 치킨집 창업을 위해서는 비용이 필요하다.


[출처 : http://news.chosun.com/misaeng/site/data/html_dir/2016/02/26/2016022600170.html]


치킨집을 차리기 위해 기본적으로 필요한 가맹비와 인테리어비를 고려하면, 치킨집을 차릴 건물 임차료를 제하고도 적어도 6000만 원은 있어야 하지만, 초기 홍보비, 아르바이트 고용 등을 고려하면 적어도 1억 원은 있어야 시작할 수 있다. 


돈이 있다고 해도 한 번도 해보지 않은 장사를 제대로 할 수 있을까? 아무리 '치킨집 수렴의 법칙'이 거슬릴 수 없는 운명과도 같다고 하지만, 쉬운 길이 아니다. 그렇다면 어떻게 해야 할까? 얼마 전에 만난 78년생 97학번 개발자분에게 해 준 이야기를 풀어볼까 한다.


1. 나이보다 본인이 가지고 있는 역량이 중요하다


뭐 누구나 다 아는 이야기이지만, 기술이 발전하고 시장환경이 변화하는 것에 발맞추어 본인 스스로 계속 발전해야 한다. 30대가 지나면서 새로운 것보다는 익숙한 것이 편해지는 것이 사실이지만, 아직 인생은 반이상남은 시점이니 새로운 것을 찾아보고 받아들여야 한다. 회사가 개인을 책임질 수 없는 책임지지 않는 시대에 가만히 있으면 선택할 수 있는 것이 적어진다.


단순히 자료를 찾아보고 책을 읽는 것도 좋지만 충분하지 않다. 내가 알고 있거나 관심이 있는 것은 대부분 성숙한 기술일 가능성이 크다. 외부의 교육이나 콘퍼런스도 찾아서 들어보고, 유명한 온라인 강의도 수강해 보고, 대학원을 다니는 것도 고려해보자. 좀 더 적극적으로 새로운 지식을 받아들여야 한다. 괴로운 일이기는 하지만 나이가 들수록 가장 필요한 것은 공부이다. 



2. 회사가 어떻게 돌아가고 회사에서 돈은 어떻게 벌고 있는지 알아야 한다.


개발자는 개발에 대해서는 전문가이다. 하지만, 회사를 오래 다닌 만큼 회사 운영이나 사업에 대해서 잘 모른다. 영업이나 전략기획 담당자가 아니므로 모른다고 할 수도 있지만, 적어도 회사라는 조직이 어떻게 돌아가는지, 내 월급은 어떻게 지급되고 있는지, 우리 회사가 돈은 어떻게 벌고 있는지는 알고 있어야 한다.


단순히 무슨 솔루션을 파는 사업을 한다. 무슨 서비스를 공급하는 사업을 한다는 정도가 아니라, 실제로 어떻게 시장을 설정하고 고객을 찾고 경쟁을 해서 솔루션을 납품하는지, 서비스 이용 고객을 어떻게 모으고 사용자들로부터 어떻게 과금을 하는지 등에 대해서는 잘 알고 있어야 한다. 


개발 업무에 대한 전문성은 가지고 있지만, 개발자가 맡은 개발 업무는 전체 회사 운영과 사업에서 일부분이다. 나무를 잘 아는 것은 좋지만, 숲은 볼 줄 아는 눈이 필요하다. 이제는 돈을 어떻게 버는지 알아야 한다.



3. 네트워킹에 익숙해지자


개발자들은 대부분 오랫동안 진득하니 엉덩이를 붙이고 문제를 해결하고 기능을 개선하기 위해서 생각하고 고민하고 끝까지 소스를 파는 사람들이다. 어쩌면 타이태닉호와 마지막을 함께했던 악단들과 같은데, 회사나 외부의 변화와 흐름에 둔감하고 엉덩이가 무겁기 때문에 웬만해서는 회사를 옮길 생각도 하지 않는 사람들이다.


나도 개발자였고 사람들 만나는 것이 아직도 곤혹스럽고 쑥스러운 사람이지만, 열심히 네트워크를 만들고 관리하려고 한다. 그런데 왜 개발자들은 네트워킹하는 것이 어려운지 이해가 안 되었는데, 재미있는 이야기를 들었다.


개발자들끼리는 서로 조금만 대화를 나누어도 서로가 서로에 대한 수준을 알 수 있다고 한다. 그러다 보니 네트워킹을 하다 보면 내 밑천이 드러나게 될 것 같아서 주저한다고 한다. 물론 그럴 수 있겠지만, 내가 제일 뛰어난 개발자가 아니면 어떠한가? 배우고 나누다 보면 나도 성장할 것이다. 더이상 주저하지 말고 네트워크를 만들고 관리해보자.



4. 개발자가 아닌 사람과 커뮤니케이션을 잘하자


개발자가 포함된 미팅을 하다 보면 매번 느끼는 것이지만, 개발자들은 쉬운 말로 커뮤니케이션하는 것을 잘하지 못하는 것 같다. 전문용어를 풀어서 비 개발자가 이해할 수 있도록 눈높이를 맞춘 커뮤니케이션을 할 줄 아는 개발자를 거의 본 적이 없다.


아마도 풀어서 이야기하다 보면 시간이 오래 걸리고 오해의 소지도 생길 수 있다고 여겨서 그러는 것 같은데, 결국 일은 함께하는 것이기에 적어도 개발자가 아닌 사람과 커뮤니케이션을 할 수는 있어야 한다. 


많은 회사에서 개발자만 혼자 보내서 고객 미팅을 하거나 협력사 미팅을 하게 하는 경우는 거의 없다. 얼마나 비효율적인가. 적어도 내가 이제 경력도 쌓이고 사회생활도 했다면, 영업이나 기획자 없이도 커뮤니케이션할 수 있다면 나만의 차별화된 경쟁력을 갖추게 된 것이다.



5. 새로운 일을 할 준비가 되어 있어야 한다.


가끔 풀 스택(Full Stack) 개발자를 추천해 달라는 이야기를 듣는다. 풀 스택 개발자는 OS부터 시작해서 DBMS, Web/WAS, 클라이언트 프로그램까지를 다룰 줄 아는 개발자이다. 


보통 웹 개발을 오래 하신 분 중에서 이런 분들이 가끔 있는데, 일반적인 웹 서비스들이 여러 OS 위에 대부분 DB가 연동되고 Web/WAS에서 움직이는 서버사이드 프로그램(여기까지 보통 Back-End라고 하기도 함)과 웹 브라우저에서 동작하는 클라이언트단 프로그램(여기를 Front-End라고 하기도 함)까지 개발하고 활용할 수 있는 개발자를 말한다.


그런데, 요즘은 웹 개발과 모바일 앱 개발을 모두 할 수 있는 전지전능한 개발자를 풀 스택 개발자라고 부르기도 하는데, 풀 스택 개발자는 모든 일을 할 줄 아는 일당백이라는 의미도 있지만, 온갖 일을 다 맡아서 해야 하는 고된 일을 하는 사람이라는 뜻도 된다. (일당백이라 돈을 더 많이 주는 것도 아니어서 개발자들은 이 말을 별로 좋아하지 않는다. 따라서 구인하시는 대표님들은 이 말을 사용할 때 주의하는 것이 좋다.)


중요한 것은 플 스택 개발자가 되라는 것이 아니라, 계속해서 서비스 환경이나 사용자 환경이 변화함에 따라서 새로운 기술을 익히고 적용하고 활용할 수 있는 유연성과 적응 능력을 갖추고 새로운 요구에 대응할 수 있어야 한다는 것이다.


나이가 들어서 뒷방 늙은이 취급받는 것만큼 서글픈 것은 없다. 개발자로서 힘든 일 중 하나는 개발자마다 스스로 가지고 있는 전문 기술이 있는데, 이 기술이 유행을 타서 밀려나거나 새로운 기술에 의해서 대체되는 순간 내 기술력은 리셋이 되는 경우가 많다는 것이다.


다양한 업무 경험을 갖추고 있다고 해서 현실에 안주해서도 안 되고, 트랜드를 쫓아다니다가 날라가서도 안 된다. 빠르게 흘러가는 트랜드에 휩쓸리지 않고 내 길을 갈 수 있는 힘이 필요하다. 


요즘은 재수가 없으면 100살까지 산다는 세상인데, 40세라고 해도 일반적인 기대수명을 고려하면 앞으로 40년은 더 산다고 할 수 있다. 나이가 40이라고 한다면, 이제는 인생 후반전을 새롭게 준비해야 할 때이다.





마루날 Business 40대 개발자, IT, sw개발자, 개발자, 개발자 경력, 경력 관리

숨어있는 인재를 모십니다.

2009.03.17 15:08
아시는 분은 아시겠지만, 저는 인터넷 공간의 브랜드/제품/서비스 평판 모니터링, 인터넷 공간을 통해서 드러나는 고객의 브랜드/제품/서비스 만족도/선호도 조사 등을 대행하여 자동화해서 수집/분석하는 BuzzInsight.net라는 서비스를 운영하고 있습니다.

요즘같이 일자기 구하기 어려운 시절에 연구원을 모시려고 하고 있습니다. 희망하는 연구원의 스펙은 다음과 같습니다. (정말 모시기 어려운 분들인 것 같아요)

K분석엔진 개발 O명
- 컴퓨터공학 (혹은 동계열) 전공
- C++/Java 개발 능력 필수
- 한국어 자연어처리 연구/프로젝트 유경험자 우대
- 석사이상 우대
- 경력 10년 미만

J분석엔진 개발 O명
- 일본어 독해 능력 필수
- 일본어 문법 이해, 일본어 형태소 분석 가능자
- C++/Java 개발 가능 우대
- 경력 10년 미만

입사를 희망하시는 분은 오른쪽 사이드바에 나와있는 이메일 주소로 이력서와 자기소개서를 보내주세요. 그리고 질문하실 내용이 있으시면 이 포스트에 비밀댓글로 남겨주시거나 메일로 문의하시면 성심성의껏 답변드리겠습니다.

피터 드러커님이 '자기경영노트'에서 강조하신 것 중 하나가 인재를 볼 때 그 사람의 단정과 부족함을 볼 것이 아니라 강점과 장점을 살피라는 이야기가 있습니다.

저희는 강점과 장점을 보려고 노력하는 회사라고 말씀 드릴 수 있을 것 같구요. 저와 함께 큰 꿈을 품고 최선을 다해 보지 않으시렵니까?

(추천도 받습니다. 추천하신 분이 입사하시게 되면.. 제가 ... 크게....음음음 ^^)


 마루날의 雜學辭典|잡학사전을 RSS리더로 편하게 구독해서 보세요~

마루날 Business C++, java, 개발자, 구인

  1. 검색엔진 관련 업무를 해보신 분이면 충분히 가능 할 듯한데..
    제가 관련 일을 1년 가까이 하긴 했지만..
    현재 직업이 있는지라 지원은 힘들고^^;;

    암튼 좋은 인재 얻으셔서
    하시는 일 잘 되시길 바래요 ^-^

  2. 관련 일을 해보셔서 아시겠지만,
    정말 이런 분들이 씨가 말라서요 ^^

    지금 저희 사업부에도 몇명있지만, 충원을 해야해서
    모시려고 하는데 쉽지가 않네요 ^^;;;

  3. Blog Icon

    비밀댓글입니다

  4. 경력자가 아니어도 됩니다. ^^
    다만, 경력자의 경우 우대할 수 있겠죠?

  5. Blog Icon

    비밀댓글입니다

  6. 넷.. 구해습니다.