wisePocket

[Thoughts] 나와 컴퓨터가 친해진 과정부터 시작하는 적성, 꿈, 현재에 대한 생각 본문

Philosophy/Who I am

[Thoughts] 나와 컴퓨터가 친해진 과정부터 시작하는 적성, 꿈, 현재에 대한 생각

ohnyong 2023. 7. 26. 08:46

Chapter 1. 내 컴퓨터 역사

CLI? 펜티엄? 모뎀? 

내 인생에서 컴퓨터를 마주한건 어릴 때 펜티엄 시절, 컴퓨터라는 것이 동네에 몇 대 없을 정도로 보급되지 않은 때부터였다. 우리 집은 다행히도 형의 노력 끝에 컴퓨터를 가진 집이 되면서 시작되었다. 세진 컴퓨터 상가를 버스 타고 가서 컴퓨터를 사고 구르마에 싣고 끌고 온다. 뒤통수가 큰 모니터 화면은 검은 터미널만 있었고, 도스에서 cd oo, dir, cd .. 를 입력하면서 그때 당시는 그게 뭔지는 모르지만 경로를 이동하는 것이 초등학생 눈높이에서는 하나의 놀이였다. 학교에서 돌아오면 그냥 아무 의미 없이 몇 시간 동안 이걸 한다. 어느새 포맷이라는 걸 배워서 계속해서 컴퓨터를 포맷해 버리는 것이 놀이가 되었다.

1~2년 지나자 천리안, 하이텔, 유니텔 서비스를 이용할 수 있었다. 모뎀을 위해서 집전화를 몰래 빼고 모뎀에 연결하고, 전화료 폭탄맞고 혼나기도 했다. CLI로 만들어진 RPG 머드 게임도 즐겼다. 온라인 게임인 것도 충격이다. 이동 커맨드를 직접 입력해야 되고, 공격도, 아이템도 모두 명령어를 입력하는데, ///---***와 같은 기호와 문자로 마치 2D처럼 보이게 구성되어 있다.
온라인 게임의 조상 MUD 게임

페르시아 왕자, 너구리를 깔기 위해서 8인치 플로피 디스켓 4~5장은 기본이고 5.5인치 플로피 디스크가 나왔을 때 문화충격을 받았다. 조금 지나 둠이라는 게임도 나오면서 3D화면이 컴퓨터에 나타나는 것에 충격을 받았다.

 

PC방?

초등학교 4학년쯤 때 전국적으로 광케이블이 깔리고, PC방이라는 말도 안 되는 놀이터가 생겨나고, 스타크래프트에 디아블로까지 현재 최고의 IP들이 그때 초라한 모습으로 나타났지만 지금은 말도 안 되는 세계적 인기를 누리고 있다. yahoo가 메인 포털이던 시점에서부터 daum카페가 주력일 때, 이후 네이버가 등장하고 현재까지, SNS는 버디버디와 네이트온의 발전과 몰락, 싸이월드의 핵심 유저층이었다. 이마저도 몰락하는 과정이 있었고 페이스북, 인스타그램, 카카오톡의 탄생과, 현재 틱톡, 배민, 카뱅, 토스까지 경험하면서 시대를 대표하는 서비스들을 직접 이용해 왔다. 하드웨어로는 펜티엄에서 셀러론으로, intel core에서 mac과 현재까지, 또한 삐삐, 가로본능 폴더, 슬라이드, 연아의 햅틱 스마트폰과 아이폰 3gs의 출시, 현재 플립까지 더해서 이젠 스마트 워치, HTC VIVE부터 Oculus까지 출시되는 모든 과정을 지켜봐 왔고 실제로 사용했고 사용하고 있다.

아이폰 3gs 발표

