본문으로 건너뛰기

소프트웨어 개발 능력은 정량적으로 측정이 왜 어려울까? (feat. 전공자가 바라보는 정보처리기사 실기)

 · reading-time-plural · 

정보처리기사를 공부하다 보면 왜 코딩 능력 보다 단어를 열심히 암기해야 합격할 수 있는 자격증인지 생각하게 됩니다. 그럼 전부 코딩 문제로 출제를 하면 되연 문제가 없을까요? 한번 생각해 봅시다.

TL;DR

  1. 정처기 실기를 공부하면서 왜 코딩 능력 보다 단어를 열심히 암기해야 합격 여부가 판가름 되는 자격증인지 이게 과연 IT 분야에서 변별력을 가질 수 있는 자격증인지 생각을 하게 되었다.
  2. 그래서 정처기 실기를 전부 코딩 문제를 내면 정량적인 평가 방법일 까?라는 생각을 하게 되었다.
  3. 그렇게 생각을 해보니 소프트웨어 개발 즉, 프로그래밍이라는 것을 정량적으로 평가하는 것은 어렵다는 결론이 나왔다.

서론

note

이하 "정보처리기사" 용어를 "정처기" 라고 말하도록 하겠습니다.

IT 업계에서 정보처리기사 유무는 크지 않다는 것으로 알고 있습니다.

있으면 좋지만 없어도 큰 문제가 없다.

그러한 이유는 여러 가지가 있겠지만 필자가 생각하는 이유는 아래와 같다고 생각합니다.

  1. 기사 시험임에 불구하고 관련 학과를 졸업하지 않은 비전공자도 시험에 응시할 수 있다.
  2. 개정 이전까지는 합격률이 높아서 변별력이 없었다.
  3. 정처기라는 자격증이 소프트웨어 개발 능력을 모두 대변하기엔 실무와 괴리감이 있다.

그리고 개발자라는 직업을 고려할 때 많이 듣는 말로는 평생 공부해야 하는 직업이다 라고 말합니다.

이 말의 의미는 공부할 것이 많다는 것도 의미하지만 그만큼 개발 패러다임이 많이 변한다는 것도 내포합니다.

1년 전 공부한 게 지금은 쓰이지 않는다...?

이렇게 계속 변하는 학문을 정해진 시험 범위에서 시험을 통해 측정이 가능한가 싶기도 합니다.

물론, 기초적인 CS의 경우는 측정이 충분히 가능할 것입니다.

필자도 정처기 실기를 준비하고 있는데 여러 정보를 얻기 위해서 수제비 카페를 주로 방문합니다.

근데 여기서 전공자분들 중 정처기 시험에 대해 불만의 목소리를 볼 수 있었고 저 또한 정처기가 정말 전공자가 유리한 게 맞는가? 유리하지 않다면 왜 유리하지 않는 것인지 그럼 유리하게 시험 문제를 전부 코딩으로 내보면 어떨까? 라는 내용으로 생각을 공유하면 좋겠다 싶어서 글을 작성해 봅니다.

본론

정처기 시험은 어떻게 진행되는가?

우선 정처기 취득을 위해서는 필기실기 의 과정을 거쳐야 하는데 필기 의 경우 객관식이므로 개념에 대해 이해한다면 편하게 풀 수 있기 때문에 넘어가도록 하겠습니다.

문제는 실기 인데요 이해보다 암기가 필요한 부분이 훨씬 많습니다. 실무에서 많이 사용될만한 용어도 대거 있지만 별로 사용되지 않거나 이런 것도 있구나 싶은 내용과 단어도 많습니다.

하지만 합격을 위해서는 이런 것도 있구나 하고 넘어갈 수 없습니다. 단답형과 약술형을 많이 맞추기 위해서는 많이 암기할수록 합격률이 높아지기 때문입니다.

결국 똑같이 새로운 단어를 외워야 하기 때문에 전공자이라서의 큰 메리트는 사라집니다.

그럼 역시 전공자라서 메리트라면 코딩, SQL 문제라고 생각하는데 20문제 중 평균적으로 6개 정도는 출제되므로 출제 비중이 높은 것을 알 수 있습니다.

그렇다고 해서 전공자가 유리한가?

코딩, SQL 문제 비중이 높다고 해서 전공자가 유리한 가? 라고 생각하면 유리하긴 하지만 큰 상관은 없다고 생각합니다.

나오는 난이도가 쉬운 편이고 그것을 풀었다고 해서 개발 능력이 입증되는 것은 아니기 때문입니다.

그러면 정처기 실기의 경우 소프트웨어 개발 능력 입증을 위해서 문제를 전부 코딩, SQL로 출제하고 난이도를 높이면 좋지 아늘까?라는 생각을 할 수 있었습니다.

전부 코딩, SQL 문제로 출제해도 문제일 것이다.

전부 코딩, SQL 문제로 출제하면 보이는 문제점은 답안 작성도 어렵지만 책점 기준도 모호할 것이라고 생각합니다.

