개발력

병특이 85일 앞으로 다가왔다. 여러가지 생각이 교차하는 가운데, 내가 집중할 부분에 집중하려고 일단 뭐든지 간에 개발을 시작했다. 가지고 있는 도메인에 가지고 있는 서버를 연결했는데, 예전에는 도메인과 WAS연결은 생각도 못하고 있었는데 병특 3년동안 난 정말 많은 것을 배웠구나.. 이제 DNS가 두렵지 않고 환경설정이 두렵지 않다. 개발 및 배포를 위한 프로세스, 체계를 모두 익히고 오픈소스들을 어떻게 활용해야 하는지 안다.

혼자서 일인 다역을 하려면 도구가 필요하다. 물론 머리가 좋아서 발빠르게 대처하고 남들보다 빠르게 만드는 것도 중요하겠지만, 최소한 이 IT 세계에서는 도구의 사용에 따라 승패가 결정된다고 본다. 주변에 나름대로 개발 세계에서 인정을 받은 친구들을 보면 둘 중에 하나이다. 컴퓨터의 기본과 역사부터 해서 정말 C언어와 어셈블리의 뼈쏙까지 알고 있으면서 도스 시절 그래픽 라이브러리 없이 어셈으로 그림을 그리던 친구들이 있는가 하면, 나중에서야 프로그래밍의 매력을 느끼고 여기 저기 오픈소스들을 가져다가 자신만의 작품을 만든다. 
 
나는 전자던 후자던 사실 개발을 하는 데에는 방법론적으로는 상관이 없다고 본다. 나 같은 경우는 이 둘의 중간에 있는 것이나 마찬가지다. 정올 경시 출신인 나는 어디 소스 떼다가 붙히는 것과는 전혀 거리가 멀었다. 그렇다고 내가 어셈블리와 깊이 있는 OOP에 대한 이해로 프로그래밍 세계를 자유 자제로 조절하는 것도 아니였지만, 그래도 최소한의 깊이는 어느정도 지식과 실무를 통해 갖추고 있다 생각한다. 또한, 직장생활 6년동안 웹 언어를 접하면서, 특히 3년 전 자바 프로그래밍으로 나의 방향을 정하면서 수 많은 오픈소스 기술들을 접하고, 그러한 오픈 프레임워크를 활용해서 나만의 작품을 만드는데에 사용하고 있다.

잠깐 내 자랑을 해본다. 아니, 사실 누구나 다 가질 수 있는, 사실 별로 쓰잘때기 없는, 예를 들어 인터넷의 “머드초보” 님에 비하면 정말 새발의 피보다도 못한 실력이긴 하다. 하지만 나의 블로깅의 의미는 남에게 정보를 전달하는 것과 동시에 나를 발전시킬 수 있는 생각의 정리이다. 내 능력을 정리해본다.

한 5년 전에는 아파치와 톰켓을 따로 물리는 것도 몰랐고 서블릿 개념도 몰랐다. jar파일은 뭐하는 파일인지도 몰랐고 사실 WAS라는 자체를 몰랐다. 설정은 커녕, 어디 오류 하나라도 나면 거의 1주일은 밤을 샜던 것 같은데 지금은 개발부터 형상관리, 부하 테스트, 배포 등 왠만한 것은 혼자 다 할 수 있다. 자랑은 아니지만 오픈 프레임워크를 쓰는 것도 문제가 아니다. 웹의 front-end와 back-end 를 모두 다루고 C/S간의 TR송수신이 가능하다. 특히 내가 가지고 있는 프레임워크로 back-end의 모든 객체는 DB와 클라이언트와 자동으로 물릴 수 있게 된다. flex를 다루며 blazeDS를 보며 이러한 JNDI와 비슷한 형태는 무조건 중요하다고 생각하고 배웠다.

mysql/mssql/oracle 의 3대 DB를 설계부터 pk/fk 로 엮고 나름대로 cost값과 툴로 튜닝도 가능하다. 어떤 부분에 인덱스가 부족한지, 어떤 DB형태가 과부하를 먹고 있는지. 물론 이러한 DB자체에서 뿐만 아니라 ER을 통해 DB를 Logical로 관리하고 형상화 시킬 수 있다. 

 client는 내가 가장 부족한 부분 중 하나이지만, jQuery를 통한 페이지의 동적인 처리가 가능하다. 웹 표준 코딩은 html5 스타일로는 가능한데, 사실 표준 코딩보다는 개인적으로 3년전 했던 장차법 시행령에 따른 모 대기업 사이트의 수정을 경험삼아 장차법에 따른 접근성 코딩이 가능하다. 

디자인 쪽은 솔직히 플래시 사용은 전무하며 그림 그리는 실력이나 일러스트는 정말 부족하다. 하지만 가장 자신있는 부분은 UI와 레이아웃 디자인. 인터렉티브한 디자인을 위해 Catalyst를 사용하여 장면을 만들고 RIA를 만들기 위한 기초적인 부분이 가능하다. 