이처럼 한국이 IT 강국이 되는 시작 지점을 직접 목격하고 각종 서비스들의 몰락 지점에서 직접적인 사용자로서 서비스를 갈아타고, 이동하는 등 직접적으로 경험해 왔다. 이제는 HW의 큰 변화보다는 SW적 발전이 계속되는 시점인 것으로 보인다. 한때, 초등학생 시절 단순히 컴퓨터가 재밌다는 이유로 프로그래머가 꿈이었고 당시 컴퓨터 학원에 다니며 한컴 타자연습 소나기로 빗방울을 제거하고 선생님의 추천으로 비주얼베이직으로 프로그래밍이라는 것을 시작해 보고 정보처리기능사 자격증도 따긴 했다.

 

응용프로그램들을 일적으로 다루다

이후 중, 고, 대학교에서도 컴퓨터를 주변 친구들보다 잘 다루는 편이었다. 그땐 사실 한글도, 엑셀도 피피티도 잘 다루는 사람이 흔치는 않았기 때문에 나는 사전학습? 이 된 상태로 좀 더 빠르고 이쁘게 보노보노 피피티를 만들 수 있었다. 지옥의 조별과제에서도 리포트와 발표자료를 "네가 컴퓨터 잘하니까 해"라는 식으로 떠맡는 상황도 많았고 또 그냥 내가 하는 게 속편 했다. 이런 상황이 반복되자 점점 컴퓨터에 익숙해져 왔고 업무적인 툴들도 상대적으로 빠르게 학습했던 것 같다.
Midas Gen은 건물의 위험한 부분을 체크 할 수 있는 프로그램. 설계>시뮬레이션>과하중(==위험한 부분)을 체크>보강설계 워크 플로우를 가진다.

대학에서는 건축공학 전공이다 보니 CAD, 3ds Max, Photoshop와 같은 설계, 드로잉과 관련된 전문 툴을 배웠다. 특히 CAD는 처음 배울 때 주변 건축공고 출신인 친구들은 이미 고등학교에서 배우고 온 상태라 능숙하게 다루는 것이 부러웠다. 처음인 나는  버벅거리는 나 자신을 보고 열등감을 느껴서 방학 동안 매일 연습해서 그들과 비슷한 속도로 도면을 그리는 수준까지 만들기도 했다. 이후에는 여러 플러그인까지 활용하면서 그들보다 효율적으로, 빠르게 작업하게 되었다. 이후 Midas와 같이 구조 해석을 위한 프로그램을 다루면서 직업에 있어서 전문적인 툴을 익히게 되었다. 이를 통해 건축구조 회사에 취업하여 CAD로 설계도를 작성, 분석, 수정했고 본격적으로 Midas Gen으로 구조설계와 보강설계, 하중 테스트 등 전공에 맞는 전문 기능을 사용 왔다. 사장님은 멘사 출신의 상대적으로 몇 없는 건축구조기술사셨다. 어린 사회 초년생인 나와 대화가 잘 통했고, 정말 사장과 직원의 관계 이상으로 많은 것들을 알려주셨다. 일 뿐만 아니라 인생을 즐기고 좋아하는 일을 하라고.

 

비전공이 된 이유

학창 시절 공부와 이후 곧바로 연결된 사회생활만 하면서 해외여행조차 한번 못 가본 삶을 살면서 초년생이면 누구나 비슷한 시절에 하는 고민을 나도 경험했다. 당시 해외 대한 궁금증과 젊음의 모험의 패기로 해외 생활을 결심하고 해외 생활을 시작했다. 하지만 일은 해야 하기 때문에 평소 게임 분야에도 관심이 많았고, IT 관련 뉴스에도 관심이 있었기 때문에 프리랜서로 해외 모바일 게임 관련 자료를 수집, 분석하고 특집 아티클을 작성하는 작가로 활동하게 되었다. 해당 분석 보고서는 일본의 게임 언론사를 통해서 게임 개발사 등 게이밍 관련 기업에 B2B로 배포되고 있다. 이렇게 어느새 건축에서 IT관련 분야로 자연스럽게 이동되었다. 어릴 때부터 관심사였던 IT분야 이기 때문에 흥미를 계속 유지할 수 있었다.