당장 답안 작성만 생각해도 스트레스일 거 같은데 대학에 가면 주로 요구사항을 주고 손 코딩 문제를 보게 됩니다.

손 코딩을 할 때 중요하게 생각하는 건 로직, 반복되는 재사용 코드 줄이기 이런 것이 아닌 세미콜론은 잘 적었는지, 오타는 없는지 이런 것들로 점수가 판별되는 경우가 많습니다.

실제 소프트웨어 개발 능력과 없는 것으로 스트레스를 받아야 함

요즘은 개발 도구가 현대적인데 저런 사소한 것을 신경 쓰면서 코딩을 하는 것도 이상합니다. 그럼에도 손 코딩을 보는 이유는 PC으로 코딩을 위한 준비과정 Cost가 발생하며 부정행위를 모니터링하기도 어렵기 때문입니다. 그래서 대학에서 손 코딩을 선호하는 것으로 알고 있습니다.

물론, 모든 대학을 대변하지 않으며 PC로 코딩 시험을 치를 수 있는 좋은 솔루션은 많을 것 입니다.

어찌어찌해서 대부분의 수험생이 요구사항을 구현하고 Input, Output이 정상적으로 동작한다면 이후 변별력은 어떻게 구별할까요? 코드 줄 수가 적다고 해서 좋은 코드일까요? 코드 줄 수는 많은데 단일 책임 원칙으로 정교하게 분리된 코드가 좋은 코드일까요? 혹여나 Feature 중 반만 구현되었다면 점수는 어떻게 채점해야 될까요.

이처럼 소프트웨어는 바닥부터 차근차근 탑을 쌓듯이 완성되는 제품이며 중간까지만 구현을 마치면 매뉴얼대로 책점이 어렵고 하나의 요구사항에 대해 구현 방법도 여러 가지이기 때문에 소프트웨어 개발에 정답은 없고 이 때문에 정량적인 측정은 어려우며 개발자라는 직업이 경력과 경험이 우대된다고 생각됩니다.

지금까지 분석한 내용만 봐도 소프트웨어 개발이라는 능력을 정량적으로 측정하는 것은 매우 어렵다고 생각됩니다.

근데 코딩 실력을 정량적으로 평가할 수 있는 솔루션이 있으면 나름대로 대박인 솔루션 이겠는데?

코딩 테스트도 같은 맥락

이외 비슷한 사례로 코딩 테스트가 떠오릅니다. 대부분의 회사에서 코딩 테스트를 이용해서 개발자를 판단하는 첫 척도로 사용합니다.

하지만 이 부분도 알다시피 코딩 테스트 즉, 알고리즘을 잘한다고 해서 개발을 꼭 잘하는 것은 아닙니다. 이 부분에 대해서는 여러 의견이 분분하지만 확실한 것은 잘하면 좋은 것이며 알고리즘이 중요한 것은 맞습니다.

그럼에도 코딩 테스트라는 나름 정량적인 테스트를 통해 합격자를 필터링할 수 있을 것이지만 이 부분에서도 억울해하는 사람이 있을 수도 있는 것입니다. 코딩 테스트가 개발 능력을 전부 대변해 주지 않기 때문입니다.

종합하면

이처럼 소프트웨어 개발 능력을 정략적으로 평가하는 것은 매우 어렵다고 느껴집니다.

이 때문에 정처기가 있다고 해서 개발의 기본은 하겠지라는 것을 보장할 수 없으며 IT 업계에서 정처기 유무는 크게 신경 쓰지 않는 것을 이해할 수 있습니다.

물론 기본은 준비된 최소한의 CS를 아는 사람으로서는 인식될 수 있을 것입니다.

결론

실제 정처기 실기를 준비해 보면 코딩 공부보다는 열심히 단어를 외우고 있는 자신을 볼 수 있습니다.

정처기 실기를 공부하면서 이런 거 실무에서 안 쓸 거 같은데 왜 해야 되라고 짜증이 날 수도 있지만 위와 같은 insight으로 접근하면 조금의 짜증이 누그러질 수? 있다고 생각합니다.

누군가는 이 글을 통해 위로가 되었으면? 좋겠네요.

번외로 당연한 생각이라고 할 수도 있지만 필자는 이런 당연한 생각도 분석을 통해 그 생각의 결과를 글로 export 해서 정리할 수 있는 것도 개발에서 중요한 능력이라고 생각합니다.

실제 현업에서 개발보다 개발하면서 내가 겪은 문제를 일목요연하게 정리해서 상대방(e.g., 동료, PM)에게 전달하는 커뮤니케이션 능력이 중요하기 때문입니다.

프로그래밍이라는 것을 공부하면서 이런 것까지 insight를 가지고 대하다 보면 더 좋은 insight이 도출되지 않을까라고 생각됩니다.

여기까지 읽어주셔서 감사합니다 :)