상세 컨텐츠

본문 제목

[글 쓰는 엔지니어] 아무도 몰라주는 프로그램 개발자로서의 삶, 9부 프로젝트 기반 학습 (Project-Based Learning)

본문

반응형

 

 

 

이외에도 생각나는 몇 가지 에피소드들이 있습니다. 토목 엔지니어가 어쩌다가 태양광 산업에 뛰어들게 되어 기술팀의 팀장까지 맡게 되었습니다. 팀원들은 모두 전기 엔지니어였고 전공 분야가 다르니 처음에는 어떻게 팀을 이끌어 나가야 할지 막막했습니다. 다행히 팀원들 모두 실력은 나무랄 데가 없었고 제가 리드만 잘하면 되겠다 싶었습니다. 강원국 작가의 말대로 저는 관찰 질문으로 시작했습니다. 처음 한 달 동안은 관찰만 했습니다. 어떤 생각으로 업무에 임하고, 어떻게 일을 하는지 꼼꼼하게 관찰했습니다. 그리고 업무를 세분화해서 왜 이런 일을 해야 하고, 어떻게 처리하는 것이 더 효율적인지 파악했습니다. 그리고 무엇보다 먼저 외부 압력으로부터 팀원들과 단절시키는 것부터 시작했습니다. 의사소통 채널을 일원화 해서 저를 통하지 않고는 협조 요청이 팀원들에게 가지 않도록 하고자 했습니다. 싸워도 제가 싸우고 혼나도 제가 혼나는 것이니 하던 일에 집중하라는 것이 저의 바람이었습니다. 그리고는 질문을 하기 시작했습니다. 그들의 커리어 관리와 멘탈 코치 역할을 하면서 어떤 업무에 가장 힘들어 하고 투입 시간 대비 효율이 떨어지는지 알아봤습니다. 그랬더니 공통적인 대답 중 하나가 신규 태양광 발전소를 건설하기 위한 대략 배치도를 도면으로 그리는 일이었습니다. 신규로 계획하다 보니 배치도를 작성하기 위해 모듈의 경사각, 입사각, 배치 간격 등을 변경해서 다양한 조건을 적용한 후 여러 가지 버전으로 그려보고, 배치한 용량이 얼마인지 매번 계산해야 하는 일이 만만치 않았습니다. 사업 하나를 배치 검토하는데 1~2일이 꼬박 걸릴 정도니 사업의 수가 많아지거나 규모가 매우 큰 사업에 대비할 필요도 있었습니다. 그래서 저는 리습 (LISP) 개발을 시작했습니다. 전공도 다르고 낯선 조건들이었지만 어차피 오토캐드 (AutoCAD)에서 벌어지는 일이라면 자신 있었습니다. 대화창을 만들어서 입력하기 쉽게 했고 사업부지 모양과 크기의 다양함은 폐합 곡선으로 작도만 하면 자동으로 배치가 되고 입력한 조건과 배치 용량 등의 결과 값이 나오도록 알고리즘을 구상했습니다. 여러 시행착오를 겪으며 개발하는 데에 약 한 달 정도 소요된 것 같습니다. 노트북을 가지고 다니며 출장가는 KTX 안에서도 코딩하고, 퇴근길에 지하철에 무릎에 올려놓고 코딩하기도 했습니다. 결과는 대박이었습니다. 모두 모아놓고 직접 시연해보니 다들 오토캐드로 이런 일이 가능한지 처음 알았다면서 열광했습니다. 최소 1~2일 걸리는 일을 입력만 하면 3초 안에 배치도가 나오도록 업무를 개선했습니다. 조건이 변경되면 다시 3초만 투자하면 끝입니다. 그래서 영업팀에게 큰소리도 쳤습니다. 기술팀이 업무가 느려서 실적이 안 나온다는 말은 더 이상 나오지 않게 해달라고 말입니다. 당시 저는 회사가 폭발적으로 성장할 것이라고 보고 지원 조직인 기술팀은 쏟아지는 기술 검토 요청이라는 input에 대해 기술 검토 결과를 공장처럼 고품질의 output으로 신속하고 대량으로 생산하면서 지속 가능한 시스템 개선을 생각하고 있었는데 마침 딱 들어맞는 케이스였습니다.

 

