2016년 9월 26일 월요일

버그의 종류

서두에 밝힙니다. 브런치에 글을 적고 있지만 책 내용에 들어갈 수도 일부만 참고될 수도, 판이하게 다를 수도 있습니다. '대한민국 프로그래머'의 공식 공개 초판은 6월 2일 업로드 됩니다. 그 외 글들은 책과는 무관하게 시간 날 때 마다 생각을 씁니다.

버그의 종류는 많습니다. Coverity 툴 처럼 몇 억씩 줘야 쓸 수 있는 툴의 경우 버그의 종류를 수백가지 지정하고 개발자가 디버깅 하도록 도와줍니다. 힘든 시간이었지만 디버깅 관련해서는 정말 많은 경험을 쌓을 수 있었던 추억입니다. 스타트업 있을 때도 도입하려고 시도했지만 규모가 작아서 안된다고 하더라구요. 디버깅 만큼 연차가 묻어나고 레벨 구분이 확실히 되는 작업도 드뭅니다. 우리 부모님들께서 우리들을 생각해서 하는 한마디 한마디 처럼요. 짧지만 평생을 갑니다.

자바만 해도 Syntax Error, NullPointerException, Array Index, Argument, NumberFormat, 런타임 때 나는 Resource leak, OOM(Out of Memory) 등 다양하게 있지만 제가 생각하는 오류는 크게 4가지 입니다.

컴파일 오류

실행 파일을 만들기 전에 나는 오류 입니다. 컴파일, 링크가 요즘엔 대부분 컴파일이나 빌드로 통합해서 부르니 컴파일 오류라고 했습니다. 컴파일러가 잡아 낼 수 있는 오류입니다. 대표적인데 구문 에러, 인자를 잘못 넣거나, 언어가 요구하는 문법을 틀린 경우 입니다. 링킹할 때는 대부분 라이브러리를 못 찾아서 납니다.

런타임 오류

실행 중에 나는 것입니다. 휴대폰으로 치면 휴대폰이 갑자기 꺼지거나(reset, null pointer exception이 대표적), 멈추거나(특정 파트에서 무한루프를 도는 거죠) 합니다. 다시 켰는데 안되는 경우는 OOM(아우럽메모리) 혹은 파일 시스템이 망가진 경우 입니다. 모두 작동중에 제대로 Exception 처리를 안해줘서 그런거죠. (특히나 저장 용량이 다 차서 부트 영역까지 잡아 먹는 건 파티션을 나눠서 해결해줘야 합니다. 어플리케이션에서 케어할 수 없는 문제라는 거죠)

Algorithm 오류

역시 실행 중에 납니다. 그러나 가장 잡기 어려운 버그 입니다. Algorithm 이 뭔지 말했으니 알고리즘 오류라고 하겠습니다. 메소드 오류, 펑션 오류, 객체의 행동 오류등 다양하게 불러도 됩니다. 사람이 잘못 짠 것 입니다. 컴파일, 링크가 잘 되는데 원하는 결과값이 안나오는 경우 입니다. 

철학의 오류

대학생 멘토링을 하면서 얻은 새로운 오류 입니다. 화려한 경력으로 치장된 개발자들이 잘못 가르쳐 주기 때문에 나는 오류 입니다. 명문대 출신의 졸업반 친구들이 비전공자이지만 자기 인생을 걸고 전직(직업을 바꾸는)을 합니다. 캐릭터 스탯을 다시 찍어야 하는 경우 입니다. 이 때 가장 중요한 것이 자신감을 가지는 일입니다. 자신감을 가지려면 열심히 하면 되는데 독이 되는 사람들이 많습니다. 특히나 전공했던 사람들입니다. 
For Loop 실행 순서도 잘 모르는 사람이 많았습니다. 기초 문법도 모릅니다. Ctrl+C, V 에 무조건 최신 기술지향을 단 한번만 성공하면 됩니다. 비교 대상이 되지 않습니다. 우린 분야가 다르고 난 내 분야에 최고라고 말합니다. 생각 자체의 오류를 철학의 오류라고 합니다. 불륜을 조장하는 애슐리매디슨의 고객은 삼천만명이 넘습니다. 분명 우수한 시스템일 것이고 위에서 말한 오류들을 무수히 잡았을 것입니다. 그러나 철학적 오류가 있는 것입니다.



선행개발과 상품화팀에만 오래 있어서 직업병이 생긴 것인지도 모르겠습니다. 선행개발 직업병으로 볼 때, 최근 학생들이 하는 대부분의 새로운 프로젝트라고 하는 것들은 이미 오픈소스로 나와 있습니다. 그것을 가져와서 실행만 시키는 스크립트 키들이면서 새로운 도전이라 말합니다. 평가받기를 거부 합니다. 
상품화 직업병으로 볼 때 제대로 동작하지 않는 것을 최종 결과물로 내려고 합니다. 단 한번이라도 신박한 기능이 시연되는 것이 목표입니다. 차라리 만들지 않은 것이 낫다고 생각합니다. 우리 가족이 산에서 위급 상황을 만났는데 휴대폰 오류로 목숨이 위태롭다고 생각해 봅시다. 차라리 아무것도 만들지 않는게 낫습니다.

완전히 새로운 것에 대한 도전 정신을 가지던지, 처음 계획한 결과물을 완벽한 형태로 내던지. 그게 다니면 두마리 토끼를 잡기 위해서 멋진 아이템에 도전하며 밤낮으로 디버깅할 지언정, 목표로의 열망을 잃지 않던지. 온 힘을 다해야 하는데 참 답답함을 많이 느꼈습니다. 아닌 친구들도 많습니다. 반짝이는 눈빛 하나로 꿈을 말하는 친구들도많이 있습니다. 대체로 이런 현상이 난다는 것이죠. 반성합니다. 제대로 가르쳐 주지 못한 기성 세대의 잘못입니다.

국내에서 묵묵히 제품의 완성도를 올리기 위해 디버깅을 하고 있는 개발자 분들. 감춰진 소스와 자신의 문제가 아니라고 하는 정치 속에서도 일하시는 분들. 또, 국내 최고의 실력을 가지고 세계와 경쟁하는 분들은 책 쓸 시간이 없습니다. 이에, 재차 계속 권유를 드리고 있습니다. 저 역시 대한민국 개발 문화를 바꾸려고 시작했으니 한번 뽑은 칼은 끝까지 가보려고 합니다. 문화를 만들어 보려고 합니다.

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...