옵션 |
|
안녕하세요. 오유 독자님들^^ 다시 목요일이 왔습니다. 내일만 출근하면 휴일이네요~
이번주는 저도 이런저런 업무미팅을 다니느라 무척 바쁜 한주였던거 같습니다.
참..이 중소기업이라는게 일하나 받기가 대단히 어렵네요^^
예전에는 넘쳐나던 CS인력이, 이제는 금값이 되었습니다. 그만큼 현장일이 힘들다는 반증이기도 하지만
과거엔 이정도로 사람이 없진 않았는데, 이젠 개발자보다 CS인력이 더 귀해지는 세상인거 같아요..ㅎㅎ
물론 개발자도 많이 부족한 실정입니다. 워낙에 2차전지라는 분야가 사람을 갈아넣는 곳이다보니
젊은 개발자들의 기피대상 1호인거 같아요.
걱정되는 장비업계의 미래...ㅠㅠ
------------------------------------------------------------------------------------
비전 K팀장을 찾아갔음.
나: 팀장님. 혹시요. 만약에요. 나가신 연구소장님이 회사 차리고, 거기서 우리 회사 핵심 전력.
예를 들어 콩과장이랑 호카게 팀장을 데리고 가면. 어떻게 될 것 같아요?
K팀장: 음? 만약이라고 하는것 치곤 심각한 얘긴데? 저녁에 시간 있나? 같이 밥이나 먹을까?
나: 그러시죠^^ ㅎㅎ
비전 K팀장은 파티를 맺긴 했지만, 본인은 한눈에 알아볼 수 있는 사람이었음.
일단 이 분은 키가 엄청나게 커서, 최홍만 선수가 연상이 됨. ㅋㅋㅋ
그가 신이 주신 하드웨어를 갖추었으나, 태생이 싸움꾼이 아니었던것 처럼..
아직도 기억에 남은 얼음주먹 에밀리아넨코 효도르와 최홍만 선수의 대결..
이미 터치 글러브를 하기 직전에 최홍만 선수의 눈에 긴장감과 두려움이 맺혀있는걸 알 수 있었음.
(물론 파랑머리 테크노 골리앗 시절이면 모르겠지만..아마도 저 시점에는 건강상의 문제가 있었던거 같음.
물론 본인은 홍만이 형이 손으로 꾹 쥐기만 해도 골절상을 입겠지만...ㅋㅋ)
반면 태생부터 싸움꾼인 효도르의 눈빛은 차갑게 가라앉아 있었지.....
비전 K팀장과의 만남이 그와 비슷했음. 대면과 동시에 본인은 알 수 있었음.
그는 싸움꾼이 아니다.
실력으로 닳고닳아 뚫고 올라온 케이스가 아니라, 수 없는 아첨과 모략, 뇌물로서 자신의 입지를 다진 인물.
다른 동기들이 현장에서 열심히 일하는 동안, 열심히 골프와 테니스, 그밖의 레저 스포츠에 몰두하며
얼마나 많은 동료들의 비난과 무시를 알게모르게 느꼈을까. 그런 불안과 분노는 오로지 아첨과 모략으로 승화시켜
결국은 실세의 자리를 거머쥔...차기 '비전팀 이사'. 팀장들 중 가장 정치적인 인물이라 할 수 있었음.
그러므로 존중하나 경계했음. 본인이 절대 못하는 '스킬'을 가진 거니까.
그리고 자기 팀원들 일이면 다른 팀장들과 다르게 직접 앞장서서 회사를 뒤집는한이 있더라도
팀원을 지켰음. 물론 그 역시 정치적 싸움이겠지만..ㅎ
그렇기에 절대 신뢰를 할 순 없지만, '이득'이라는 먹이만 던져 준다면 누구보다 강력한 조력자로
잠시 힘을 합칠 수 있는 그런 인물로 판단을 했음.
회사근처 양꼬치 집에서 양꼬치를 먹으며 K팀장과 얘길했음.
나: 팀장님. 있잖아요. 만약에 연구 소장님이 회사를 차리면 우리랑 같은 업체로 들어올 수 있나요?
K팀장: 어려울껄? 내 생각은 불가능이야. 일단 실력이야 있으신 분이지. 근데 이 업계라는게 실력만 가지고 바로 뜰수는 없는거거든.
우리 회사만해도 봐라. 20년이다 20년. 수많은 실패와 시도, 그리고 조금씩 쌓아올린 인지도.. 이런게 당장 실력만 있다고 되는게 아니거든.
나: 음..근데 극단적으로, 만약 D사 전공정을 전담하던 콩과장이나, 현재 후공정을 꽉 잡고있는 호카게팀장이
연구소장님께 영입이 됬다고 가정하면요.
당장에 D사를 대응할 수준있는 프로그래머도 없다고 할때요. 고객을 뺐기지 않을까요?
K팀장: 그것도 불가능해. 이미 우리회사 이름으로 나간 장비가 D사의 80%수준이야.
만약 우리가 삔또 상해서 모든 장비에 손 떼겠다 선언하면!?
그 80%의 장비. 과연 아무리 대단한 연구소장님, 호카게, 콩과장이라도 셋이서 감당할 수 있을거 같아?
나: 음.
K팀장: 그리고 장비가 소프트웨어만 있냐? 너 우리 비전팀을 완전 생각 안하고 있구만!? ㅋㅋ
나: 아....!
K팀장: 장비가 프로그램으로만 돌아가는게 아니잖아. 기구 설치하고 셋업하고, 카메라 맞춰주고. 당장에 너네 소프트웨어 인원들이 전기배선 작업이라도 할 수 있어?
나: 못하죠. 간혹 괴물같은 사람들은 기구,전장,셋업,코딩도 하는 사람들이 있다곤 들었지만....ㅎㅎ 적어도 우리 회사엔 없죠.
K팀장: 그렇지. 한마디로 연구소장님이 회사를 차린다 하더라도, 지금 우리회사 정도의 덩치를 키우려면 아직 20년도 이르다는거지. 거긴 연구소장님 혼자잖아.
나: 그렇네요. 괜한 생각을 했군요..근데 그럼에도 불구하고 ㅎㅎ 콩과장이랑 호카게가 그쪽으로 빠지면, 우리한테는 타격이 있지 않아요?
K팀장: 음...만약에 최악의 상황으로 간다면 이렇게는 될 수 있지. 우리가 연구소장님네 회사에 의뢰를 하는거야. 돈을주고 대신 일을 시키는거지.
나: 음..그렇군요. 어쨌든 그리되면 경쟁사를 키워주는 꼴이 되는...
K팀장: 아니지. 그러기 위해 영업이 있고, 경영진이 있는거야. 경쟁사가 숨은 쉬게 해주면서,
절대로 성장은 하지 못하게 머리 써서 가격 네고를 치는거지.
연구소장님이 프로그램말고 경영쪽에도 빠삭하실까!? 내가 볼땐 전혀 아닌데? 이 회사를 이만큼 성장 시킨건 부사장님의 경영력이지.
사장님이나 연구소장님은 경영쪽은 문외한이야.
[와우..무서운 세계^^ 그리고 그 네고의 정점에는 대기업이 있구나!]
나: .....(하긴..그 정 많고 인간적인 분이...사람이길 포기해야 경영을 할 수 있는거지..)
K팀장: 대충 얘기들었을때 OO이가 뭘 걱정하는지는 알겠어. 뭔가 그런 움직임을 느낀거지?
나: 음.....그냥 문득 그런 생각이 들더라구요.
K팀장: 나는 딴건 몰라도 OO이의 짐승 같은 촉은 믿는다. 니가 보내버린 사람이 몇명이냐 ㅋㅋ
나: 하하;; 위험발언 하시네요.
K팀장: 나는 법적으로는 잘 모르지만, 어떤 회사의 핵심 인력이 동종업계 혹은 경쟁사? 로 가서 문제가 안되려면
2~3년정도의 텀이 있어야 한다고 알고있어. 물론 이론적인 얘기일 뿐이고, 한 회사가 개인에게 무언가 제약을 걸기엔 어렵다고 하더라고.
근데 상도덕에 어긋나는 짓을 하면 이쪽에서도 괴롭힐 방법은 많거든. 너 OO부장 자살사건 모르냐?
나: 들어는 봤죠.
K팀장: 앞으로도 이상한게 감지되면 또 만나자고^^
실제로 이 회사의 모 부장이 따로 나가서 회사를 차리고, 프로그래머 몇명을 꼬셔서 동일 장비를 동일 고객사에 납품했다가
소송당해서, 빚더미에 앉았고 자살한 케이스가 있었음. (지나가며 들은거라 실제 정황은 잘 모름)
아마도 본인이 입사했던날... 몇몇 사람들이 장례식에 갔다 왔다고 하는 얘길 들었으니..
그걸 아는 연구소장님이나 다른 인원들도 감히 경거망동하진 못하겠지..
어느정도 정리가 되었음. 일단 호카게의 유효기간은 2~3년.. 호카게 본인이 어떤 생각으로 지내는지는 모르겠지만
그를 잡아 채울수 있는 족쇄의 유효기간은 최대 2년정도..
2년안에 후공정까지 본인이 다 파악 해둬야겠다는 다짐을 했음.
일단 실세 K팀장을 대면한 소기의 목적은 달성했음.
이 사람의 성격상, 분명 비전 총괄이사에게 은연중에 골프를 치던, 테니스를 치던 간에 현 상황을 경고 할 것이고..
경영과 모략의 고수인 비전 총괄이사는 이에 대비하는 그림을 그려놓겠지...
뭐 아님 말고^^
팀장...나를 X밥으로 본걸 후회하게 해주마..
----------------------------------------------------------------------------------------------
다시 일상으로 돌아가 D사로 출근.
나: 주기성 불량이란게 뭐에요?
산군주임: ..!? 그걸 왜 저한테 물어봐요?? 프로그래머시면서..
나: 컨셉 같은걸 듣지 못했거든요. 일단 컨셉을 알아야 그런 컨셉의 코드를 찾아내는거라..
산군주임: 저도 사실 담당한지 얼마 안되서 잘 몰라요; 그리고 이건 OO사에서 하는건데 직접 알아보셔야죠.
나: 메일로 보니 검사 누락이라고 하던데 그럼 심각한거 아닌가요? 검사를 안한게 되잖아요? (이정도로 심각한데 니네 너무 태연한거 아냐!?)
산군주임: 불량 데이터는 있어요. 누락된건 아니에요.
(뭔소린진 모르겠지만 일단 안심..)
나: .....검사 데이터는 있는데 주기성 불량이 누락됬다는건...;; 와 어렵네요;; 어느나라 언어야....;; 불량 데이터가 있는데 누락되었다!? ㅋㅋㅋ
산군주임: 확실한건 뭔가 안되는게 있는거죠.
나: 일단 알겠습니다.
처음엔 코드에서 이 검사기의 불량 타입들을 쭉 탐색해 보았음. 그러나 이 코드를 짠 사람이 마공을 연성해서 그런지
보기 좋게 한쪽에 모든 불량 타입들이 모여서 처리 되도록 구성한게 아니라 코드 전체에 나누어 분산되어 있었음.
얼핏 본 무서운 이야기에서 중국에서 실종된 아이의 부모가, 유명한 점술가를 찾아가 아이의 행방을 물었을때
'당신의 아이는 전국에 살아있습니다..' (장기밀매로 아이의 장기를 이식받은 사람들이 전국에 있다는 뜻)
한것과 비슷했음.
나: 불량 타입이 어디에 있나요?
탐색기: 불량 타입은 모든 코드에 있습니다...
나: !!! (공포!)
딸배헌터 마냥 어디에나 있고..어디에도 없었음..
그냥 닥치는대로...급한대로...의식의 흐름대로 코드가 짜여져 있어 그냥 즉석해서 데이터를 받고..그냥 스파게티였음.
(하단의 절취선은 부연 설명으로. 머리 아픈거 싫어하시는 분은 건너 뛰셔도 됩니다. 호기심이 있으신 분은 읽어보세용.)
------------------------------절취선------------------------------------------------------------------------------------------------------
예를들면...
조건문으로 이게 몇번 카메라에서 몇번 카메라까지 넘어온 불량이면 10번 불량이다.
아니면 20번 불량이다.. 이걸 코드로 표현하면
if(packet->portNo <= 101 || packet->portNo <= 108) defectType = 10;
else if(packet->portNo <= 201 || packet->portNo <=208) defectType = 20;
.......
이런식으로 짜여 있는데......
정상적인 프로그래머라면 하나의 함수를
int ConvertDefectType(const CPacket* packet)
{
int defectType = -1;
if(packet->portNo <= 101 || packet->portNo <= 108) defectType = 10;
else if(packet->portNo <= 201 || packet->portNo <=208) defectType = 20;
......
return defectType;
}
이런 식으로 만들어야 함. 비전공자 분들은 이해가 잘 안가시겠지만...이해를 안하셔도 됨. 중요한건 저 코드 내용이 아니니까.
다시..
if(packet->portNo <= 101 || packet->portNo <= 108) defectType = 10;
else if(packet->portNo <= 201 || packet->portNo <=208) defectType = 20;
.......
이 알수없는 코드는 '면발' 이라고 한다면 ConvertDefectType 이건 '신라면'이라고 이름을 바꿔보겠음.
int가 뭔지 몰라도 됨. () 요 괄호도 몰라도 됨. 몰라도 되는건 다 생략함.
{} 얘는 뭔가? 그냥 감싸안은 의미임.
신라면{'면발'}
이게 뭐냐. 그냥 신라면 봉지안에 들어있는 면발임. 그냥 신라면을 슈퍼에서 하나 사왔다고 보면 됨.
그럼 프로그래머가 보는 코드는
신라면;
너구리;
짜파게티;
새우탕;
아...그럼 내가 보고있는 세계는 농심이구나~~~!! 농심 공장인가!!! 하고 알게됨.
이게 함수 개념으로 구성된 코드임.
근데 저렇게 함수로 만들지 않고 면발을 여기저기 의식의 흐름대로 뿌려놓으면
면발;
면발;
면발;
면발;
그럼 이걸 바라보는 프로그래머는 저 면발 한올 한올 냄새맡고, 만져보며
이게 신라면일까? 너구리인가? 검증과 확인을 하며 코드를 분석해야함.
근데 면발 분석이 서투른 프로그래머가 면발 하나를 진라면(오뚜기)이라고 착각을 해버리면
이 프로그래머는 자신이 현재 보고있는 세계가 농심 공장인지 모름. 어디 면만 파는 대형마트인가!? 해버리는거.
그렇게 오해하면 사고를 치기 시작함.
누군가가 진라면이 아니라 새우탕이었다고 알려주거나, 오랜시간 다시 분석하다
스스로 착각했음을 인지하기 전까진.....
그리고 이전에도 계속 나왔던 C스타일의 코드라 함은, 각각의 독립적인 코드로 잘 분리하여 구성되지 않아
신라면;
너구리;
짜파게티;
새우탕;
이 아닌
짜파구리;
신라탕;
새우면;
너파게티;
로 섞여있다는 의미임.
좀 편협하고 극단적인 비유들이긴 하나...
그래서 흔히들 스파게티코드 스파게티코드 하면서 욕하는거임. 이리저리 꼬여서 읽기 힘든 코드도 스파게티라고 하겠지만
저렇게 급하게 구현한다고 의식의 흐름대로 막 구현한 코드도 똑같은 스파게티임..
---------------------------------------------------------------------------------------------------------------------------------------------------------
스파게티 하나하나 분석하더라도 시간은 좀 걸리지만 알아낼 자신은 있었음. 근데..내가 왜!?
똥개 훈련할 필요 없잖아?
그럼 콩과장 외에 장비를 경험해본 자. 그에게 전화를 해볼 수 밖에 없었음.
뚜루루루...
목사: 네. OOO과장입니다.
나: 안녕하세요. 저 OOO대리입니다.
목사: .....네.
나: 저 궁금한게 있는데요. 제가 듣기론 과장님께서 장비를 제일 잘 아신다고 하더라구요 본사에서.
목사: 그런데요.
나: 이번에 이슈나온 주기성 불량이란게 혹시 발생하게 되면 장비에 어떻게 표현이 되나요!?
목사: 결점맵에 기호 표시가 아니라 숫자로 표현되죠.
나: 혹시 그 숫자 색상이 어떻게 됩니까?
목사: 핑크색이요.
나: 아..감사합니다!!
목사: 네. 참고로.. 잘 모르면서 이것저것 막 수정하시면 안되요.
나: ???
뚝.
(이 인간은 꼭 한마디를 해야 하는 스타일인가!?)
코드에서 핑크색 색상을 검색하기 시작했음. RGB(255, 0, 255) 라는 키워드로.
티리엘 과장님처럼 대단히 색상에 관심이 많은 프로그래머들은 몰라도
적어도 이 회사 수준의 프로그래머들에게 핑크색이지만 예쁜 핑크색의 RGB 조합은 기대할 필요가 없었음.
걍 0 아니면 255인 색상 조합이겠지..
그리고 바로 검색되는 핑크. 거기서 부터 코드를 역추적해서 올라가다 보니 Periodic 뭐시기 하는 '신라면'(함수)가 나왔음.
안의 '면발'(코드)을 분석해보니 실시간으로 불량점의 X좌표와 Y좌표를 이전에 발생된 불량점 좌표와 비교하여 일정 간격으로 반복이 되면
그런 반복된 불량점들을 핑크색 글자로 바꾸고, 100파이, 180파이, 250파이 이런식으로 표시를 해주며, 알람을 발생시키는 내용이었음.
(여기서 파이는 수학의 3.14 그 파이임.)
그리고 불량의 기준이 되는 Y좌표 간격은 어떤 내부적인 규칙에 따른건진 모르겠지만 값들이 정해져 있었음. 100파이, 180파이, 250파이... 이렇게
아...대략 이해가 갔음.
----------------------------------------------------
산군주임: 불량 데이터는 있어요. 누락된건 아니에요.
(일단 안심..)
나: .....검사 데이터는 있는데 주기성 불량이 누락됬다는건...;; 와 어렵네요;; 어느나라 언어야....;; 불량이데이터가 있는데 누락되었다!? ㅋㅋㅋ
산군주임: 확실한건 뭔가 안되는게 있는거죠.
----------------------------------------------------
현재 근본적인 문제는 알람이 떠야하는데 뜨지 않아서 문제가 된거임.
불량점들은 기록되고 있었지만.. 뭔가 안되는거 같다..
산군 주임은 아직까지 이런 상황을 보지 못해서 잘 모르는것이고
근본적으로 문제가 되는 부분은 그냥 아는 사람들만 아는식으로 대충 대충 전달 되면서 살이 붙고, 부풀려져서 본사로 메일이 날아온것..
정리하면 주기성 불량의 누락이 아니라, 주기성 불량의 알람이 발생되지 않았다 였음.
그러던 와중 Periodic 뭐시기하는 주기성 불량 판단 함수에 전달되는 좌표값(매개변수)에서 이상한 점을 찾을 수 있었음.
Periodic(xxxxx, xxxxx, xxxxx, (int)PositionX, (int)PositionY); <- 호출된 명령어
저기서 (int)PositionX, (int)PositionY의 의미가 무엇이냐.. 좌표의 값을 정수값으로 변환하는 의미였음.
3.14를 정수로 바꾸면 3이 되어 버림.
저 주기성 불량을 판단하는 기준이 100파이, 180파이...인데. 파이가 붙었다는건 3.14가 곱해진다는 뜻임.
근데 좌표의 소수점을 날려버린다? 그건 이미 파이가 아닌거지...
[콩과장은 왜 소수점을 다 없앤거지? 특별한 의미가 있나?]
그리고 Periodic 함수의 원형을 찾아보았음.
double Periodic(xxxxx, xxxxx, xxxxx, double PositionX, double PositionY) <- 호출 할 함수의 원형 코드
{
면발
}
double이라는건 소수점을 포함한 값이라는 뜻임.
한마디로 저 함수를 사용하려면 PositionX와 PositionY는 소수점을 포함한 값을 넣어 사용하라는의미임.
근데 콩과장이 임의로 (int)PositionX, (int)PositionY 이런식으로 강제로 정수타입 변환을 주어
코드 중간에 소수점 값을 제거해 놓은거임.
[수상하다...매우 수상하다....!!!]
나: 주임님. 혹시 콩과장이 마지막 업데이트하기 전에는 주기성 불량에 문제가 없던가요?
산군: 그건 저희 과장님께 여쭤볼께요.
나: 네. 뭔가 미심쩍긴 한데 제가 아직 이 코드의 정확한 의도를 모르기 때문에 막 수정하긴 좀 그렇거든요. 좀.. 물어봐주세요.
그리고 산군과 목사 님의 전화..
대략적인 내용은 이거였음. 콩과장이 본인에게 코드를 넘기기 전에는 주기성 알람이 잘 나왔다.
그리고 본인이 투입된 후로 나오지 않았다.
아무래도 본인이 잘 모르고 코드를 만진거 같다..
(목사 생각)
아무리 항마력이 높은 본인이라도 이런 오해를 받게되면 미치고 팔짝 뛸 노릇이었음.
그리고 어떻게 해명할 방법이 없는 일이었음.
이건 장비의 히스토리를 알고있는 프로그래머가 아닌 다음에야 비전공자에게 아무리 해명을 해도
[아~~뉘예뉘예~~알게쯉뉘다아~~당신 잘못이 아니군뇨~~~~거기 프로그래머 세계에서는 '죄송합니다'라는 언어가 없나 봅니다 허허허~~~]
하면서 듣기 때문에...
부글부글 끓어오르는 마음을 추스리며, 다시 코드를 재확인 했음. 그래.
이 코드는 불량점 좌표가 소수점을 반드시 포함해야 동작하는 코드야!! 하는 확신이섰음.
그리고 예전 1호기와 2호기의 코드도 열어 동일한 함수를 검색해서 비교해 보았음.
나: 역시....
1호기와 2호기의 코드에는
Periodic(xxxxx, xxxxx, xxxxx, PositionX, PositionY);
이렇게 되어 있었음. 콩과장이 3호기 코드에
Periodic(xxxxx, xxxxx, xxxxx, (int)PositionX, (int)PositionY);
이렇게 변경을 시켜 놓은것.. 이정도면...고의로 한거겠지!?
int라는 글자를 다 제거했음.
나: 일단 수정했습니다. 주임님.
산군: 확실해요!?
나: 미심쩍은 부분이 있어서요. 콩과장이 주기성을 판단 할 좌표의 소수점 값을 다 제거시켜 놨더라구요. 그거 다시 소수점 사용 가능하게 살려놨습니다.
산군: (의심스런 눈초리...) 콩 과장님이요? 그분이 왜 굳이 그렇게 해요. 장비 제일 잘 아시던 분인데.
나: 모르죠 저도.
산군: 저희 코드 못본다고 본인 실수를 그만두신분 탓으로 돌리는거 같아서 좀 실망스럽습니다.
나: 아니;; 이건....하아...뭐 어떤 말을 하더라도 증명이 안되니 해명할수도 없겠네요. 그럼 나중에 증명하도록 하겠습니다. 일단은 수정 완료 했어요.
산군: 주기성 불량이라는게 매일매일 나오는 불량이 아니래요. 몇일에 한번, 혹은 몇주에 한번 나올까말까한 거라 들었어요.
나: 그럼 저거 나올때까지 지켜보겠습니다. 매일 출근 할거구요. 야간에도 모니터링 하겠습니다.
산군: 오...이래야 대리님 답죠.. 좋은 자세네요. 근데 그렇게 무리하실 필욘 없어요. 일단은 패스하시죠.
나: ......(이렇게 가볍게 다룰거면 왜 본사를 뒤집어 놨냐고;;)
[아니...나는 내 눈으로 확인을 해야겠어...그리고 만약 주기성 불량이 나오면....콩과장 49제는 내가 치뤄준다..!!!]
그렇게 그날부터 장비옆에 앉아 하루죙일 장비만 쳐다보고 있었음. 그리고 퇴근시간..
산군: 대리님. 이제 늦었으니 퇴근하시죠? 저희도 퇴근 준비 해야합니다만?
나: 혹시 담당자 없이 저 혼자 남아서 장비 봐도 되나요?
산군: 야간조 담당자분께 얘기해놓으면 되긴한데..가능하면 남지 마시죠? 협력사 퇴근 안시키고 야근 시키는걸로 문제가 될 수 있습니다.
나: 제가 꼭 봐야할거 같거든요. 문제 안되도록 할테니까 남아서 보게 해주세요.
산군: ....뭐...그러시다면....
그렇게 다들 퇴근하고, 야간 생산을 지켜보았음. 원하는 결과가 언제 나올지 알 수 없었기 때문에.
이번 기회에 실제 이 장비를 사용하는 생산팀 직원들이 어떻게 일하는지. 어떤 체계를 바탕으로 이 장비의 기능들이 추가된건지
지켜보며 파악해 보기로 했음.
산군 주임이나 목사님은 기술팀이지, 실세 생산팀 직원이 아니었기 때문에, 어떤 기능을 요청함에 있어 자신들이 궁극적으로 무엇을 필요로 하기에
기능을 요청하는 것인지 이해하지 못하는 경우가 더러 있었음.
반면 생산팀 직원들은 자기들이 반드시 필요하니까 기능을 요청했고. 그 요청을 기술팀이 받아 우리 회사로 전달을 함.
그리고 확실히 새벽에 생산팀이 일하는 모습을 지켜본건 도움이 많이 되었음.
아...저것 때문에 32개 검사프로그램의 프레임 카운트를 계속 모니터링 하고 있었구나...
오. 쓸데없는 기능같았는데 저렇게 띄워놓고 보니까 일하는 사람한테는 편할거 같네!?
............
어차피 본인이 출근을 안하면 본사에서는 '아 D사 갔나보다..'하기 때문에 출퇴근 걱정은 안해도 되었음.
그렇기에 새벽 3시~4시까지 지켜보다 피곤하면 주차장의 회사 차에서 잠을 잤음.
그렇게 이틀째.. 본인은 운이 좋았음.
그날도 모두들 퇴근후 저녁 11시쯤 되었을까? 갑자기 생산 장비에서 알람이 울리기 시작했음.
[삐이이이이~~~~~~~~~익!!!!]
[삐이이이익!!!!!!!!!!!!]
그리고 소떼처럼 생산팀 직원들이 무슨 다이소에 파는 롤 클리너 같은걸 들고 우르르 몰려왔음. 오!? 뭐할라고!?
리더로 보이는 한 분이 무전기를 들고
생산팀 A: 알람발생. 알람발생. 확인바람.
무전기: 히OOOO. 250파이.
생산팀 A: 히OOOO!!! 250파이!!
그러자 나머지 생산팀 사람들이 일제히 복창했음.
사람들: 히OOOO!!! 히OOOO!!!! 250파이!! 250파이!!!
그러더니 칙칙 폭폭 기차 놀이 하듯 읏쌰 읏쌰!! 하면서 발 맞춰 어딘가로 구보하듯 뛰어갔음.
얼른 프로그램 화면을 확인해보니 결점맵에서 250이라고 적힌 글자가 핑크색으로 하나씩 하나씩 올라오고 있었음.
오!!! 드디어 나왔다!!! 이게 주기성 불량인가!!!! 49제 준비해야겠네!!!!!!!!!!!
본인도 신이나서 칙칙 폭폭 기차에 합류하여 같이 구보를 했음. 이 사람들이 뭐하러 가는지 궁금했기때문에..
그러더니 장비 중간쯤 가서 양산을 잠깐 스톱 시키고 장비 문을 열었음.
일전에 설명했던 거대한 롤러들이 중간 중간 제품을 걸친 채로 멈춰있었음. 이 롤러들이 굵기가 다 제각각 이었는데, 왜 굵기가 다 다른지는
본인도 모름.. 어쨌든 더 지켜보니 생산팀이 열심히 롤 클리너로 특정 롤러를 열심히 닦기 시작했음.
생산팀: 제거 완료. 제거 완료.
무전기: 양산 재가동 실시. 안전제일!
생산팀: 안전제일! 안전제일!
그리고 다시 칙칙 폭폭 구보를 하려던 때.
나: 저기요?
생산팀: 네?
나: 하고많은 롤러중에 왜 하필 저거 닦은거에요?
생산팀: 히OOOO잖아요? 주기성 불량 발생이요.
나: 제가 잘 몰라서;;
생산팀: 우리 제품 특성상 좀 끈적이는 물질이 있기 때문에. 간혹 양산하다보면 그 끈적이는 볼펜 똥 같은게 생겨요.
그게 장비안에 롤러에 들러붙으면 그 위로 지나가는 필름마다 그 덩어리 때문에 눌려서 규칙적인 간격으로 계속 불량이 발생하죠.
나: 오...!! 근데 저 롤러에 똥이 낀건지는 어떻게 아신거에요??
생산팀: 250파이 잖아요!?
나: 아!!! 롤러의 둘레!!! 원이니까!!! 아아!!!! 왜 그걸 생각 못했지!?
생산팀: 근데 누구세요?
나: 이 장비 프로그래머 입니다.
생산팀: 아니..왜 이 시간까지...얼른 들어가세요...;;
나: 네. 이제 들어갈 수 있을거 같아요. 퇴근해야죠 이제!
야간에 운전하며
아...단순한 불량이 아니구나. 주기성 알람이라는 기능은 정말 멋진 기능이야!
속으로 감탄하며 집으로 복귀했음. 어쨌든 문제를 해결하고 그 원리까지도 이해한 날에는 퇴근길이 항상 보람차고 즐거웠음.
이제 콩과장만 만나면 되겠구만!!!
퇴근길.
웅~~웅~~~웅
나: 네. 여보세요.
G팀장: 나다.
나: 여보야?
G팀장: 장난치지 말고.
나: ㅋㅋㅋ 이 늦은 시간에 전화를 다하시고 ㅋㅋ 자기전에 제 생각 한거에요? ㅋㅋ 무슨 일 입니까?
G팀장: 사장님 만나봤다.
나: ....뭐랍니까?
G팀장: 모르시더라. 뭔 소리 하냐고. 돈 아까우니까 빨리 좀 처리하라고 핀잔만 주시더라.
나: ....이야....우리 콩과장....호카게....간뎅이들이 저보다 100배는 큰데요? 허헛.
G팀장: OO아. 이거.....우리...그냥..묻자.
나: 엥?
G팀장: 좀 그래..오랫동안 봐 왔던 사람들이기도 하고..사실 우리야 그냥 월급쟁이잖냐..개미끼리 서로 싸워봤자 변할건 없어.
나: 돈아깝다고 나한테는 죽일듯이 꼬나보시던 분이 왜 갑자기 약한소릴!?
G팀장: 그건 미안해. 이럴줄은 몰랐지;;
나: 문제는 그겁니다. 저도 저한테 피해안주고 지들끼리 뭘 해먹든 관심없어요. 근데 G팀장님 같은 시각으로 저를 꼬나보는 눈이 한 두명인 줄 아십니까?
G팀장:..........
나: 더 문제는 고객사에요. 콩과장 때문에...원래라면 인정받고 시작했어야 할 D사가...저에 대한 인식이...
코드 파악하는데 오래 걸리고...기존 장비 고장낸...고장낸거 수습하고있는 대리 나부랭이가 됬다구요.
G팀장: 그건 아니야;; 그런거면 퇴출됬지 벌써; 인정 받으니까 다시 너 부른거 아냐...;;
나: 정상적인 상황이었다면 박수받고 있어야 될 상황인거였죠..! 나한테 엄청난 데미지를 준거라구요. 솔직히 이건 나라서 살아남은 거구요..
다른 사람이었으면...힘들었을 거에요.
G팀장: 그건 맞지...
나: 저는 어떻게든 살아남으려고 발버둥 쳐왔는데. G팀장님. 팀장님은 뭡니까? 그냥 여기~~저기 휩쓸려 다니면서! 나한테 화냈다가! 사장님한테 움츠리다가!!
이제 콩과장, 호카게한테는 인간적인 정 때문에 약해지고!!! 도대체 주도적으로 뭘 해결해 보려고 나서본게 있습니까!?
G팀장: .....없지..
나: 그럼 저한테 그만하자. 묻자 이런말 하실 지분이 1도 없으신데 왜 주제 넘으십니까?
G팀장: 야..임마...그야 너는 친하니까...섭섭하게 말을 그렇게하냐...당연히 미안하지 너한텐..
나: 저도. 이거 가지고 사람 건들 생각 없습니다. 근데 이유가 달라요.
아직 내가 부족해서 콩과장, 호카게 날려버리고 뒷 수습할 힘이 없기 때문에
실리적으로 판단 한겁니다. 팀장님 처럼 제 코가 석자인지도 모르면서 그냥 인간적으루다가!! 좀..봐주자...하는 판단이 아니라고요.
G팀장: ........
나: 팀장님도 이참에 잘 생각해보세요. 아끼시는 G팀. 그 밑에 우리 OO행님. 순둥이 묵은지 대리. 팀장님 사람들 다 잘 지키면서 이 회사에서 살아남으려면!!
냉정하게 판단하고 버릴패는 버리고, 같이 갈 패는 같이 가야된다구요.
G팀장: 우리는...같이 가는거냐?
나: 네. 앞으로 따라만 오세요.
[콩과장과 호카게에게 복수는 못해도...내 아군들은 하나씩 얻어나간다..!]
G팀장: 알았어. 어쨌든 잘 넘어가줘서...고맙다.
님들이 이렇게 순딩순딩하니....그래가지고는 절대 실세 K팀장 못이기지....
어둡구나 어두워.....다들 약지를 못해..
다른 비전팀들을 보면 이런 생각을 한번씩 했음. 리더의 위치에 있는 사람들이 약지를 못했음.
아마 그래서인지 이 회사에 더 정이가기도 했음. 적어도 인간미가 풀풀나는 회사생활 이었으니까..
......................
.................
...........
........
그리고 목요일. 콩과장 49제날.
뭔가 때려엎기 전에는 팩트 체크를 확실히 해 둬야함. github에 가서 콩과장이 최초로 업로드한 소스코드를 열어봤음.
그리고 Periodic 함수를 검색했고. 역시나 그곳엔
Periodic(xxxxx, xxxxx, xxxxx, (int)PositionX, (int)PositionY);
코드가 박제 되어 있었음. 순간 소름이 돋았음.
만약...다른 누군가가 이 장비를 담당했다면 과연 콩과장이 github에 코드를 박제했을까!?
그냥 USB로 대충 넘기고 흐지부지 넘어갔겠지!?
콩과장은 자유인이라 아침 일찍 출근하진 않았기에 일단 호카게를 호출했음.
나: 팀장님. 어제 고객사 주기성 불량 문제 해결했습니다.
호카게: 수고했어요^^. 대충 들어보니까 OO씨 코드 만지다가 실수했다고 하던거 같던데? 실수한거 찾았어요?
나: 확인해보니 제가 실수한게 아니더라구요. 누군가의 악의 섞인 의도적인 장난질 이었죠^^
호카게: ......?
나: 여기 github 코드 보세요. 콩과장이 최초에 업로드 한거죠?
호카게: ....네.. 그러네요.
나: 여기 코드 보시면 Periodic 함수 보이시죠?
호카게: .........
나: 왜 콩 과장은 double로 입력받는 매개변수 값을 int 형으로 강제 변환을 해 뒀을까요!?
호카게: 음..? 무슨 뜻인지 잘 모르겠네요?
나: 저 주기성 미검출 문제는 불량 좌표에 소수점을 강제로 다 제거했기 때문에 발생한 거라구요. 저는 다시 그 소수점을 살린거고. 어제 현장에서 제대로 동작하는거 확인했구요.
호카게: ....음..무슨 말인지는 알겠는데. 사람이 실수할 수도 있죠. OO씨는 생각을 좀 긍정적으로 가질 필요가 있을것 같애.
나: 실수? 시~~~~~일~~~~~~수!? 콩과장이 진행했던 개조 건에는 주기성 관련 개조는 하나도 없었는데. 왜 뜬금없이 저런 강제 형변환 코드가 추가 되있죠!?
호카게: 그러니까 실수죠.
나: 허허 참나... 보통 프로그래머가 실수를 하는게 오타나 코드 복사를 잘못해서 발생하는데! 오타면 애초에 빌드가 안될테니 제쳐두고.
저건 한땀 한땀 타자 쳐서 만들어진 코드인데 왜 저런 뜬금없는 짓을 하겠어요? 그리고 착각을 한거면 다 착각을 하던가. 다른 매개변수들은 다 그대로인데
왜 가장 핵심이 되는 불량 좌표에만 강제 형 변환을 쑤셔박아 놨냐구요. 말이 되요!? 그것도 코드 제일 끄트머리에 배치 된.
호카게: .......그래도 이건 OO씨 억측...
나: 제가 억측이라면, 팀장님. 어떤 케이스가 발생해야 저런 실수를 할 수 있습니까? 상식적으로 이해가 가는 케이스가 하나라도 있으면 제 억측인거 인정하겠습니다.
호카게: .........나야 전공정 장비를 안해봤으니 사정을 모르죠.
나: 그럼 콩과장 오면 직접 물어 봐야겠네요. 사무실에서 큰소리 좀 날 수도 있어요.
호카게: OO씨. 그래도 지금까지 OO씨 입사하기도 전 부터 우리 회사에 일하면서 이바지한 사람이에요. OO씨 그런 태도 나는 이해가 안가네요.
나: 저 D사 투입 된지 얼마 안됬죠? 지금 D사 담당자들한테 첫인상이 어떠냐에 따라
향후 몇년의 일이 순탄해지느냐 힘들어지느냐가 달려있어요.
근데 나한테 코드를 넘겨준 선임자가. 아무런 개연성도 없는 이상한 코드를 심어서 후임자가 고객사에 욕먹도록 만든다!?
이게 제정신 박인 새퀴가 할 일입니까? 이게 이해가 안가신다니 팀장님은 좀 다른 세상에 살다오신분 같네요?
어느나라에서 오셨습니까?
호카게: ...OO씨 지금 나한테 화내는 건가요?
나: 아뇨? 우리 대화중 아니었어요? 왠 뜬금없는 감정 놀음? 너무나도 상식적인 일이 공감이 안되신다 하시고,
도저히 말도 안되는 일에는 실수가 있었겠거니 이해 하시는 모습이 신기해서 ㅎㅎ
혹시 다른 나라에서 살다 오신지 물어본건데? 야. 통풍아. 듣고있지? 어떻게 생각하냐?
통풍대리: 뭐? 콩과장? 나는 이해되는데?!
나: 어? 진심이냐..?
통풍대리: 어. 그냥 O나 병O이면 그럴수도 있지않아? 그런 사람들 있어. 코드짜는데 아무런 생각도, 근거도 없이 걍 이거 한번 만져나 볼까? 하는 무뇌들.
나: .......메가통!?
통풍대리: 공공의적 못봤냐? 거기 범인이 그러잖아. '사람이 사람죽이는데 이유가 있냐!?' 걔네들이 코드 건드는데 이유가 있을까?
나: 아...싸이코패스? 그 생각을 못했네 내가. 팀장님 이제는 이해가 갑니다.
호카게: .......... 그만합시다..
나: 통풍아 그거아냐? 싸이코 패스들끼리 싸우면 누가 이기는지?
통풍대리: 식상하게. 더 미친 싸이코? ㅋㅋㅋ
나: 아니. 더 많이 죽여본 놈이 이겨.
난 이미 7kill째거든.