시간이 지나 다양한 사업 지원 정책들에 관심을 갖게 되었고 창업에 대한 교육도 받았다. 사업계획서를 작성해 보면서 무언가 아이디어를 생각하고 아이디어를 구체화하고, 차별성에 대한 고민, 최종적으로는 BM까지 연결시키는 생각을 하는 등 창업을 통해 배운 것들도 많다. 이를 통해 당시부터 이슈가 되는 VR기술에 관심을 갖게 되었다. VR 콘텐츠는 사실 게임처럼 느껴지는 체험형 콘텐츠로 현재는 게이밍 개발 직군과 밀접하게 연관되어 있다. 따라서 주변 네트워크를 통해서 게이밍 분야 개발자로 성장하고 싶은 초급 개발자를 모집하고 개발 팀을 꾸려 체험형, 교육형 콘텐츠를 기획하고 좁은 사무실에 모여 함께 미니 프로젝트를 진행했다. 그들과 함께 아이디어를 생각하고 개발하고 프로토타입을 배포해 보는 경험을 했지만 나는 무언가 만족스럽지 못했다. 개발자 동료들은 이를 통해서 콘텐츠 개발이라는 경험을 포트폴리오로 쌓아갔지만, 나는 무엇을 얻게 되는가에 대해서 고민을 했다.
Unreal Engine을 활용한 VR 체험형 콘텐츠 제작 프로토 타입들

 

나의 꿈 선택과 동기

위 고민에 대한 이유를 찾아보면 결국 내가 전공이었던 건축에서 멀어지고, 어찌 저찌 개발자를 모집하여 제작을 하더라도 내가 실질적으로 가지고 있는 "전문"기술에 대한 뚜렷함이 사라지게 되었던 문제가 크다. 사업에서 인력, 재무, 행정, 관리 이것은 경영의 영역이지 나는 무언가 원하는 콘텐츠, 소프트웨어를 제작, 감독하기에는 기술자로서의 역량이 부족했다. 이러한 부진은 결국 콤플렉스가 되고 창업 자체의 장기적인 목적성에도 큰 걸림돌이 되었다. 그때부터 나는 "나의 기술부터 가져야 한다"는 목표를 가지게 되었다. 어릴 때 어른들이 괜히 "기술 배워라, 기술 배워라" 하는 말이 아니었다. 어른들 말이 맞다는 게 느껴졌다.

그럼 나는 이런 분야에 대한 흥미는 있는데, 그럼 구체적으로 어떤 일을 하면 "적성"에 맞을까를 고민을 오랫동안 했다. 아이디어를 구체화하고 구현하는 것, 즐겁게 할 수 있는 것은 초등학교이었던 나의 꿈이었던 프로그래머였다. 내가 가장 즐겁게 놀이처럼 몰입할 수 있던 것이며 훗날 시간이 지나도 후회하지 않을 꿈이기 때문이다.

그럼 게임 개발자가 되어야 하는가? 아니다. 섣부른 판단이다. 나는 게임 분야로부터 IT에 첫 흥미를 이끌어 왔지만 내가 제작하던 프로젝트들을 보면 "직업 교육", "안전 교육", "가상 체험", "가상속의 가상 카메라 기능"처럼 엔터테인먼트 목적은 아니다. 이는 곧 사람들에게 단순히 VR이라는 몰입 도구를 활용 할 뿐 어떤 기능들을 제공하고 개선하고 싶어 하는 목적을 가지고 있다.

그럼 내가 바라는 목적인 "기능 개선", "편리한 서비스 제공"이 현재 뚜렷하게 나타나고 있는 분야는 어디일까?라는 생각을 했고 결과 "웹 서비스""모바일 애플리케이션"이라는 것을 깨달았다. 현재 구글, 네이버, 카카오톡, 토스, 배민 등 하루도 멈추지 않고 새로운 기능을 출시하고 사용자들에게 감동을 선보이고 있다. 또한 새로운 기능과 새로운 하드웨어가 등장하면 또 그에 모든 서비스들은 적응해야 한다. 마치 스마트폰이 등장했을때 처럼. 나 또한 이러한 기능들을 편리하게 이용하며 느껴왔고 이런 기업들에서 목적을 가진 기능을 개발하는 사람이 되고 싶다는 꿈으로 정리가 되었다.
토스의 (다양한기능개발-이용자혜택제공-사용자증가-고객확보) 성장 과정은 흥미롭다


