개발일을 오래 하며, 코드를 읽다보면 '육감' 이라는게 생김.
코드를 분석하며 작성자의 사고방식, 기술적 깊이, 판단의 이유 같은게 마치 만화책을 보듯이 머리속에 그려지는 거임. 특히나 이런 소설을 쓸 만한 문과적 사고방식이 남아있는 나 같은 사람들에게는 더더욱..
코드안에 그 개발자의 기술적 '깊이' 가 있기에, 그 개발자의 평소 수준을 짐작할 수 있는 흔적과, 현재 코드의 수준이 서로 맞지 않는다면..?
이건 분명 그럴만한 '이유'가 존재함을 알아차리게 됨. 즉, 주변의 협조가 필요할 때 협조를 받지 못해 어쩔 수 없이 내린 판단에 대해 눈치를 챌 수 있게 되는거임.
모든 로직이 MainViewModel 하나에 들어가 있음.
ViewModel이 DB를 직접 호출하거나, PLC를 직접 제어 또는 파일입출력까지 담당하고 있거나.
UI 상태도 직접 관리하고있다?
초보적인 분석은
"와, 이 새X는 설계를 더럽게 못했네 ㅡㅡ"
내가 똥을 받았네~! 이런 식임.
하지만 숙련자는 한단계 더 나아가는 해석이 가능함.
"잠깐, 왜 이렇게 까지 만들어야 했을까!?"
[나만 알고있다고 착각하는 순간 개발자 생명은 다한 것.]
사람이라면 누구나 숨쉬는 법을 알고, 아픈 것과 맛있는 것을 구분함. 개발자도 마찬가지임.
적어도 자신이 만든 코드가 이상하다는 것을 어느 순간에는 느낌.
좋은 코드를 만들고 싶다는 욕구도 있음.
그렇다면 누군가의 코드가 이상해 보일 때, 가장 먼저 그 사람의 실력부터 의심할 필요는 없는거임.
그렇게 상대를 이해하는 마음으로 주변 코드를 확인해 보면 히스토리가 보이는거임.
아아..초기에는 정상적인 Service 구조가 있었구나..
→ 누구나 그럴싸한 계획은 있다. '처맞기 전' 까지는.. 아아.. 누군가한테 처 맞았나보네.
엇? 어느시점부터 ViewModel에 특정 기능 코드가 급격하게 몰려있네!?
→ 현장에서 주니어 급 개발자가 내버려 진 채로 현장 독박을 썼나보네?
인터페이스는 일부 존재 하지만 구현체는 하나 뿐이네??
→ 하드웨어 모듈 같은 것들이 선정이 많이 늦었나보네?
잘 나가던 코드가 특정 API 때문에 비동기 처리가 꼬여있네?
→ 상대측 개발자와 소통이 어긋나서 급하게 현장에서 결과위주로 땜빵했나보네?
즉, 시작부터 코드를 비판하며 상대 개발자를 내 밑으로 두고 평가하는것이 아니라, 업계의 생리를 따져보며 나름의 '가설'을 세우며 코드를 분석해 나가는거임.
하지만.. 그렇게 넓은 마음으로 그들을 '이해'해 나가려고 해도
이 새X들은 도저히 용서할 수 없는 코드였음. ㅋㅋㅋㅋ
하지만 방법은 항상 있는 법.
과거 에피소드에서 수많은 빌런들을 상대하며 몇 번이고 써먹었던 방법
6살 꼬마는 40살 아저씨의 마음을 알기 어려움.
반대로 40살 아저씨도 6살 꼬마의 마음을 자기 기준으로 이해하려 하면 절대 이해할 수 없음.
그러나 의외로 6살 꼬마를 이해 할 방법은 간단함.
[내 정신 수준을 6살까지 끌어내리면 된다.]
[나도 같이 놀이터에서 흙투성이가 되어 뒹굴어주는 거다.]
[그러면 보인다.]
왜 화를 내는지,
왜 저런 행동을 하는지,
무엇을 두려워하는지,
무엇을 얻으려고 저러는지.
그리고 나에게는 10년 전, 그들과 흙바닥에서 서로의 눈에 흙을 뿌리며 침을 뱉던 '경험'이 있음.
코드를 보다 보니 이상한 점이 하나 있었음.
[Interface가 지나치게 많다....]
카메라도 Interface.
조명도 Interface.
PLC도 Interface.
심지어 거의 모든 클래스가 Interface를 하나씩 달고 있었음.
순간 28살 때의 기억이 떠올랐음.
............
.........
......
딩크족 팀장이 항상 자랑스럽게 말하던 아이엠그라운드 자기소개.
"저는 그냥 시니어가 아니라 소프트웨어 아키텍처라고 스스로를 소개합니다^^"
"Interface는 모든 아키텍처의 중심이죠^^"
...
당시의 나는 물었음.
"저희 장비는 카메라도 조명도 이미 메이커가 정해져 있는데요?"
"그리고 설비라는 게 한번 나가면 그렇게 자주 바뀌지도 않고요."
...
그때 팀장은 말했음.
"인마핱씨가 설비업계를 다니면 얼마나 다녔다고 그렇게 확신을 해요!? 이제 1년차 사원 아니에요?"
"아아...네에.."
............
........
.....
10년이 지났는데도 나는 그 질문에 대한 답을 아직 찾지 못했음. 아니 굳이 찾을 필요가 없었음.
이미 나는 그를 보며 내 아키텍처의 방향을 반면교사 삼았으니까.
[아키텍처는 추상적으로 아름다운 것이 목적이 아니라, 시스템의 변화 가능성을 받이들이기 위해 존재하는 것.]
내 인생 첫 팀장이었던 마빈박사 이사님이 해주었던 말.
"프로그래머들이 다양하게 있지만, 어떤 프로그래머들은 자기들이 마치 화가라도 된 마냥 예쁜 그림 그리듯이 그림놀이를 하는 프로그래머들이 있어. 자기 만족인 게지...이 설비 업체란 바닥은 말이야. 무슨 일이 터질지 모르는 곳이야."
딩크족 팀장은 정말 '소프트웨어 아키텍처'의 삶을 살았는가? 아니면 지독한 화가놀이에 몰입해 실무와 동떨어진 알프스의 하이디로 살았는가?
10년후 내 앞의 코드가 그 답을 보여주고 있었음.
Inspection() 관련 클래스들이 죄다 IInspection 인터페이스를 구현하고 있었음.
간단한 검사 함수 하나를 따라가 보니...
Inspection → Inspection → Inspection → Inspection → 텅 비어있는 Inspection()
무려 네 다섯 단계의 호출을 타고 들어가야 실제 검사 로직이 나타났음.
나는 필요한곳에 순차적으로 책갈피 및 주석을 달기 시작했음.
뭐 나름의 아키텍처 단계는 있었음. 구현체 -> Manager -> Service -> 실행계층 등등..
제 각각의 Inspection들..
분석중 해당 함수를 다시 추적하기 위해 우클릭.
'함수 정의로 이동'
...
최상단에 IInspection이 튀어나왔음.
"아니.ㅋㅋㅋㅋ씨X!!!"
다시 구현체를 찾음.
검사 관련 클래스들이 죄다 IInspection을 상속하고 있었음.
............
나는 한동안 모니터를 바라봤음.
이..이게 너의 아키텍처냐...너어는...검사를 도대체 뭐라고 생각하는거냐...??
어렴풋이 답변이 들려왔음.
"그래도 코드는 예뻤죠?^^"
이제는 환청이 들리는 경지에 이르렀나..!!
내 나이 어언 40세에 이르렀고, 아마 13년 당시 40살을 찍은 딩크족 팀장과 비슷한 나이..
너는...나보다 일찍 태어난 것에 감사하며 살거라...같은 나이로 나를 만났다면