또 한가지는 와이프에 관한 일이었습니다. 공무원을 하는 와이프가 언젠가부터 매월 초만 되면 야근이 많아졌습니다. 힘들어하길래 자초지종을 들어보니 와이프는 기술직으로 일하고 있지만 팀 내 막내여서 기술팀의 행정업무를 도맡고 있었습니다. 여러 행정 업무들 중 근태 관리가 가장 힘들다고 했습니다. 공무원들은 지문으로 나름 근태 관리를 시스템화 했지만 시스템이 불안정해서 제대로 입력되지 않을 때도 있고, 3교대로 일하면서 초과근무까지 팀원들 10여명의 1개월치 근태를 데이터로 받아 일일이 수작업으로 교정하고 근무 시간을 분단위로 변환해서 계산하느라 시간이 오래 걸린다는 것이었습니다. 가만히 듣던 저는 복잡하지만 어쨌든 프로그램으로 만들면 어떻겠냐고 했더니 변수가 너무 많아서 도저히 불가능한 일이라고 했습니다. 저는 와이프에게 변수가 너무 많아 100가지라면 90개만 프로그램으로 해도 편한 것 아니냐고 했습니다. 그래서 와이프는 반신반의하며 저에게 설명을 해줬습니다. 들어보니 시스템에 기록된 raw data의 양식이 너무나 특이 했고 근태 관리 양식 자체가 독특했습니다. 공무원들의 근태 관리 양식을 제가 받아볼 수도 없었습니다. 함부로 유출하면 안 되니 손으로 대충 그려가며 들은 설명으로 알고리즘을 생각했습니다. 모든 양식들은 엑셀로 작성되고 관리된다고 해서 당연히 애플리케이션 용 비주얼베이직 (VBA)로 개발하기로 했습니다. 조건들 모두 적용하려고 노력했고, 독특한 양식에 맞추다 보니 3~4번 정도 중간 변환 단계를 거쳐야 했으며, 3교대 근무 특성을 별도로 분석해서 필요한 정보만 별도로 추출해봤습니다. 그렇게 1차로 만들어서 와이프에게 보여주었더니 와이프는 깜짝 놀라며 엑셀로 이런 것도 가능하냐며 신기해 했습니다. 남편이 얼마나 프로그램 언어를 잘 다루는지를 같이 사는 와이프가 이렇게 몰라주다니 제가 더 놀랐습니다. 아무튼 1차 시연에서 와이프가 오류를 몇 가지 찾아냈고, 피드백을 바탕으로 저는 다시 손을 봤습니다. 변환하는 과정을 2번 정도 더 추가했더니 오류를 해결할 수 있었습니다. 다음날 2차 시연을 했습니다. 와이프는 일단 완벽해 보이긴 하지만 실제로 사용해보고 얘기해주겠다고 했습니다. 며칠 뒤 회사에서 일하던 중 와이프로부터 카톡이 왔습니다. 일주일씩 야근하던 일을 한 시간도 안 되서 끝냈다면서 이제는 월초에도 칼퇴근을 할 수 있다는 반가운 소식이었습니다. 제가 다 뿌듯했습니다. 복잡한 조건들을 요구사항으로 받아서 전해줄 때는 입력 후 버튼 한 번만 누르도록 해서 줬으니 돈만 받지 않았을 뿐 완전히 개발자들이 느끼는 성취감 같은 것을 느꼈던 것 같습니다.

 

반응형

 