나는 지금 열정적으로 기술을 배워야 할 때다. 

 

 


 

 

Chapter 2. 꿈을 이루기 위한 시작

현재까지 내가 프로그래밍에 입문하는 과정에서, 공부를 위해 만들었던 환경은 다음과 같다. 장점과 단점, 느낀 부분이 크다.


공통

전반적인 생각
프로그래밍 언어 입문과 기능을 구현하면서 최종적으로 서비스를 완성, 이후 새 기능을 추가하며 서비스를 개선하고 기존 코드를 수정하며 유지보수, 효율적으로 만드는 것이라는 큰 흐름을 배웠다.

Java에 대한 생각
Java라는 메인 프로그래밍 언어를 선택하게 되었다. 처음엔 진짜 입문하기 너무 어렵게 느껴졌는데 반복되면서 뭔가 알아가는 재미가 있다. 깊게 파고 싶은 매력이 있는 언어이다. 단순히 한국에서는 많이 쓴다!라는 것으로 접근하긴 했지만 왜 많이 쓰이는지, 선배들이 얼마나 많은 시간을 갈아 만들어졌고 만들어지고 있는 언어인지 존경스러울 따름이다. 벽이 높긴 하다 하지만 벽을 기어 올라갈 갈수록 더 넓은 세상이 보이지 않을까?

다른 언어에 대한 생각
Python을 미니 프로젝트를 통해 맛볼 수 있었다. Java 과정 중에 선생님께서 하나를 파면 옆으로 다른 언어를 배우는데 큰 도움이 될 것이다라고 말씀하셨는데 당시에는 크게 와닿지 않았다. 하지만 Java를 한번 훑고 온 상태에서 Python을 접하니 정말 뭔가 배우는데 편한 느낌이 들었다. 물론 깊게 프로젝트를 진행하지 않았지만 흐름을 파악하고 구현하는데 첫 경험인데도 불구하고 뭔가 손에 익었다. Python이 초보자들도 쉽게 진입할 수 있다고 쓰여있는 것을 많이 보았지만 그래서 그런 것인지, 아니면 내가 Java를 한번 보고 와서 그런지 생각보다 금방 배울 것 같다는 자신감이 있었다. 


생활코딩 등 Youtube 및 블로그 콘텐츠

장점
첫 입문, 분명히 좋은 강의는 맞다. 처음 코딩을 시작하게 되면서 무지한 나에게 어떤 강의가 좋을까, Youtube는 세상에 없는 게 없으니까 당연히 처음 접근했다. 해당 채널의 개발자분은 가르침에 대해서 아주 능숙하시다. 또한 나처럼 입문하는 사람의 눈높이를 정확하게 파악하고 있다. 왠지 수년 전에도 나처럼 모르는 상태부터 시작한 경험자의 바이브가 느껴진다.

어려웠던 점
그런데 문제가 있다. 강의는 100점짜리인데 우선 Youtube다 보니 자가 동기부여가 쉽지 않다. 또한, 문제는 어떤 것을 공부해야 하고, 어떤 순서로, 어떻게 유기적으로 연결되는지 파악하기 어렵다. 이걸 스스로 만드려고 해도 정보들이 난무해서 어떤 게 맞는지 혼란스럽다.

느낀 점
위 문제점을 해결하고 싶었다. 웹 개발자가 되기 위해서 필요한 게 무엇인지 파악해야 되고 어떤 분야가 있는 건지 프런트엔드, 백엔드는 무엇인지 알아보게 된 계기가 되었다. 

 

