게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
3개월 개발기간 중, 2개월을 코딩 한 줄 안하다
게시물ID : it_7252짧은주소 복사하기
작성자 : iT개발자
추천 : 5
조회수 : 2037회
댓글수 : 4개
등록시간 : 2021/04/20 15:16:41
옵션
  • 창작글

스스로 '각성'이라고 생각하는 경험담입니다.

 

==========================================================================================

 

   3개월 개발기간 중, 2개월을 코딩 한 줄 안하다



핸드폰 소프트웨어 개발자에서 차량관련 업무를 해보고 싶어서, 기회가 생겼습니다.


차량 관련 업무를 시작할때 처음 난관은, CAN 이라는 통신 프로토콜을 이해하는 것이었습니다.

다행이 상황이 나쁘지 않아서, 영어로 된 원문까지 필요한 부분을 알려주셨고 이해하게 되었습니다.

당시 기술이사님은 '웹사이트의 지식은 정확하지 않다'라는 신념을 가지신 분이었고, 웹사이트를 보면 야단을 치셨습니다.

저도 CAN을 인터넷으로 공부하고 있었는데, 다른 직원 분이 인터넷 보면 혼난다며 만류하셨습니다.

전 이건 괜찮다고 하였고, 이건 박사님들이 감수하신 논문이라 신뢰 할 수 있는 것이라고 답변을 주었습니다.

기술이사님은 신뢰하지 못하는 것이니 잘못 이해할 것을 걱정하신거였지, 논문은 신뢰할 수 있으니 보아도 문제가 안됩니다.


안된다가 아니라, 왜 안되는 지를 파악하여, 피해가는 답을 찾으면 되는 거죠.

당시 기술이사님의 잔소리가 무서워서, 사고가 경직 되신 것 같습니다.

기술이사님이 엄하신 분이였으나, 이유없는 공격을 하시지는 않았습니다.

기술 수준이 높으셔서, 요구치가 높기는 했습니다.


팁을 알려드리면, 인터넷으로 국회도서관을 검색하시면, 무료로 볼 수 있는 논문들이 많이 있습니다.

논문의 절반은 현재 상황에 대한 설명, 즉 기초이론이 나오며, 이것을 공부하면 편할 때가 많습니다.

박사논문은 어렵지만, 석사 또는 학사 논문중에 보고 공부할 만한 것들이 많으니, 필요하실 때 보시면 됩니다.

저는 학사학위자이지만, 논문은 웬만한 석사님들 보다 많이 읽었을 겁니다.

석사신 분들은 졸업후에 논문을 보지 않으시지만, 전 필요 할때 마다 자주 보았습니다.

CAN 통신을 이해하기 위해서 한 달 정도 걸렸고, 회사에서 준 소중한 기회였습니다.

모든 디테일한 프로토콜을 다 아는 것은 불가능합니다.

평생 CAN 통신을 하신 분들도 다 이해하지 못 하며, 기본적인 흐름을 파악했느냐가 중요합니다.

디테일은 필요할 때마다 채워나가야 하는 것이며, 모두 다 알고 업무를 하겠다는 사람은 업무하지 않겠다고 말하는 겁니다.

이후 자동차 분야에서 오래 일하신 분들도 CAN통신을 이해를 못하고 있는 것을 많이 느꼈으며, 제가 설명을 해드린 적도 종종 있습니다.

물론 실무적으로는 경험을 따라 갈 수 없지만, 이론은 다를 뿐입니다.


BCM(Bod controller Module) 개발 업무를 맡게 되었는데, 자동차 분야에서는 난이도가 높고 복잡다고 생각하는 분야입니다.

BCU라고도 합니다. 모듈과 유닛의 차이일 뿐입니다.

BCM은 컴퓨터로 이야기 하면, 메인보드와 비슷합니다.

CPU를 메모리, SDD, USB등 다른 주변기기와 독립적으로 만드려면, 중간에 중개를 해주는 장치가 필요한데, 그 역할을 메인보드가 합니다.

자동차에서 엔진이 중요한 파트이며, 다른 주변 장치의 영향이 없게 독립적으로 만들기 위해서 BCM을 사용합니다.