너는-!!! 동서남북-! 그 어디서도-!! 네 시체를 찾지 못할거다..!!
자기 자리에서 따로 코드를 보던 통풍이도 감탄했음.
"야. 내가 너 옛날 소설보고 이 새X 좀 과장했네 싶었는데. 정말 인마 너는 거짓이 없었구나!!"
"........난 거짓말 안했고요."
그의 기억이 떠오르며 또 다른 말이 기억이 났음.
[혹시 Manager 라고 알아요? 매니저 클래스! 소프트 아키텍처들은 자체적으로 Manager 클래스를 관리하죠^^]
"야 일단 매니저도 확인 해야 돼!! 또 뭔 이상한짓을 해 놨을지 몰라!!"
통풍이가 말했음.
"이미 이상한짓 해 놨네...ㅋㅋㅋ"
코드내에 AOIManager 라는 클래스가 보였음. 그리고 해당 클래스의 코드만 1만줄...
"커헉-!!! 이건 매니저가 아니고 Supervisor 아니냐!? ㅋㅋㅋ"
"MS사에 연락해, 디자인 패턴에 Supervisor Pattern 추가 하라고..!!"
말은 웃으며 농담을 따먹었지만, 그 모든것들을 샅샅이 해부하고 해부 된 살점들을 논리적으로 연결하여 시스템 흐름을 파악하는건 정말이지 지옥이었음. 거의 5일동안 이 짓거리를 해야했음.
5일이 지나서야 겨우 검사 프로그램 시스템 플로우를 발골해 낼 수 있었음. 나머지 세팅이나 파라미터 관리쪽은 쳐다 볼 엄두가 안났음.
우리가 그러는 동안 꾀돌이 이사가 갑자기 USB를 하나 들고왔음.
"엥? 이게 뭐에요?"
"뭐긴요~ Mil 키락이죠~"
"네? 개발자 동글키요?? 그게 왜 회사에 있어요?"
"아~ 우리 현장인원들이 쓰는 동글키죠~ 이거 필요하다매요."
통풍이가 의심스러운 눈빛으로 말했음.
"이사님. 그거 설마 릴리즈 키는 아니죠?"
"개발자 키가 맞습니다^^"
내가 다시 의문을 표했음.
"아니 이사님 ㅋㅋ 개발자들도 아니면서 개발자 키를 현장 셋업 인원들이 왜 들고 다닙니까? 그거 가격만 수백만원 짜린데 ㅋㅋㅋ 줘보세요."
그리고 바로 노트북에 꽂아 실행해보니 뜨는 동글키 에러.
"자 이사님 됐죠? 현장 인원들이 개발자키를 왜 가집니까?! 쓰지도 못할거.."
".........;;"
쫓기는 와중 무지한 자들로 인해 이렇게 무의미 하게 내 3분의 시간을 허비했다는 감정을 느낄 틈도 없었음에도 드는 섬짓한 위화감.
"이사님. 혹시 K테크에 우리한테 개발자 동글키 있다고 전했습니까?"
"..........(에이 설마)"
"..........;;"
"아 이사님. Yes, No가 어려워요??"
"제가 다시 전화...하..할까요..?"
"아 진짜 ㅡㅡ; 뻔한걸 물으세요. 안그래도 사기싫은거 억지로 주문넣을려고 하는 애들한테 우리한테 개발자 키 있다고 하면 안살께 뻔하잖아요."
"바로 전화하겠습니다."
..............
통풍이가 말했음.
"진짜 가지가지 한다 다들...너 어떻게 일하냐..? 단 한순간도 긴장을 못 놓네.."
"어..그거도 하다보면 익숙해져. 오랫만에 마치 고향에 온 기분이다."
그리고 몇일 뒤 1장의 계약서와 2개의 동글키가 회사에 도착했음.
계약서에는 강력하게 적혀있었음. ㅋㅋㅋㅋ
[동글키 분실 시, 3억원의 손해배상금을 청구 한다.]
그걸 보며 우리는.
"피융X 들... 3억ㅋㅋㅋ 릴리즈키로 바꿔서 줘도 못알아 차릴것들이...걍 새로 2개 사다가 채워넣어도 쟤들은 몰라 ㅋㅋㅋ 장난하나 ㅋㅋ"
"기술은 버려도 가오는 못버리는게 바로 K테크 출신들이야."
이제 5일동안 얼추 핵심 파트는 분석을 끝냈으니 한시름 놓을 수 있겠다 여기던 그때, 통풍이가 모니터를 보며 외쳤음.
"인마야!! 메일함을 봤더니 소스코드가 4개 더 왔어!"
"엥!?!? 장비는 1종류인데 왜 프로젝트가 5개야!?"
메일함을 급히 열어보니, 뒤늦게 메일함에 4개의 메일이 추가로 와있었음.
도대체 뭐냐...무슨 상황이냐...!? 이중에 진짜 코드는 무엇인가!?