멀티캠퍼스 - 국비

배운 것들 개요
웹 서비스를 개발하는 과정을 전체적으로 훑을 수 있다. 이 부분은 상당히 중요했다. "개발자로 성장"하기 위한 목표를 위해서 이것들을 배워야 한다는 가이드, 방향성을 제시해 주었다. 생활코딩과 같이 유튜브로 공부하는 것의 큰 단점이었던 어떤 것들을 배워야 홈페이지를 하나 만드는 가에 대한 목적성 없는 공부는 쉽지 않다. 학교를 다니는 것과 같다고 본다. 나는 이 교육과정을 통해서 내가 습득해야 하는 기술에 대한 "커리큘럼"의 구성을 배웠다. 또한 가장 기초적인 프로그래밍 언어들에 대하여 내가 직접 타이핑하고, 내가 직접 런을 돌리면서 작동되는 것을 확인했다. 최종적으로 팀 프로젝트와 발표까지 하면서 배포를 제외한 전반적인 과정을 경험했다. 배포는 다음 교육과정에서 배웠기 때문에 아래 언급할 것이다.

-팀프로젝트
팀프로젝트를 통해서 팀에서 필요한 것들을 간접적으로 느꼈다. 기본적으로 Git을 다룰 줄 알아야 되고, 커뮤니케이션 툴을 사용해야 돼서 이러한 부분을 사용해 보는 것들도 메인 언어를 배우고 홈페이지를 완성하는 것만큼 중요하다는 것을 알았다.

-조별 과제 팀 프로젝트에서의 팀장 역할 하기
이것들 마저도 처음 접하기 때문에 추가적으로 스스로 배워야 했고, 딱히 이 부분에 대해서 추가적인 강의는 없거나 미미했기 때문에 결론적으로 생활코딩을 접했던 것처럼 스스로 찾아내고 학습해야 했다. 모든 팀원이 이해도가 다르다. 그나마 내가 컴퓨터를 조금 더 다뤄본 상태였고, 팀장인 상태이다. "제가 Git 배워서 다음 주에 알려드릴게요."라고 말하고 주말을 이용해서 Git에 대해서 당장 필요한 지식들을 흡수했다. 컴퓨터를 하나 더키고 다른 팀원인 것처럼 1인 2역으로 각 로컬에서 커밋(작업)하고 Pull-Request 방식으로 병합하는 것들, 병합 충돌이 발생했을 때 어떤 식으로 표기되고 어떻게 수정할지 Branch와 Master의 관계 등 시도를 해봤다. 어설프지만 초보자인 내가 초보자들을 가르쳐야 하는 상황이니 더 눈높이를 낮추어 이해하고 배웠다. 그리고 팀원 모두에게 해당 지식을 전파하면서 팀작업 환경을 꾸릴 수 있게 되었다.

-팀프로젝트 코드 리뷰 부분
조금 참여도가 낮은 사람도 있고, 의지가 다른 사람도 있고, 이해도가 다른 사람도 있고 여러 사람들을 경험하면서 팀장으로서 그래도 나는 책임감으로 최대한 이끌어 나가자는 생각뿐이었다. 코드에 대해서 리뷰하는 시간도 적극적으로 참여하도록 유도했고 결과적으로 팀원들도 나의 노력에 잘 따라 주었다. 코드 리뷰는 주로 내가 주체자가 되어서 진행해야 했고 그래서 더욱 프로젝트 전체의 흐름, 프로젝트의 구조를 그들보다 잘 알거나 파악하고 있어야 했다. 따라서 실습 때 진행했던 것을 계속하여 스스로 복기하고 다른 프로젝트를 경험해보지 못했기에 실습의 내용을 명확한 기준점으로 삼고 그것을 기준으로 동료들에게 어떤 부분이 우리가 실습에서 구현했던 것과 비교해서 다른지에 대해서 이해시키는 방식으로 알려주고 나 또한 알려주면서 피드백으로 배우는 과정도 있었다. 각자 기능 구현할 때도 우리가 전체적으로 통일해야 하는 것들에 대한 규정을 세우고 통일성 있는 프로젝트를 만들고 싶었다. 이렇게 우선적으로 팀 내부에서 내가 알고 있는, 찾아낼 것 같은 선에서 최대한 오류에 대한 해결 하려 했다. 실습과 조금 다른 기능을 구현하면서 배우지 못했거나 공식 문서의 가이드, 블로그 까지도 참고하며 해결되지 않는 오류가 발생하면 선생님과 조교님에게 질문을 통해서 해결하고 해당 오류 해결도 익숙해지게 되었다.