BCM의 역할이 다양하지만, 중요한 포인트는 엔진의 정보를 공유해주는 매개체라고 할 수 있습니다.

엔진의 상태가 중요한 이유는 전원과 관련이 있습니다.

자동차가 시동중이면, 전류를 소모해도 크게 문제가 되지 않지만, 시동이 꺼지면 다른 기기들은 전원 OFF 또는 sleep 상태로 들어가야합니다.

만약 이런 동작이 원할하게 이루어지지 않으면, 자동차를 방전이 됩니다.

고객 불만의 가장 큰 원인 중 하나가 될겁니다.

실제적으로는 이것 외에도 주유량 체크, 주행거리 계산등 많은 기능이 있습니다.


3개월 안에 실질적으로 개발 완료를 하라는 일정을 받았습니다.

당시 좀 난처했던것이, 기존 인력과 공동작업이 아닌 단독 개발을 시켰습니다.

차량 소프트웨어 처음하는 사람에게, 어려운 분야라고 겁주더니, 혼자 개발하라고 해서, 팀장님께 항의도 했습니다.

'항의 한다고 바뀔것이 없다'는 것은 직장인 분이라면 다 아실 겁니다.


핸드폰 개발하던 사람들은 일을 못한다는 말을, 눈을 마주치며 하시는 분도 있었기에 자존심 문제도 걸려서, 죽기살기로 해 볼 생각이었습니다.

회의 시간에 "할 수있냐 없냐?"로 계속 압박이 되었고, 결국 '에라 모르겠다 해보자'가 되었습니다.

"언제까지 하면 됩니까?"

"그 때 보시죠."

이렇게 저의 두 마디의 말로 시작이 되었습니다.

차량관련 프로그램 하던 사람도 아니고, 입사한지 얼마 되지 도 못한 사람 하나 두고 '협력하여 어떻게 할까'가 아니라, 압박만 하는 회의 ....


내가 모르는 것 부터 확인 했습니다.

개발 사양을 이해하는데 2주가 걸렸습니다.

외국인 개발자가 와서 같이 한줄 한줄 읽어보며, 협의 하였고, 여러 번 읽어 보며 거의 암기할 수준까지 반복 하여 이해하였습니다.

하드웨어 부품이 핸드폰용하고 다르기 때문에, 부품데이터 시트와 칩 데이타 시트를 확인하고, 하드웨어 이해를 하는데 2주정도 시간이 걸렸습니다.

많이 걸렸다고 생각하시는 분도 있으시겠지만, 메인 칩 데이터 시트만 보통 수백 페이지가 되고, 각 부품데이시트 다 확인하고 이해하는데 걸린 시간이면 빠른 편입니다.

이제 소프트웨어 개발에 필요한 것을 확인 시작 했습니다.

접해보지 않은 임베디드 OS를 사용하고 있어서, OS 관련 확인하고, 이전에 개발한 프로그램 분석을 하는데, 2주를 보냈습니다.

마지막으로 현재까지 확인 한 것들로 소프트웨어를 어떻게 만들지 2주정도 고민했습니다.

여기 까지에 대략 8주, 즉 2달이 지났습니다.

당연히 코딩한 줄 안하며, 준비만 한 겁니다.

2주간은 무식하게 코딩만 했습니다.

하드웨어에 맞추어서 필요한 전체 소프트웨어를 구성을 한 후에, 메인 기능을 개발 하였습니다.

나머지 2주는 테스트 장비와 물려서, 동작 테스트를 하였습니다.

제가 쓰고 나서도 이해되지 않는 속도이긴 한데, 사실입니다.

독기로 업무를 한 것이며, 정상상태는 아니었습니다.

3개월 개발기간에, 저의 체중이 8Kg이 빠졌습니다.

아침식사를 하는 편이라, 하루 3끼를 모두 먹었으며, 잠은 6시간 이상씩은 꾸준히 자며, 규칙적으로 업무만 하는 상황이었습니다.

업무 스트레스로 인한 것으로 3개월에 8Kg의 체중 변화를 보인 겁니다.

저는 스트레스 받으면, 체중이 증가하는 체질이라고 생각하고 있는데, 저도 극심하게 스트레스 받으면 빠진다는 것을 확인하였습니다.


