개발자들 사이에서 개발 숙련의 정도에 따라서 무협용어로 표현한다. 고수, 중수, 절대지존, 내공, 흡성대법 등의 용어로 표현을 하는 분들을 쉽게 접할 수 있다. 본좌 JSP에 입문하려는 문학도들에게 고수가 되는 길을 설파하려고 한다.(필자도 고수는 아니지만 고수가 되기 위해 무던히도 노력하고 있다.)
1. 영어는 기본이다.
중학교 입학하기 전 친구집에 가서 친구가 굿모닝, 굿애프터눈 하면서 필자에게 얘기할 당시 필자는 영어 대문자와 대문자 닮은 소문자만 읽을 수 있는 수준이었다. 그러나 BASIC으로 프로그램을 짜면서 FOR NEXT, IF THEN ELSE, 등 명령어들을 익히면서 중학교 졸업당시 교내에서 영어는 5손가락 안에 들었다.
영어는 쓰면 쓸수록 늘 수 밖에 없다. 개발 원서 보기를 두려워하지 말기 바란다. 영어 문장이 이해가 안되어도 자바 코드를 보면 무엇을 말하는 지 알 수 있지 않은가? www.theserverside.com이나 www.javaworld.com의 기사들을 자주 들어가서 보려고 노력하면 쉽게 영어로 된 문서들을 읽어낼 수 있다. 번역서 기다리다가는 맨날 버스 놓치고 택시만 타게 된다. 번역서가 더 싸다고 우기면 할 말이 없다.
2. 개발에서 재미를 느껴라.
아는 정도는 좋아하는 정도에 미치지 못하고, 좋아하는 정도는 즐기는 수준을 따를 수 없다는 말이 있다. 개발자의 적성이 중요하다는 것이다. 그래야 변화가 심한 개발자 세상에서 파도타기를 할 수 있다. 고고학이나 역사학 교수님들은 연륜이 쌓일수록 대접을 받는다. 전산과 교수님들은 이와는 반대의 취급을 당하기 쉽다. 불과 1년 전의 기술도 전혀 대접을 받지 못한다. 이렇게 급변하는 기술을 따라 잡으려면 배우는 것을 좋아하고, 자신의 코드를 이리 저리 바꾸기를 좋아해야 한다.
단지 취업하기 위해서 개발자가 되었다면 당장 사업이나 경영 등을 배우길 바란다. 아무나 개발하는 것은 아닌 것 같다. 문제 풀기를 좋아하고, 문제가 해결되어 제대로 동작하는 모습을 보면서 쾌감을 느낀다면 "딱 걸렸어. 개발자야"라고 말해주고 싶다.
3. 동급 또는 하수들의 질문에 답하라.
필자는 jspschool에 600여개, 2년 넘게 운영한 OKJSP 사이트에서 2000여개 이상의 질문에 답변을 달았다. 이것은 본인에게 크게 도움되었다. 보다 정확한 답변을 달기 위해서 인터넷을 검색하고, 책을 찾아보는 등의 일이 공부가 되었기 때문이다.
남에게 자신의 지식을 내어보이기 위해서는 근거가 필요한데 그 근거를 찾아보는 것이 공부가 되는 것이다.
4. 고수들을 찾아 다녀라.
인터넷 커뮤니티를 돌아다니다 보면 자신에 맞는 곳이 있고, 그곳의 운영자들은 대체로 고수들과 인맥을 형성하고 있다. 이런 곳에 자주 참여하고, 주변에 고수를 두어서 msn으로 괴롭히기 바란다. "형, 도와주세요. 제가 밥 살께요.", "형, 공부를 하려는데, 어떤 책을 살까요?", "안 바쁘시면, 저녁에 술 한 잔 사주세요." 고수들의 옆에만 있어도, 여러분의 머리에는 요즘 IT의 동향이라던가, 앞으로 어떤 기술이 뜰지 등의 데이터들이 자동으로 흘러들어오게 된다.
5. 게으른 개발자가 되라.
"머리가 나쁘면 손발이 고생한다"라는 말을 필자는 자주 얘기한다. 프로그램을 잘 하는 방법은 가능하면 코드를 줄이고, 일정한 규칙을 찾아내어서 함수화시키는 것이다. 요즘은 개발툴이 잘 되어있기 때문에, 텍스트에디터나 vi를 통해서 개발하는 것, 즉 타이핑을 많이 할수록 고생하는 개발자가 되기 쉽다. 도구를 잘 쓰면, 타이핑 수를 줄일 수 있다. 클래스 다이어그램을 그리면 자동으로 자바 소스들이 생성되는 툴들을 도처에 널려있다.
클래스 하나를 바꾸면 관련된 클래스들을 자동으로 바꿔주는 리팩토링 기능을 이용하는 것이 낫다. 컴파일하면서 에러난 부분 찾아서, 또는 프로그램 실행시키면서 실행 중 에러를 찾아내면서 변경하는 부지런한(?) 개발자가 되지 않기를 바란다.
6. 검색의 달인이 되라.
자신이 직면한 에러가 전세계 최초의 에러라고 자부할 수 있는가? 그렇다면 이미 누군가 그 에러를 만난 사람이 메일링리스트나 질답 게시판에 올려놓았고, 그에 대한 답변이 거기에 붙어있다고 생각하지 않는가?
각 커뮤니티의 Q&A게시판을 검색하는 요령을 터득하기 바란다. 필자는 생전 처음보는 에러가 나오면 www.google.co.kr에서 검색한다. 의외로 쉽게 그 에러메시지와 그에 대한 해결방법을 얻을 수 있었다. 단 여기서도 문제는 영어다. ^^
7. 자신의 코드를 오픈하라.
Ant의 탄생 에피소드를 보면 소스를 공개하는 것이 얼마나 발전적인 일인가 알 수 있을 것이다. 전세계 웹서버의 60%가 오픈소스로 제작된 Apache 웹서버라는 것도 역시 여기에 큰 힘을 실어준다.
자신의 코드를 공개하지 못하는 주된 두 가지 이유가 있다. 첫째는 정말 핵심기술이고, 이거 공개되면 돈 벌기 힘들어지기 때문에 감추는 경우이고, 둘째는 쪽팔려서이다.
이 책을 읽는 독자는 두번째 경우에 속할 것이라 생각되는데, 용기를 내라고 격려하고 싶다. 완벽하지 못한 소스라도 자신의 생각을 정리해서 문서화 시키고, 이것을 인터넷 사이트에 올리면, 의외로 많은 이들에게서 피드백이 온다. 어떤 이는 좋은 소스를 공개해주셔서 고맙다고 할 것이고, 어떤 이는 당신의 소스에서 이 부분을 이렇게 고치면 좋지않겠냐는 의견이다. 또 한부류가 있는데, 그 사람의 환경에 소스를 설치하니 이러저러한 에러가 나는데, 어떻게 해결할 수 있는지 질문해 오는 경우이다. 이러한 과정을 지나면 지날수록 자신의 코드가 예뻐지게 된다. 어쩌겠는가. 감추기 보다는 오픈하는게 낫다.
8. 문법보다는 로직이나 모델링에 집중하라.
필자는 12살 때부터 프로그램이라는 것을 짰다. 물론 그때는 책보고 짰고, 중학생이 되어서는 경진대회 나가는 것을 준비하느라 방과후 학원에서 열심히 알고리즘이라는 것을 배웠다.
당시 애플][ 컴퓨터로 BASIC 프로그래밍을 통해 배운 알고리즘을 요즘 자바 컴포넌트 안의 세부 로직을 구현할 때 잘 써먹고 있다.
자바냐 .NET이냐는 부차적인 문제이다. 주어진 프로젝트의 데이터 구조와 흐름, 업무의 성격을 정확히 파악하고 구성하는 모델링과 각 모듈에서 정확하고 빠르게 처리할 수 있는 로직을 익혀두면 .NET이나 자바의 문법에 맞춰서 구현하는 일은 어려운 것이 아니다.
9. 이 산이 아닌게벼
몇일 밤을 새어서 간신히 납기일에 맞춰서 프로그램을 완성했다. 그리고 오픈 전에 클라이언트에게 보여줬다. 그런데, "그가 원하는 게 이게 아니다"란다. 무너진다. 항상 자신이 무엇을 구현하는지 정확하게 알고 있어야 한다. 클라이언트에게 데모용 프로그램을 빨리 보여주고, 개발 중간중간 계속 커뮤니케이션 해가면서 클라이언트의 요구를 명확히 해야된다.
20:80의 법칙이 있다. 클라이언트의 요구 중에서 20%만 주로 사용하고, 나머지 80%는 자주 안 건드린다는 뜻도 된다. 중요하지 않은 문제에서 시간 허비하지 말기 바란다. 정말 중요한 20%만 제대로 해주면 프로젝트의 80%는 성공한 것이다.
10. 인터넷에서 유명해져라.
개발자이기 때문에 더 그렇다. ASP사이트 운영자 Taeyo님을 보면 시작은 아주 소박했다. 자신이 고민한 문제들을 어떻게 풀어갔는지 잘 정리한 문서들이 사람들을 모았다. 필자도 taeyo.pe.kr 사이트를 모델로 jsp 정보공유 사이트를 만든 것이 okjsp.pe.kr 이다.
부지런하게 요즘 개발자들의 필요를 알아보고, 관련 자료를 정리해서 올려놓는다. 관련된 사이트 돌아다니면서 이런 것 만들었다고 영업을 뛴다. 메일링 리스트를 통해서 격주로 사이트를 정리해서 메일을 보낸다. 이렇게 노력해서 사이트가 커지면 이력서 몇 장보다 훨씬 더 효과가 있을 것이라 생각한다.
취업을 위해서 자격증을 따는 것도 좋지만, 인터넷 커뮤니티에서 유명세를 타면, 누가 아는가 모셔갈지…
최근 댓글