-프로젝트 역할 분배 및 병합 관리
Git도 마찬가지로 내가 연습때 했던 내용을 팀원들에게 교육했고 그대로 진행하여 조금씩 환경은 다르지만(Windows 팀원과 Mac도 Intel, Silicon 계열로 달라서 Sourcetree가 설치되지 않는 경우 Github Desktop GUI를 이용시키도록 했다.) 기본적으로 Git, Github는 어떤 환경에서도 동일하게 작동할 것이다라는 것으로 일부 팀원들이 어려움을 겪어서 원격으로 환경을 설정해 주었다. 후반부 돼서는 팀원들 모두 Git을 자연스럽게 사용하게 되었다. 내 로컬을 원본 Master 브랜치로 고정하고 나 또한 새로운 Branch로 작업하고, 팀원들도 각자 Branch를 사용했다. Pull-Request 방식으로 팀원들의 프로젝트를 병합했다. 병합 과정 중에 이 부분을 구현한 것에 대한 코드 설명을 듣고 확인하는 과정과 중복코드나 병합 오류는 해당 팀원에게 내용에 대해 설명하고 충돌부를 제거해 가면서 병합 과정을 진행했다.

-커뮤니케이션 부분
커뮤니케이션 툴로는 당시 Notion을 사용하고 싶었지만 해당 프로그램이 익숙하지 않은데 시간은 촉박하고 내가 사용하기 편하면서 공유되는 툴을 찾아보았다. Smartsheet라는 엑셀 형식의 스케줄 관리가 가능한 툴을 이용했고 전체적인 로드맵을 작성하고 팀원들에게 설명했다. 기획 단계에서는 GitMind라는 마인드맵 툴을 통해서 팀원들과 아이디어를 공유하고 정리하게 되었다. 매주 일지를 작성할 수 있도록 양식을 제공하고 팀원들의 작업 내용을 파악하고 다음 주 진행 목표에 대해서 회의를 개최했다.

-발표 부분
발표자료는 전체적인 테마 디자인, 개요, 프로젝트 소개, 기획 과정, 비즈니스 로직, 내가 구현한 부분에 대한 설명부, 후반부 느낀 점 등 전반적인 내용을 작성했으며 팀원들에게는 본인의 기능 부분에 대한 페이지만 작성해서 추가적으로 삽입했다. 발표 또한 전체적인 자료를 만들었기 때문에 대본을 작성해 보면서 발표 시간에 맞추도록 수차례 연습하고 완성시켜 발표와 프로젝트 시연까지 진행하게 되었다.


어려웠던 점
기본적으로 진도가 빠르다.
선생님이 실시간으로 가르친다 = 놓치면 지나간다 = 다음 것들이 모두 이해가 안 되기 시작한다의 반복
이런 긴장감으로 엄청 집중했지만 나도 놓친 부분이 많았다. 이를 보완하기 위해 녹음을 해서 놓친 부분을 강의 외 시간에 복습했다.

수강생들의 이해도가 부족한 경우가 많다 = 별것 아닌 에러가 자주 발생한다 = 이것을 고쳐주느라 실시간 시간이 흘러간다 = 다른 수강생은 멀뚱히 쳐다보고 있어야 한다.라는 단점이 있다.
이를 해결하기 위해 나는 선생님이 그 에러를 고치는 과정, 어떤 것이 틀렸는지 확인하는 물어보는 과정, 그 수강생이 고치는 과정을 화면 공유를 자세히 보면서 "나는 저 실수 안 해야지"라고 고치는 과정을 익혔다.

