Karen
14k
2016-05-19 11:47:12
16
11980

개발자와 알고리즘 테스트 by 빈꿈




www.emptydream.net 





♣에디터 : 아래는 빈꿈님의 코멘트입니다. :)


지금 세상에 과연 개발자가 알고리즘들을 세도 코드 정도로라도 구현할 수 있을 만큼의 능력을 가져야만 할까라는 것, 옛날에도 가끔 심심하면 논란이 되곤 했던 문제다. 어떤 어조로 꺼내느냐에 따라 큰 논란이 일거나 비난이 일어나기도 하는 문제고.
 
사실 요즘은 세도 코드(pseudo code)가 뭔지도 모르는 개발자들도 꽤 있다. 신입이 아니라 경력자들 중에도. 근데 과연 이런 현상이 '한심하다'라고 생각할 문제일까, 시대의 변화일까는 시간이 지남에 따라 한 번씩 가끔 생각해 볼 문제다.
 
일단 내 입장은 알고리즘의 기본 원리나 개념 정도는 아는 것이 더 도움이 된다는 입장이지만, 시대가 시대인 만큼 사이언스와 엔지니어링은 슬슬 구분해 나갈 때가 됐다고도 생각한다.
 
다 생략하고, 만약 회사에서 어떤 테스트로 개발자의 자질을 시험해보고 싶다면, 그곳에서 필요로 하는 사람이 사이언티스트인지 엔지니어인지부터 먼저 규정을 해야하지 않나 싶다. 꼭 알고리즘 문제가 아니더라도 엔지니어를 위한 테스트도 많이 있으니까.


