코딩문법을 배웠는데 왜 간단한 개발도 할 수 없을까?
'변수' , '연산자' ,'함수' ,'배열' ,'클래스', '객체' 등...문법을 실컷 배웠는데, 마지막에 가서 '가위 바위 보' 코딩조차 버겁다. 마치 13년 동안 영어를 배웠는데, 미국인과 일상적인 대화를 5분도 할 수 없는 상황과 비슷하다. C부터 포함해서 프로그래밍을 배웠다는 사람들은 많은데, 간단한 프로젝트에도 뒤로 물러서는 사람들이 수두룩하다.
25년 동안 직장과 집을 오고가며 매일 운전을 하고 있는 일반인을 생각해보자. 운전경력으로 따지면 그는 베테랑 운전자다. 그런데 25년 경력의 직장인이 포뮬라 원 그랑프리에 나간다면? 그는 운전을 잘한다고 볼 수 있을까?
컴퓨터공학에서 지칭하는 프로그래밍과 사업의 프로그래밍은 다른 분야다. 컴퓨터공학과를 졸업했다고 해서 실전에 능숙하다고 할 수는 없다. 비즈니스에는 '지식'보다 '행동'이 중요하다. 90을 알지만 10을 행동하는 사람보다 10을 알지만 90을 행동하는 사람이 앞선다. 게다가 아는 것조차 확실하지 않은 경우가 대다수다.
가령, 알고리즘, 네트워크, No-SQL, 보안, 객체지향, 소프트웨어 공학, 등... 대학교 컴공에서 배우는 지식을 A4용지에 손글씨로 기록해보자. 몇장을 채울 수 있을까? 자신이 알고 있는 지식이 의외로 빈약하다는 사실을 금세 알 수 있을 것이다. 이는 당연하다. 원래 인간의 뇌는 '알고 있는 느낌'을 '안다'라고 착각(생존에 유리)하기 때문이다. 하지만 이러한 태도(모두 알고 있다는 느낌)를 비즈니스에서 보이면 문제가 발생한다.
개발자라면 '알고 있는 느낌'의 함정에서 벗어나야 한다. 자신이 알고 있는 것이 많지 않다는 사실을 인정할 때, 비로소 성장할 수 있다.
미술 vs 웹툰
사람들은 웹툰을 보면서 18세기, 19세기 화풍이니 화가의 새로운 그림기법과 역사를 따지지 않는다. 웹툰에서 가장 중요한 요소는 '재미'다. 재미없으면 그것으로 끝이다. 반면, 화가의 그림에서는 재미보다는 화가의 삶, 예술성 그리고 미학적인 요소를 찾는다. 미술은 예술성이 중요하지만 만화는 스토리가 핵심이다.
미술과 웹툰을 프로그래밍에 비유하면, '문법'은 순수미술의 기법에 해당한다. 그리고 '소프트웨어'는 웹툰이다. 사람들은 자신이 사용하고 있는 프로그램의 코드를 보면서 감탄하지 않는다. 그냥 편리하고 즐겁고 효율적이면 그것으로 만족한다. 반면, 연구원들은 프로그램 코드를 보면서 감탄하거나 기법을 따진다. 그리고 경영자(비즈니스 업계)는 전자를 추구하는 사람이다. 이는 컴퓨터공학 교육과 실전 프로그래밍의 딜레마가 탄생하는 이유다.
코딩문법 vs 실전코딩
코딩문법과 실전개발은 순수미술에서 웹툰으로 옮겨가는 것만큼 큰 격차가 존재한다. 코딩문법을 실컷 배웠는데 막상 실전 프로그램을 만들려니 앞이 깜깜한 이유가 여기에 있다. 화가에게 웹툰을 요구하면, 당장 막막하다. 그림은 '플롯'이 없기 때문이다. 웹툰은 그림 한장으로 끝나는 작업이 아니다. 고객, 캐릭터, 컨셉과 같은 자질구레(?)한 업무와 단편소설에 비견될 만한 스토리가 필요하다. 웹툰에서 그림기법이란 한 부분에 불과하다.
코딩문법을 습득한 뒤에 바로 실전 프로그램을 제작한다는 것은 화가가 웹툰을 제작하는 것과 같다. 그런데 이러한 황당한 일이 IT비즈니스 업계에서는 거의 일상이다. 프로젝트의 특정 파트에만 있던 개발자가 나와서 스타트업을 시작하거나 문과(경영학)출신 경영자가 IT개발 분야에 진입할 때 이러한 일이 발생한다.
실전코딩
그림에서 웹툰(만화)으로 넘어갈 때 '스토리'가 필요하듯, 코딩문법에서 실전코딩으로 넘어갈 때 필요한 것은 'UML & 요구분석'이다. UML은 고객의 요구사항을 분석해서 요구사항 명세서를 만들고, 개발자와 경영자 혹은 개발자들끼리 소통할 수 있는 다이어그램을 만드는 작업이다.
요구분석 결과물은 프로그램의 뼈대다. 웹툰으로 본다면, '스토리'다. 미술작품을 웹툰으로 제작하려면 스토리가 필요하듯, 지식을 s/w으로 변환하기 위해서는 반드시 설계도가 필요하다. 요구분석은 개발과정에서 경영자, 개발자가 도움을 주고받으며 협업할 수 있는 파트다. 그래서 비즈니스 담당자 그리고 개발자는 요구분석 단계를 개발보다 더욱 중요하게 여겨야 한다. 만일 경영자가 요구분석 단계를 처절하게 고민하지 않은 채, 외주에 맡겨버리거나 부서 내 담당자의 업무 정도로 치부한다면 반드시 문제가 발생한다. 문과출신 경영자들로 가득찬 스타트업이 제품개발조차 실패하는 이유가 여기에 있다.
이는 경영자 뿐만 아니라 개발자도 마찬가지다. 코더에서 개발자가 되려면 설계에 눈을 떠야 한다. 개발 지식과 실전의 차이는 결국 설계에 있다. 그래서 최고의 개발자는 개발실력보다 커뮤니케이션 능력이 뛰어나다. 구성원들을 다독이며, 경영진과 대화에 능하며 고객의 요구사항에 관한 안테나가 발달한 사람이 최고가 된다. 그리고 이러한 능력이 바로 '실전'이다.
스타트업 경영
코딩열풍이 일면서 문과를 포함한 경영학과 학생들도 모두 코딩문법을 배우는 방향으로 교육정책이 나아가고 있다. 하지만 이는 올바른 방향이 아니다. 지적에너지 낭비로 이어질 수 있다. 경영자가 코딩스킬을 배울 필요는 없다. 경영자는 인문학적 지식(통찰력)이나 사람,조직관리에 집중해야 하고, 소프트웨어 공학(요구사항 분석)정도만 습득하는 편이 바람직하다. 경영자는 개발자와 협업할 수 있는 안목이 중요하다. 따라서 경영자가 되려는 사람은 코딩수업을 이수하기보다 요구사항 분석이나 UML관련 공부를 해야 한다.
위에서 말했듯, 경력 25년 일반 운전자가 레이서가 되지 못하는 이유는 '운전 목표'가 다르기 때문이다. 자동차로 레이스를 펼쳐야 하는 레이서와 출퇴근을 목적으로 하는 직장인의 목표는 다를 수 밖에 없다. 목표가 다르면 매일 진행하는 연습 과정도 달라져야 한다. 웹툰의 목표는 '재미'에 있고, 비즈니스의 목표는 '고객 만족'이다.
고객을 생각하지 않고, 백날 코딩에 집중한들 실전 프로젝트에 들어가면 한발짝도 나아갈 수 없다.
코딩열풍이 잘못된 것이 아니다. 방향에 문제가 있다. 고객을 빼버린 코딩교육은 눈뜬 장님만 양성하는 꼴이 된다. 실전은 '고객 요구사항'으로 시작해서 '고객 만족도'로 끝난다. 객체지향, 서버, 보안, 풀스텍, 등... 모두 실전에서는 부수적인 사항일 뿐이다. 고객의 존재를 얼마나 민감하게 깨닫는지에 따라 개발자의 성장과 미래가 달라진다.
'코드 스터디' 카테고리의 다른 글
자바스크립트 심화(13) 프로미스 비동기 실행 (0) | 2019.06.25 |
---|---|
자바스크립트 심화(12) promise 기본 사용법 (2) | 2019.06.24 |
자바스크립트 심화(11) 모듈패턴 만들기 (0) | 2019.06.18 |
자바스크립트 심화(10) 즉시 실행함수 (0) | 2019.06.17 |
자바스크립트 심화(9) 네임스페이스 생성하기 (0) | 2019.06.16 |
댓글