실제로 큰 도움이 되었다. 어떤 수강생은 똑같은 실수를 계속하는데, 파악하지 못한다. 나는 처음 접하는 오류인데, 그전에 다른 수강생이 고치는 것을 기억하고, 기록해 둬서 스스로 오류 부분을 찾을 수 있었다. 그 외의 오류가 발생했을 때 선생님한테 질문하는 과정을 거치면서 오류 발생을 점점 줄일 수 있었다. 이것도 반복 숙달 되다 보니 딱 보면 어디서 에러가 있겠구나 파악하는 눈이 생기더라. 사람은 누구나 실수를 한다. 하지만 실수를 반복하는 것을 줄여 나가는 것이 성장하는 것 아닐까.

부족한 점, 문제점 인식
6개월 가까이 과정을 참여했지만 이해도가 부족하다. 물론 뭔가 배운 느낌이지만, 무언가 많이 비어있다. Java의 벽을 직접적으로 체감했다. 클론 코딩을 하더라도 이해도를 가진 클론 코딩이 필요하다. 무언가 이론적으로 많이 부족함을 스스로 느꼈다. 용어들에 대한 자신감이 없다. 내가 설명하는데 맞는지 틀리는지 나 스스로도 정확하지 않다고 생각된다. 그래서 취업에 아직 부족하다는 느낌을 많이 받았다. 왜 이런 일이 발생했을까? 그냥 Java가 어려운 것일 뿐인가? 이런 문제는 왜 발생했을까. 문제를 해결하고 싶어졌다. 

결론적으로 나는 "자기 주도적 학습을 못했다."라는 생각을 한다. 정해진 시간에 선생님은 강의를 진행하고, "Follower"의 입장으로만 배웠다. 시간이 촉박하고 놓치는 부분에 대해서 그저 따라가야 했다. 프로젝트도 실습 내용을 따라가는 것으로 만족해야 했다. 조금 추가 기능을 넣더라도 뭔가 내가 주도한 것이 아니라는 생각이 맴돌았다. 그래서 뭔가 배웠는데 나에게 남은 것이 별로 없는 느낌이다. 그래서 자기 주도적 목표가 강한 항해 99라는 곳을 찾게 되었다. 자기 주도적 학습이 뭐고, 그런 과정을 거친 선배들은 어떻게 공부하고 또한 개발자가 되었고, 또한 개발자가 돼서도 계속해서 공부하는지 그 부분이 궁금했다. 

 

항해 99 - 자비

항해를 선택한 이유
물론 강의를 통해서 프로그래밍 언어와 프로젝트 구조를 파악하는 것은 중요하다. 하지만 이것만으로 단지 "몇 개월 가지고 단기간 기술을 습득했다."라고 하기엔 부족한 부분이 너무 많은 문제점을 스스로 인지하고 있다. 그래서 난 이곳에 와서 단순히 강의를 산 것이 아니다. 개발을 배운다는 것은 기본적으로 해야 할 1차원 적인 목표지만 좀 더 나아가 개발자가 공부하는 방법을 배우고 있다. 개발자는 평생 공부해야 하기 때문이다. 그리고 실제 개발자 생활을 경험해보진 못했지만, 이 교육 과정은 그것을 지향한다고 하기 때문에 강의 뒤에 숨겨진 커리큘럼이 그들의 노하우인 듯하다. 출제자의 의도를 파악해야 한다. 사업의 의도, 기능의 의도를 파악해야 한다. 여기는 강의가 중요한 게 아니다. 개발자의 스케줄처럼 생활하는 것을 실천하도록 유도하여 적성에 맞는 사람을 이끌어 나가는 것 같다. 그 의도대로 나는 개발자의 생활을 그대로 실천해보고 있다. 여기서 진정한 적성에 맞는가? 가 갈리는 것 같다. 나는 내가 적성에 맞는다라고 생각한다. 왜냐하면 지금 이런 생활, 공부, 프로젝트 패턴에 쉽게 적응되었고 즐겁고, 나 스스로 뿌듯함을 느끼고 있다. 아직 본과정도 시작 안 해서 이전 과정으로 오후 3시부터 9시까지만 진행되지만 나는 이미 한 달 전부터 매일 오전 7시부터 밤 12시까지 이러고 있다.