솔직히 나는 남들 공부할 시점에 이렇게 개발력을 키워 왔다. 물론 아직도 배워야 할 기술이 많지만 깊이를 만들었고 어느 정도 오픈 프레임워크를 다루고 최소한 웹에서 가장 크게 이슈화 되어 다뤄지는 부분들은 다루고 구현할 줄을 알게 되니 사실 두려울 것이 없다. 

그렇게 해서 나는 슈퍼 개발자의 길을 걷고 있다. 가장 부족한 것은 아무래도 기획력이겠지만, 어느 정도 컨셉이 잡히면 레이아웃 설계도를 만들고 DB를 설계하고 프로그램을 전체적인 부분에서 부분적인 부분으로 설계해 나가고, 레이아웃과 기획 의도에 따라 디자인을 하여 그 안에 C/S를 추가하여 완성시킨다. 이제 기획,개발,디자인 에 있어서 나 나름대로는 모두 가능하다고 자부할 수 있다.

이러한 능력은 내게 어떤 도움을 줄까? 사실 병특을 하면서 가장 힘든 것은 내가 사업을 진행했다는 사실이다. 3년여 간의 사업을 했던 시간은 내게 큰 도움이 되지 않을 것이라 생각했는데, 물론 개발 범주는 다르지만 개발자와 디자이너들, 기획자들을 다루면서 내가 느낀 것은 그들의 작품을 바라보는 시각이 부족했다는 것이다. 그러한 시각을 위해 내가 키워왔던 것은 아무것도 없다. 게임 개발사에 있으면서 3ds Max를 켜본 적도 없고 Visual Studio로 DX의 엔진을 만들려고 노력해 본 적도 없다. 기획서 정도만 이해하고 최초 나의 취지대로 부합할 수 있도록 하였지만 실질적인 작품이 없었다. 모두가 나름대로 자신들의 분야에서 경력이 있었기에 자신들의 의견을 내비추기 일수였다. 서로 탓만 하다 보니 실질적인 작품은 없다. 모듈화 해서 기다리는 개발자들은 스펙 탓하고 있고 그저 시각화 해서 보여줄 수 밖에 없는 디자이너들만 죽어난다. (정말 생각해 보니 개발팀은 뭐하고 있던 것인지 원.)

지금 와서 나 만의 웹 서버 모듈을 갖추고 있다 보니 위와 같은 생각이 든다. 아, 충분히 이걸로만 해도 편하게 먹고살 수 있을 것 같다. 그러니 우리나라 IT사회가 발전이 크게 없는 것이다. 관료체제, 정치 그런거 아무렴 좋다. 회사에 대한 소속감 없이, 편하게 살겠다는 마음으로는 아무런 발전이 없다. 기술은 끝없이 발전해 나가고 그 속에서 살아가려면 발전하고 공유하고 의논해야 한다.

슈퍼 개발자로써 이런 능력을 갖추면 물론 프로그래밍 적인 면에 치우쳐 있긴 하지만 나의 진로는 이렇게 정해진다. 기획/개발/디자인 분야 중 개발 쪽은 보안해 나가며 기획과 디자인을 이해하기 위한 노력을 해야 한다. 사실 지금의 내 시각으로는 촌스러운 디자인 밖에 나오지 않는다. 게다가 기껏 디자인 해서 잘 나오는 작품들은 이미 다 디자인 되어서 있던 것들이다. 

그렇게 갗춘 능력을 가지고 이제 나는 아이디어 구상을 하고 빠르게 프로토타입을 만들 수 있도록 해야 한다. 단지 종이에 끄적이는 것만으로는 아무것도 되지 않는다. 최소한 디자인이 대충이더라도 어느 정도 돌아가는 것을 만들고 평가를 해 봐야 한다. 그렇게 실질적으로 구현된 모습이 보이면 보다 더 많은 아이디어가 뿌리내릴 수 있기 때문이다.

역시 이렇게 블로그를 통해 정리하니 어느정도 가닥이 잡히는 것 같다. 무엇보다 최근의 웹 개발 트랜드는 UX 다. 인터렉티브 하며 역동적이면서 표준화 되고 기능적으로도 충분히 모두의 심정을 잘 고려할 수 있는 그런 개발. 이를 위해서 충분히 나는 최신의 클라이언트적인 기술들을 접해볼 필요가 있을 것 같다.

개발력이란 것은 여러가지를 함축하고 있다. 하지만 그 의미는 하나다. 생각을 현실화 하는 것. 웹 세상에서는 이러한 것이 그 어떤 기술보다 평등하다고 생각한다. 개발력을 키우기 위해, 부단히 노력하는 2012년을 만들어야 겠다는 생각을 해본다.