실력없는 프로그래머 일화 [신입 프로그래머 수준의 경력자]

실력없는 프로그래머와 겪었던 일 [나쁜 경력자]

 

이 글은 예전에 적었던 글[링크]을 읽다가 술김에 홧김에 막 적는 겁니다. 그래도 맞춤법 검사기는 돌렸네요 ㅎㅎㅎ. 갑자기 실력없는 프로그래머가 생각나는 밤입니다.

1. 컴퓨터 공학과, 그리고 이론

저도 이제 경력이 조금 쌓였고, 그 사이에 SI 개발자들과 일해본 적도 있습니다. 한 3년 전 겨울에 정부 과제만, 오로지 정부 과제만 수행하는 SI 좀비 업체와 잠깐 일했었는데, 희한하게도 컴공 전공자가 단 한 명도 없었습니다. 총 4명의 SI 개발자와 함께 일을 했는데, 다들 저보다 경력이 많았습니다. 물론, 전공도 제각각이고 컴공 전공자는 없었습니다. 그분들껜 미안한 이야기지만, 제가 생각한 10년 차 경력자의 모습이라곤 전혀 찾아볼 수 없었습니다. 실력없는 프로그래머였습니다.

 

하나 예를 들어보죠.

 

시리얼 통신 클래스가 여러 개 필요했고 각 기능은 거의 같습니다. 제가 일단 2개의 시리얼 객체를 생성하는 샘플 코드를 넘겼습니다. 열기, 닫기, 읽기, 쓰기 등의 기본 구조는 하나의 클래스에서 상속받고, 다른 기능은 가상 함수에서 상속받아 별도로 구현하는 형태였습니다.

 

나중에 확인해 보니, 중복 코드가 넘쳐나는 여러 개의 클래스를 만들어 클래스마다 하나의 객체를 생성하도록 수정해 놨더군요. 나쁜 프로그래머 같으니...

하나의 클래스는 하나의 객체만....

클래스의 상속과 가상 함수에 대한 개념이 없다 보니, 하나의 기능을 위해서 중복 코드를 마구 늘리는 것에 절제가 없었습니다.

 

시리얼의 열기, 닫기, 읽기, 쓰기 코드가 이곳저곳 산재해 퍼져 있었습니다. 저로선 경력 10년이 넘은 개발자의 코드라곤 믿을 수가 없었습니다. 이런 일이 벌어지는 건, 이론 공부를 하지 않았기 때문입니다. 그 실력없는 프로그래머도 OOP의 장점과 효율적인 코딩 방법에 대해서 들어는 봤을 겁니다. 그런데 그 방법을 따르지 않는 건, 그런 코드를 본 적이 없고, 어떻게 쓰는지도 모르고, 좋으면 좋다는 것을 확인할 방법도 모르기 때문입니다. 그런 상황에서 그런 사람들과 일을 했었으니, 어찌 보면 당연한 결과죠.

 

이런 개발자들이 뭔가 거창한 솔루션을 만든다는 것은 거의 불가능에 가깝습니다.

"자바엔 포인터가 없어요. C++ 되게 불편하네요."

10년 차가 저런 말을 한다면 업무적으로 멀리하는 게 좋습니다.

2. 최적화, 날 코딩

날 코딩을 즐기는 사람들에게 최적화란 있을 수 없습니다. 메모리 사용량이 너무 높다면, "램을 하나 더 끼울까?"라고 생각하지, "최적화가 미비했나?"라고 생각하진 않을 겁니다.

 

제가 신입인 시절에 회사에서 이슈가 하나 있었습니다.

 

메모리 사용량이 계속 올라가고 떨어지질 않는다는 것입니다. 대충 계산해 보니 하루에 4바이트가량이 올랐습니다. 1년 내내 구동하는 프로그램이다 보니, 몇 달이 지나면 누적된 메모리 누수 때문에 컴퓨터 자체에도 문제가 생기는 상황이었죠. 아마 나쁜 프로그래머라면 신경도 안 쓸겁니다.

 

당시 저는 VLD를 포함해 메모리 누수를 확인하는 여러 가지 툴들을 사용하고 매뉴얼을 만들어 공유했습니다. 하나의 툴만 신뢰할 순 없기에 몇 가지 툴을 사용해 보라는 팀장님의 지시를 받았었죠. 나중에 원인을 파악해 해결하고 보니, delete가 한 줄 빠져있었습니다.

 

이 정도라면 아무리 노련한 개발자라도 어쩌다 저지르는 실수라는 생각이 듭니다. 그래서 회사에선 내부 문서에 NEW와 DELETE란을 추가해 코드상에서 정확히 메모리 할당과 해제가 이뤄지는지 확인하도록 했습니다. 문서에 나온 메모리 할당과 해제가 코드에도 반영되었는지 정확히 확인하라는 의미였죠.

 

최적화를 위해선 반드시 문서가 필요합니다. 날코딩을 위해선 문서 따위 사치이고, 일정을 늘리는 귀찮은 일입니다. 최적화와 날코딩엔 보다 깊은 의미가 있습니다. 회사 시스템이 얼마나 합리적인지를 나타내는 지표로도 볼 수 있습니다. 실력없는 프로그래머에게 이런 건 사치입니다.

 

3. 배경 지식과 경험

첫 회사를 그만두고 두 번째 회사로 이직했을 때, 저는 제 상사랑 사이가 좋지 않았습니다. 오로지 했던 것만 고집하고 새로운 것은 하지 않으려는 태도 때문이었죠. 다행히 그룹사 몇 개가 한 사무실을 사용했기에, 새로운 지식이나 문법에 대해선 다른 그룹사의 개발자분들께 질문하고 답변받을 수 있었습니다.

 

물론, 이런 행위 자체는,

"왜 나한테 안 물어봐? 나 무시하냐?"

제 상사의 화를 끌어냈죠.

웃긴 건, 제가 질문을 하면 나도 모르겠다고 합니다. 대체 어쩌라고...;; 나쁜 프로그래머 같으니...

어차피 말이 안 통할 사람이라 마이웨이~~~

템플릿이 뭔지 모르겠고, 전역 변수가 얼마나 편리한 것이며, 다중 상속이란 훌륭한 문법이 있고, 문서 따윈 필요 없고, 내 기억력이 최고라는 실력없는 프로그래머와 대화를 하고 싶은 생각이 많진 않았습니다.

 

다른 그룹사 개발자들도 이걸 알더군요. 왜냐면 코드만 보면 그런 사람이겠구나... 라는 걸 추론하는 데 오랜 시간이 걸리진 않습니다. 경험이 부족한 사람은 당연히 배경 지식이 모자랍니다. 그렇지만, 배경 지식이 부족한 사람은 꼭 경험도 부족할까요?

 

순전히 사람의 성향 문제입니다.

 

 

경험 부족한 사람이 호기심에 배경 지식을 쌓고 경험을 만들 순 있습니다. 그런데, 경험 자체가 부족하다는 뜻은, 호기심도 없고 새로운 지식에 접근할 의지가 없다는 뜻입니다.

 

좋지 않죠.

 

그런 사람들과 일하는 건 참으로 괴로운 일입니다.

 

나쁜 프로그래머와 겪었던 일 [실력 없는 경력자]



댓글(2)

  • 하하하
    2018.12.28 22:26

    다중상속의 훌륭함에서 웃고 갑니다 하하하하하

    그토록 하지말라는 콘크리트 클래스 다중상속 말씀하시는거 아니죠?

Designed by JB FACTORY