월요일 개발 회의에 들어가기전에, 미리 시연 준비를 해두었습니다.

회의시간에, 개발완료 된 것과 개발되었으나 테스트 되지 않은 것 그리고 개발되지 않은 부분을 구분하여 브리핑하였습니다.

실제로 개발은 거의 완료 된것으로 말씀드렸고, 경험 부족과 장비 부족으로 테스트 되지 않은 것들이 좀 있었습니다.

브리핑후 반응이 재밌었습니다.

"너 거짓말 하지마."라고 하드웨어 팀장님께서 말씀 하셨습니다.

시연 준비를 해두었기 때문에, 말로 할 필요도 없어서, 저도 받아쳤습니다.

"안되는 거 보셨나요? 되는 건 보셨나요? 시연 보시러 같이 가시죠."

당시 개발 총책임자이신 임원분과 하드웨어팀, 검증팀 분들을 모시고 시연을 진행하였습니다.

'잘했다'나 '수고했다'라는 반응이 아니라, 이게 왜 동작하지 라고 고개를 갸우뚱 거리는 분들이 많았습니다.

개발 총책임자이신 임원분이 "다음에 무얼 할 것이냐?"라고 물어보셨습니다.

"제가 자동차는 처음이라, 검증팀에서 검증을 해서 주셨으면 합니다."라고 답변드렸습니다.

검증팀 답변이 재밌었으며, 저도 처음 들어 본 말이 나왔습니다.

"왜 이렇게 빨리 개발 했습니까?"

"저는 일정 대로 개발한 것 뿐입니다."라고 답변을 주었습니다.

검증 준비에 필요한 시간이 1개월이 필요하다는 답변을 받았습니다.

기간 내에 못 할 줄을 알고,  준비를 안해 둔것이죠.

못 할것 같으면, 일정을 조율해 주셔야지, 못 할 것 같다고 준비도 안해 두셨답니다.



이후에 일어난 일입니다.

CAN 관련 업무는 외국에서 담당하였는데, 관련 버그를 수정해야니 개발 중인 프로그램을 보내라고 요청이 왔습니다.

"CAN 버그 확인해서 수정 했습니다."라고 회의 시간에 말씀드렸는데, 혼났습니다.

"니가 CAN을 어떻게 알아!!"

"일단 보내는 드리겠습니다."라고 답변을 드렸고, 버그 수정한 어떠한 것도 받지 못했습니다.

이미 수정이 된 것이 맞았으니까요.

앞에 개발기간 3개월 중 후반에, CAN 테스트도 가능해서 테스트를 하였는데, 정상적인 동작이 안 되는 것을 확인 했었습니다.

오동작 원인이, 변경된 CAN 정보가 적용이 되지 않았다는 것을 확인하여 수정 하였습니다.

이 수정에 1주일 정도는 걸렸던 것으로 기억합니다.


이 회사를 퇴직할 때, 제 스스로 이렇게 말했습니다. 

"내가 원하는 개발 수준에 이제야 도달을 했다."

"소프트웨어로 되어 있으면, 내가 못 할 것은 없다. 이제는 내가 할지, 안할지만 결정하는 문제다."

"앞으로 내가 무엇을 계속 할지, 결정만 하면 된다."


이 이야기는, 자동차 분야를 아시는 분들은 거짓말이라고 하시는 경우를 많이 봅니다.

그러나 개인 개발도 아니고, 회사 업무로 진행 한 것이기 때문에, 거짓말을 할 수 없음을 밝힘니다.


무협지에서 보면 주인공이 특별한 경험을 통하여 '각성'을 하게 되는데, 스스로 이때를 '각성'한 시기라고 생각합니다.

이 시기를 거치지 않았으면, 기존 소프트웨어를 모두 지우고 혼자서 다시 개발하는 것은 불가능 했을 겁니다.

어려운 일을 할때 저도 된다는 확신을 가지는 것은 아닙니다.

'될것 같다'는 가능성에서 시작 할 뿐입니다.

참고로 말씀드리면, 이후에 저도 못한다고 말하는 업무를 '할 수있다'는 분들을 많이 보았습니다.

스스로 하지 않으신다는 특징이 공통점이라는 것을 알게 되었습니다.

 

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 게시판요청 자료창고