현재까지 느끼는 부분
나는 첫 번째 국비에서도 나 나름대로의 최선을 다했지만 나의 전반적인 태도, 수업 환경을 다시 생각해 보니 수동적으로 참여했다고 말할 수 있다. 이는 교육 기관의 문제가 아니다. 지원을 통해 무료로 입학하고, 과정을 듣기 때문에 마인드의 차이가 발생한다.

나는 항해를 내가 찾아보고 내 돈을 주고 내가 주도적으로 참여했다. 또한 이 교육과정의 목표 또한 자기 주도적인 학습을 유도한다. 두 형태의 교육과정을 통해 나의 태도의 차이를 느끼고 있다. 아무도 신경 쓰지 않는 환경. 내가 스스로 강의를 틀고, 모르는 것을 물어보고, 주변에 도움을 요청해야 한다. 이러한 액션조차 없으면 사실 아무것도 남는 게 없는 환경이다. 유튜브나 블로그를 통해서 이러한 부트캠프에 대해 안 좋은 리뷰들도 종종 있었고 겁을 먹기도 했다. 하지만 이미 자기 주도적으로 움직여야 한다는 것을 알아챈 것 만으로 나는 투자하는 시간이 돈이 아깝지 않다.

현재도 본과정이 시작하지도 않았고 스터디 자습 기간만 한 달 이상 지나고 있지만, 나는 주도적으로 스터디 팀원들을 이끌고 있다. 다들 조용하다. 나도 과거엔 그랬었다. 그런데 지금은 다르다. 질문하기 위해 팀원들을 이용하고 있고, 팀원들을에게 내가 배운 부분에 대해서 쉽게 설명하기 위해서 먼저 말을 걸고 더 정확한 정보를 전달하려 노력하고 있다. 기본기들을 다시 배우는데 있어서 전 과정과 비교하여 부정확했던 부분들을 고치고, 흘리고 지나갔던 부분들을 다시 주워 담고 있다. 게으르게 복붙하지 않고 하나 하나 코드를 다시 치면서 키보드와 Java와 친해지고 있다.

거시적인 목표
역사가 깊은 Java라는 점에서 선배들은 이미 1,000보 앞서 있고, 또한 새로운 기술을 받아들이면서 계속하여 걷고 있다. 나는 고작 한 발 내밀었을 뿐이고 현실적으로 같은 24시간을 사용하기에, 그 격차를 줄이는 것은 불가능에 가깝다. 하지만 나는 조금 힘내서 뛰어본다면 손배들과 함께 목적지로 가다 보면 처음 999보 차이를 900보, 800보처럼 차이를 어느 정도 따라잡지 않을까? 조금 지나면  이제 한발 내딛고자 하는 후배에게도 도움이 되지 않을까? 그 격차를 줄이기 위해서는 나는 뛰어야 된다.

넓은 범위의 이론과 알고 있어야 하는 당연히 기본이지만 프로그래밍의 기본적인 목적을 잊지 말자. 처음 애니악 계산기는 군용이긴 하지만 결국 인간의 불편함에서 시작한 아이디어를 해소하면서 퍼져 사람들에게 편리함을 제공하는 컴퓨터의 시초가 되었다. 나의 코드에서부터 최종적으로 하드웨어에서 표현, 작동되고 더 나아가 사람들에게 편리함을 제공하는 것이 목적임을 잊지 말자.