3
1
  • 댓글 16

  • linuxwife
    284
    2016-05-19 12:02:58

    세도 코드??? 의사코드 말하는 건가?? 그걸 세도코드라고 해요? 슈도가 아니고???

    0
  • neo_code
    541
    2016-05-19 13:07:40

    발음하기 나름이겠죠. 외국어니. 저도 슈도라고 알고 있긴했지만...

    저도 저런 문제애 대해 고민해보고 친구랑 애기도 나눠봤지만 전 구지 알고리즘 필요없다 입니다.

    그림 처럼 전 차라리 쿼리로 소트를 하던 stl sort를 하던 문제 해결에 초첨을 맞춰야 한다는거죠.

    물론 원리를 무시하잔 애기는 아닙니다. 원리를 알아야 적재적소의 알고리즘을 쓰는거니깐요.

    다만 그런 사소한(성능이나 기타 문제가되지 않는다면)거에 시간 낭비하지 말고 비지니스로직에 시간을 더 쓰는게 회사에 도움이되며 자기에게도 도움이 된다고 생각합니다.(집에 빨리 가야죠.....)

    저런 알고리즘의 정말 연구소나 협회에서 해야죠. 그리고 원리 공부는 집에서 혼자 해야 된다고 생각합니다.

    전 일을 함에 있어 문제 발생 시 대처 능력(망치가 필요한데 주위에 망치가 없다면 망치를 만드는거 보다 굴러가는 돌을 사용하는게 낫다고 봅니다.)이 더 직장인에게 필요하다고 봅니다.

    그리고 개발자 또한 직장인이고요.

    1
  • 닥츄
    88
    2016-05-19 17:39:59

    담당업무에 따라 다를 거 같습니다.

    로직(분기)만 태우는 게 있을 수도 있고

    여러 라이브러리의 함수들을 알고리즘을 시킬수도 있으니깐요.


    케바케 일듯합니다.

    0
  • baltasar
    5k
    2016-05-19 17:53:03

    고용주가 코딩테스트를 원한다면 해 줘야 되겠죠. 고용주는 고용을 위해 취업희망자에게 인권을 제외한 모든 것을 요구할 수 있습니다. 심지어 사생활과 관련된 개인정보도요.

    다만 그렇게 채용된 인력은 해당 고용주의 테스트와 요구사항에 완벽히 맞춰진 맞춤인력이므로 취업준비시에 해당 고용주 전용맞춤인력이 되기 위하여 다른 사업장에는 통하지 않는 많은 노력과 시간, 비용을 지불하였을 것입니다.

    시업이 요구하는 공인성적증명과 테스트는 대상자의 평범하고 범용적으로 통하는 능력을 살피는 것이 아니라 다른 취업자와의 차별적인 결정적 능력을 보는 것이기 때문에 나름의 시간과 비용, 노력을 들여 준비하여 순위 내에 들어야 하기 때문입니다.

    결과적으로 취업준비생은 그 준비지식을 다른 사업장에 활용할 곳이 희박하므로 고용주는 채용된 인력의 수행 결과물이 자기 기대에 미치지 못한다 하여 최초 입사일로부터 일정 기간 이내에는 불리한 처우와 임금체불을 하여서는 안되고, 비인간적 행위로 자발적 퇴직을 유도하여서도 안돠며 차후에 해고를 원하는 경우 12~24개월치의 위로금과 재취업준비금을 보상지급하며 권고사직처리하여 실업급여를 수급할 수 있도록 책임을 다 하여야 합니다.

    1
  • 구글그램머
    867
    2016-05-19 22:28:52

    알고리즘.. 도... 배워야하는데

    만화 너무 기엽네요 ㅋㅋ

    0
  • 가람
    422
    2016-05-19 23:34:42

    사실 개발자의 역량을 측정할 명확하고 공정한 기준을 만들기 어려운게 사실 입니다.

    그래서 그나마 평가 기준이 분명한 자료구조/알고리즘 부분을 평가하려고 하죠.

    근데 솔직히 실무와 너무 많이 떨어져 있고 사실상 익숙하지도 않습니다. 개발자들에게 많은 부담이죠.

    자료구조/알고리즘은 고안 되었을 당시 연구원/교수들이 많은 지원(?)을 받으며 연구 개발 했을 텐데

    그저 이런식으로 하면 좋다라고 주입식으로 배운 개개인의 입장에서 보면 터무니 없는 것을 요구하는게 아닌가 싶습니다.

    단순이 비지니스 로직을 구현하는 개발자들이 잘한다는 거 자체가 어불성설이죠. (R&D 팀에게는 필요하죠 ㅎㅎ)

    좋은 개발자를 뽑는 혁신적인 방법을 한동안 찾지 못할 것이고 우리는 바쁜 일정에서 시간을 내어 자료구조/알고리즘 기술 면접 준비를 해야겠죠. (사실상 자료구조/알고리즘/OS/네트워크/보안 등 수능보다 어려운 듯합니다^^)

    0
  • 빡카
    2016-05-20 00:19:44

    이런 소리나 하고 있으면서 한국형 닌텐도, 한국형 알파고, 한국형 운영체제 만든다고 하고 있으니 될일도 안되죠.

    언제부터 개발이 SI, 웹개발만 있었답니까?  알고리즘 같이 가장 근본적인 부문을 그렇게 우습게 여기니 SI땔감들만 양산되는거죠.

    유명 오픈소스들이 알고리즘 무시하고 작동만 되라 그런식으로 만들어졌습니까. 거기엔 비지니스 코드만 있던가요. 이러니 오픈소스 사용율은 세계 최고면서 제대로된 오픈소스는 손에 꼽는 한국이 되는 겁니다.

    SI중심의 기형적인 한국 소프트웨어 산업이 문제인데 알고리즘 같은 기초를 중시하는 문화가 그것도 한국에서 제법 큰 커뮤니티에서 이런식으로 천대받다니 한국은 아직도 멀었군요.

    4
  • baltasar
    5k
    2016-05-20 01:03:33

    그럼에도 불구하고 기업들이 코딩테스트로 인재를 평가할 때에는 몇 가지 사항을 지켜주어야 합니다.


    1. 암기회피

    문제은행화를 방지하기 위하여 전통적인 자료구조(큐, 스택, 트리, 링크드 리스트 등)를 사용하지 않고 응용된 코딩문제를 제공해야 합니다. 분별력의 극대화를 위하여 문항은 5가지 이상으로 해야 합니다. 대표적으로 모 업체의 당구공 쿠션 로직 구현, 엑셀 격자번호 생성, 성수/비성수기 경유지역 항공권 계산 등이 제대로 된 코딩문제라 하겠습니다.


    2. 원빌드 원칙

    필기로 작성된 코드는 그대로 에디터에 옮겨적어 어떠한 오류도 없이 컴파일되어야 합니다. 컴파일에 오류가 있으면 그것은 입코딩을 글로 옮겨놓은 것에 불과하므로 무조건 0점 처리 되어야 합니다.


    3. 엄격한 정답

    수 만개의 결과값 중 단 하나라도 틀리면 전반적으로 옳은 로직으로 보이거나 오타로 보이더라도 그것은 무조건 틀린 답입니다.

    100점 아니면 0점만 존재해야 합니다.


    4. 과목별 비중의 공개

    몇 몇 업체들은 꽤 큰 업체인데도 상당 비용이 자신들에게는 들지 않고 취업준비생에게만 부담된다는 이유로 일단 문제를 내고 보자는 식으로 문제를 내서 취업준비생들에게 시간적 비용적 손실을 입히는 방식으로 신의를 훼손시키고는, 막상 채용결정 시점에서는 자신들이 봐 둔 인재가 백지를 제출해 0점을 받아도 합격시키고 반면 코딩테스트에 100점을 받은 인재는 불합격 시켜서 코딩테스트 결과를 반영하지 않는 경우가 많습니다. 학력, 토익, 코딩, 자기소개서 등 과목별 점수 비중을 공개하고 점수를 발표하여 투명한 채용을 실현하여야 합니다.

    국가사업도 그렇듯이 95점이 가격점수이고, 5점이 기술점수이므로 제안서 품질에 쓸데없는 노력을 들이는 기업들은 없으며 제안서를 대충 작성하여 무조건 낮은 가격에 입찰을 해 일을 따냅니다. 마찬가지로 기업들도 과목별 비중을 공개하고 합격점수도 공개해야 합니다.


    물론 기업들이 그런 노력을 할 일은 없을테니 취업준비생들 스스로가 그런 기업들인지 아닌지 사전에 확인하는 능력을 길러서 그런 기업에 지원하여 시간과 비용을 낭비하지 않도록 노력을 하셔야 하겠습니다.

    1
  • warpEngineDev
    1k
    2016-05-20 04:44:14

    빈꿈님과 100% 동감합니다. 

    하지만 고용주 입장에서 사람을 평가할 방법이 딱히 없다보니... 뭐 알면서도 울며겨자먹기 식으로...

    0
  • Dive_Drink_Develope
    3k
    2016-05-20 11:23:53

    저는 정반대의 생각을 가지고 있습니다. 물론 정렬을 물어보는건 좀 웃기지만....


    단순히 알고리즘테스트라는게 학교에서 배운 자료구조를 기본적으로 이해하고있는지부터

    프로그램을 로지컬하게 구성해낼수 있는가를 판가름하는 척도라고 생각하기 때문입니다.


    비즈니스로직... 참 좋은 말인데... 그 데이터 가공이 심플하면 초보들 시켜도 되죠.

    근데 로지컬씽킹이 잘 되는사람이 아니면 복잡도에 비례해서 코드는 지저분해질수밖에 없고 그런 맥락에서 알고리즘은 분명히 중요한 요소라고 봅니다.


    //사실 그런맥락에서 전 손코딩은 별로 안좋아합니다. 논리를 구성할 능력이 되는지만 판별할수 있으면 수도코드로 풀어내는 정도면 충분하다고 봅니다. 


    0
  • 하늬바람
    483
    2016-05-20 23:25:15
    0
  • 전재형
    4k
    2016-05-23 11:07:10

    알고리즘은 구체적 알고리즘도 있습니다. 하지만 현업에서는 사고하는 방법에(문제를 푸는 방법) 더 가까운거아닌가요.


    재귀식. 백트래킹. 다이나믹 프로그래밍....


    jpeg 알고리즘을 이해하거나, btree의 변형에 대해서 공부할 필요까지는 없다치더라도. 개발자적인 사고에는 필요하다 것에 한표..


    학생때.. 리커젼을 처음 접하고 받았던. 어떤 사고의 충격 같은게 계속 떠오르네요 ㅋㅋ....

    0
  • nainside
    174
    2016-05-23 23:39:15

    논리적 사고를 확인하기 위해 중요하긴 하지만

    정말 중요한건

    무엇을 만들것인가?

    어떻게(비지니스로직) 만들것인가?

    가 아닐까요??

    경력이 좀 쌓이면 단순 코딩만 할 일은 없죠

    요구사항을 분석해야 하고 어떻게 풀어나갈지 설계하고 비즈니스 로직을 고민해야하죠

    만약 DB에 접근할수있는 내부 개발자나 DB관리자들에 의한 DB위변조를 사전예방 해달라는 요구사항을 구현하는데 알고리즘이 중요할까요?

    운영DB update는 내부망에서 특정 프로그램만 이용해서 특정 권한 사용자(예,담당주무관)가 로그인해서 처리하게 하면 된다 라는 답변을 생각했다면 반쪽짜리밖에 안된다 생각합니다.  개발자와 담당자가 서로 짜고 나쁜맘 먹으면 얼마든 가능한 일이니까요. 

    요즘은 알고리즘보단 저런 요구사항에 대한 분석 해결 능력이 더 중요하다고 생각합니다


    그 다음으로는 무엇을 만들어야 할지... 요구사항을 만들어내는 단계가 중요한거 같습니다. 예산 10억이 있다면 무엇을 만들건가요? 몇MM나 들어갈지? 물론 차장 부장급의 사람들이 고민하겠지만 그들도 개발자 출신이죠. 언젠간 우리도 해야할...

    이제 왠만한건 웹 서비스 형태로 제공되며 SI 시장이 커지고, 많은 인력이 필요하다보니 알고리즘 모르는 사람들이 많아지는건 사실입니다 

    프로젝트하다보면 알고리즘을 필요로 하는 코딩은 공통파트 개발자 1~2명이 주로 개발하고, 나머진 대부분 비지니스로직 위주로 코딩하게 되죠.


    알고리즘만 알고 문제 해결 능력이 없는 사람, 사용자 편의성 등은 고려하지 않는 사람은 언젠간 경쟁력이 뒤쳐질거라 생각합니다 


    고객은...실 사용자는...알고리즘 중요치 않습니다  

    물론 게임같이 알고리즘, 성능이 중요한 분야는 다르겠지만요...

    0
  • 전재형
    4k
    2016-05-24 00:45:16

    nainside 특정 분야의 알고리즘이 아니라. 문제 해결에 대한 사고의 방식이라고 알고리즘을 다시 읽으면 어떨까요? ㅎ... 

    알고리즘이라는 말안에 문제 분석이라는 말이 포함되어 잇는 것은 아닐런지요?


    아래는 위키백과에서...

    알고리즘(라틴어독일어: Algorithmus, 영어: algorithm 알고리듬[*]IPA[ǽlɡərìðm])이란 어떠한 문제를 해결하기 위한 여러 동작들의 모임이다. 유한성을 가지며, 언젠가는 끝나야 하는 속성을 가지고 있다.


    알고리즘 안에 성능만 존재하는 것은 아닌것같습니다.

    1
  • WindTiger
    887
    2016-05-26 08:55:57

    우리나라 소프트웨어개발의 문제인것 같네요

    0
  • rrr
    226
    2016-07-04 02:44:47

    아직 학생이지만, 알고리즘이 실제 개발하는 능력과 다르다고 생각해서 평가기준으로 옳지 않다고 생각하는 사람들이 많은 것 같은데요, 저는 그렇지 않아요.

    제 생각에는 알고리즘은 문제해결 능력입니다. 외워서 할 수 있는 문제도 아니고 실제 개발하는 능력과 다르지도 않습니다. 알고리즘은 문제 해결 능력 혹은 성장 가능성 그 자체라고 생각합니다.

    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.