[2]
인마핱 | 13:52 | 조회 493 |오늘의유머
[4]
감동브레이커 | 12:49 | 조회 1144 |오늘의유머
[1]
우가가 | 12:31 | 조회 1434 |오늘의유머
[7]
감동브레이커 | 12:25 | 조회 2271 |오늘의유머
[1]
우가가 | 12:23 | 조회 1965 |오늘의유머
[8]
감동브레이커 | 12:21 | 조회 1274 |오늘의유머
[1]
인마핱 | 11:34 | 조회 411 |오늘의유머
[2]
인마핱 | 11:34 | 조회 367 |오늘의유머
[4]
인마핱 | 11:22 | 조회 473 |오늘의유머
[5]
한림의아들 | 11:22 | 조회 437 |오늘의유머
[10]
우가가 | 10:00 | 조회 1915 |오늘의유머
[2]
우가가 | 09:54 | 조회 1293 |오늘의유머
[34]
말랑한옴팡이 | 09:52 | 조회 1040 |오늘의유머
[0]
몸쪽꽉찬커터 | 09:48 | 조회 283 |오늘의유머
[6]
말랑한옴팡이 | 09:36 | 조회 2009 |오늘의유머
어떤게 설비에 있는 코드인지를 모르는거군요...ㅋ
정확하십니다ㅋㅋ 역시 동종업계 종사자 시네요ㅋㅋ
각 설비마다 코드가 다를 수도 있죠
다를순있죠ㅋㅋ 근데 그게 뭔지 본인들도 모르자나요 ㅋㅋㅋ 아 이건 스포인가..
MOVE_HUMORBEST/1797303