이와 같이 저는 프로그램 개발자면서 개발자가 아닌 삶을 살고 있습니다. 누군가에게 어필하거나, 돈을 벌 목적으로 프로그램 언어를 공부하지 않았기 때문입니다. 제가 속한 조직의 불합리하고 비효율적인 시스템을 개선함으로써 생산성 향상과 수익 증대가 목적이었습니다. 그리고 팀원들 간의 융화와 조화를 통한 시너지 창출이 부가적인 효과였습니다. 프로그램 언어 3가지 모두 일단 기초 공부부터 하고 실력을 탄탄하게 한 뒤에 개발한 것이 아닙니다. 저는 무조건 프로젝트 기반 학습 (Project-Based Learning)을 선호하는 편입니다. 코딩을 공부하더라도 자신이 무엇을 개발하고 싶은지에 대한 확실한 목표가 반드시 있어야 한다고 생각합니다. 만들 것이 있어야 필요한 부분과 부족한 부분을 찾아 공부할 수 있습니다. 그렇지 않고 남들이 좋다고 하니까 나도 해보자고 시작한 공부는 반드시 실패하거나 어느 정도 수준 이상을 넘기 어렵습니다. 프로그램 개발을 하면서 참 많은 것들을 얻었습니다. 잠깐 경험만 해도 개선 가능한지 여부를 판단할 수 있고, 웬만한 알고리즘은 머리 속에서만 그리고 개발하는 것도 가능해졌습니다. 필요한 부분만 찾아서 공부하다 보니 함수들을 다 외우지는 못하고, 아니 외우 필요성을 못 느끼다 보니 코딩을 좀 더 크게, 그리고 멀리서 바라보게 되는 것 같습니다. 알고리즘을 머릿속에서 그려 두고 제가 만들었거나 인터넷에서 누군가 공개한 구문들 중 필요한 것들을 찾아 짜깁기만 해도 프로그램이 완성된 적도 많습니다. 특히 파이썬은 Github 등에서 공개된 스크립트들이 많아서 마치 레고 블록 조립하듯이 코딩이 가능한 대표적인 언어이기도 합니다.

 

길었던 시리즈의 대장정을 꼰대의 잔소리로 마무리 짓고자 합니다. 3차 산업혁명에서 4차 산업혁명으로 넘어온 이 시점에서 컴퓨터로 무엇을 주로 하고 있는지 진지하게 생각해보시기 바랍니다. 컴퓨터가 가진 능력의 몇 %나 사용하고 있다고 생각하시나요? 컴퓨터는 계산하는 기계입니다. 그러니 컴퓨터는 계산을 시킬 때 일을 가장 잘합니다. 어떤 순서로, 어떻게 계산할지를 명령하는 것이 바로 코딩이고 프로그램 언어입니다. 컴퓨터로 하여금 자기가 가진 모든 메모리와 하드웨어를 총동원해서 계산하도록 해줘야 합니다. 그것도 엄연히 가성비를 뽑는 일입니다. 컴퓨터 살 때는 가성비가 어떻고, 사양이 어떻고 하면서 정작 인터넷이나 하고 문서 작업만 하면서 어디 가서 컴퓨터 좀 한다고 떠드는 사람들 많습니다. 그럼 사람들은 조만간 불합리하고 비효율적인 인력과 직종이라고 인식되어 사회적인 시스템 개선 작업에 포함될 수 있습니다. 이제 곧 인공지능 시대가 올 것이기 때문입니다. 그렇다고 저처럼 코딩 좀 한다고 뭔가 나아질 리도 없습니다. 인공지능이 코딩을 대신 해줄 수도 있기 때문에 그런 점은 저도 잘 알고 있습니다. 다만 컴퓨터를 좀 더 폭넓게 이해하고, 컴퓨터에게 일을 시키는 능력을 갖고 있어야만 인공지능에게 시킨 일이 잘 처리되었는지 평가하고 판단할 수 있고, 잘못된 경우 인공지능을 다시 올바르게 학습시키거나 할 수 있습니다. 그래서 우리 모두가 지금 기계에게 일을 시키는 프로그램 언어를 공부해야만 하는 이유입니다. , 영어보다 코딩이라는 뜻입니다.

728x90
반응형

관련글 더보기

댓글 영역