brunch

You can make anything
by writing

C.S.Lewis

by 지빈 Mar 15. 2018

소프트웨어 엔지니어의 덕목_1. 목록 나열하기 첫 번째

소프트웨어 엔지니어는 만능 이여야 해

소프트웨어 엔지니어가 되려면 또는 그런 인재를 회사에서 찾을 때 추구하는 목록을 나열해 보려고 합니다.


지극히 주관적인 견해이기 때문에 더 좋은 의견이 있으면 알려주세요.


생각보다 이 분야에서 일하려면 꽤 많은 능력을 소유하고 있어야 합니다. 그래서 더욱 자부심을 느끼지요. 그렇다 보니 대체 일력을 찾기가 몹시 어렵다는 특수상황에 종종 놓이곤 합니다. 누군가가 휴가를 쓰면 백업하기 위해 같은 팀원이 배로 노력해야 합니다.



커뮤니케이션 능력

주로 기계랑 대화하지만 사람이랑도 대화하는 스킬이 좋아야 합니다. 동료와 의견을 나누거나 고객사의 요구사항을 정확하게 파악하려면 회의도 많이 합니다. 필요한 것만 꼭꼭 뽑아서 파악하고 잘 정리하는 습관도 필요합니다.


스케줄링 능력

게다가 우리는 스케줄링 제어에 만능이 돼야 됩니다. 우리가 하는 일이 한 가지라면 스케줄을 생각하는데 큰 걱정을 하지 않아도 됩니다. 그러나 아쉽게도 하는 일은 언제나 여러 개입니다. 급하면서 금방 끝나는 일도 있고 중요하지만 마감이 느린 업무도 있을 것이고요. 이런 일들을 보면서 중요도 순위나 마감 순위를 결정해서 효율적으로 마무리하는 것이 중요합니다. 안 그랬다가는 안 끝낸 일이 남아있고 고객의 컴플레인을 받으며 주야장천 혼나는 불상사가 발생할 수도 있습니다.


프로젝트 개발 및 구현 능력

거기다가 (끝나려면 멀었습니다.) 우리가 하는 기본적인 업무를 매우 잘 해야지요. 엔지니어인데 당연히 소프트웨어를 버그 없이 잘 코딩해야겠습니다. 안 그러면 스케줄링을 잘 했는데 계속해서 다른 스케줄이 버그 수정해달라고 인터럽트를 걸면 여러분의 주 업무를 진행할 수 없는 불상사가 발생할 테니까요.


그런데 여기서 의문점이 듭니다. 정말 코딩만 잘하면 될까요?


제가 일하는 분야는 자동화 분야입니다. 이 업계에는 많은 전공의 조합으로 결과물이 도출됩니다. 예를 들어서 기계 한대를 만들기 위해서 설계자도 필요하고 전장 담당자도 필요하고 소프트웨어 엔지니어도 필요합니다. 그런데 이때 뭔가 치명적인 오류가 발생해서 원인을 찾으려고 각 분야의 사람들이 분석을 시도합니다. 그런데 서로가 서로를 이해 못하면 탁상공론에 그칠 뿐이고 서로 네 책임이라고 할 뿐 진정한 원인을 찾기가 어렵습니다.


관련 전공에 대한 지식

우리 엔지니어들이 기본 설계에 대한 원리와 전장에 대한 이론을 알고 있어야 한다고 생각합니다. 그래야 중재자로서 대화도 하고 원인을 찾을 수 있습니다. 또한 기계를 개발할 때에는 기계의 작동 과정을 정확하게 알고 있어야만 제대로 된 기계를 만들 수 있으니 미리 많은 지식을 알고 있어야 된다고 생각합니다. 그렇다 보니 매번 공부를 해야 하는 상황입니다.


뭔가 특수한 원리를 소프트웨어에 구현하려면 내가 이론도 알아야 하니 공부도 하고 수학적인 지식도 충분히 알아야 합니다. 필터 기능을 넣으려는데 수식 부호를 보고 멍 때리고 있으면 어떻게 코딩하겠어요 뭔지 알아야 내가 원하는 필터를 만들 수 있습니다.




한 번에 엔지니어가 갖추어야 할 목록을 나열할 수 있을 줄 알았는데 오늘은 여기까지 나열하고, 나머지는 다음 편에서 이야기해 보아야겠네요. 아무튼 모두들 멋진 엔지니어가 되시길 희망힙니다.

작가의 이전글 사회초년생이 은퇴를 고민하다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari