2009년 09월 05일
웹 개발, 얘기 나온 김에...
웹 개발이 대세인데, 그럼 웹 개발을 하려면 무얼 알아야 하나요? 키워드를 나열해 볼까요?
PHP, JSP, MVC, ODBC(JDBC), Apache, HTML, Javascript, CSS, HTTP, DB table design
대략 이 정도를 알면 웹 개발하는데 아무 문제 없을 겁니다. 아마도 말입니다. 그런데, 이 정도 지식을 알아서는 혼자서는 잘할 수 있는데 둘 이상 인원이 팀 프로젝트를 하면 거의 망하는 법입니다. 허나, 소위 '학원파'들은 이 정도 지식을 가지고 취업을 합니다. 학원에서도 취업 가능하다고 장담 하는데다, 이 정도 배운 사람도 너끈히 뽑아주는 회사들이 많으니 말도 안되는 건 아닙니다. 그런데... 이건 뭐 수박 껍데기를 맛 본 수준이라고 해야지. 수박의 참 맛은 모르는 경지라고 할 수 있습니다. (아... 수박 껍데기도 먹기는 합니다. 쓰레기를 먹느냐고 지적하지 마시고...)
원체 기본(?)도 안되어 있는 개발자들 밖에 없어서 일단 채용은 합니다. 그리고,
출근하자마자 정신없이 교육을 시키는데 대략 이런 식이죠~
PM : '웹 개발의 초식을 순서대로 읇어 보아라.'
신입 : '무슨 말씀 이신지 내공이 부족하여 못 알아 듣습니다만...'
PM : '깡통 PC 한 대 받아 들고, 웹 사이트를 만들어 달라는 요구를 받았다 치면, 해야 할 일이 무어냐?'
신입 : '웹 서버 설치하고, PHP나 JSP로 코딩합니다.'
PM : '죽. 을. 래? 쌀도 없는데, 밥 지을 불부터 지피냐?'
신입 : '...'
PM : "JDK, 이클립스 설치하고, 설치 과정에 대한 보고서 만들어와...'
신입 : (삽질 좀 합니다...)
보고서 만들면, 보고서에 누락된 가지고 한참을 씨름합니다. 대략 이런 문제들을 가지고 질의 응답을 합니다.
- JRE와 JDK의 차이, J2SE와 J2EE의 차이점
- Java 1.5 버전과 1.6 버전의 차이로 발생할 수 있는 다양한 문제들
- Java 환경을 설정할 때 경로 구분자를 semi-colon으로 쓰거나 혹은 colon으로 구분해서 써야 하는 이유
- 코드 작성 원칙을 수립하고, 코드 포매팅 표준을 이클립스 설정 파일에 기록하고 공유하는 방법과 이유
- IDE가 무엇의 약자인지 알고, 이클립스를 사용해서 할 수 있는 작업의 종류와 필수 기능들은 무언가....
- 이클립스의 다양한 플러그인 종류와 다운로드 및 설치, 환경설정 방법...
예전에는 프로젝트 작업 표준화 문서를 만들어서 배포하고, 무조건 따라하라고 시켰는데, 개념은 물 말아 드시고 맹목적으로 따라하기만 하는 개발자들이 많더군요. 그래서 이제는 문서를 먼저 건네주지 않고 며칠 정도 삽질을 시켜 본 다음에 공식 가이드를 주고 읽으라 합니다. 자신의 무지를 깨닫지 않으면, 조심성이 없이 진도부터 나가려고 애쓰다가 큰 사고를 칩니다.
기본 환경을 설치하고 나면 웹 서버를 설치해야 합니다. 여기서 또 난관이 있죠. Apache라고 하면, 웹 서버만 떠올리는데 아파치 재단에서 나오는 솔루션들이 엄청 많습니다. Apache Web Server와 Apache Tomcat Server는 비슷해 보이는데 전혀 다른 기능을 제공하죠. 게다가 Apache commons libraries를 쓸 줄 모르면 웹 개발이 피곤해 집니다. (소위 바퀴를 재발명 하는 삽질을 하는데, 자세한 얘기는 생략...)
Tomcat 서버를 설치하는 과정은 어렵지 않습니다. 설치 프로그램 받아서 실행하면 그만이니까요. 그런데, 이게 끝이 아닙니다. Tomcat 환경 설정 파일을 수정하다 보면 요상한 것들이 튀어 나옵니다. URI encoding을 UTF-8으로 하라지 않나, connector 라는게 2개나 있어서 하나는 8080 포트 다른 건 또 AJP라는데 포트가 다릅니다. URI와 URL의 차이점을 설명합니다. (환장하게도 이것도 모르는 웹 개발자가 많아요.) Unicode에도 여러가지 인코딩 방식이 있다는 점을 알아야 합니다. 왜 MS949나, KSC5601이 아니라 UTF-8으로 인코딩 하는지 역시 설명합니다. AJP 프로토콜이 왜 필요한지, 설명하면서 Apache web server와 Apache Tomcat 서버의 상관 관계를 이해 시킵니다.
웹 서버를 설치하고 나면, JSP로 'Hello world'를 출력하게 합니다. 이건 너무 쉬운 문제라고 생각할지도 모르겠어요. JSP 페이지를 만들기 위한 제반 환경을 설정 안하고 작업하면 캐 맞습니다. 이클립스의 워크스페이스(workspace)와 프로젝트 생성 원리 - 원리라고 하니 좀 거창하지만... - 를 모르고 무작정 아무 폴더에다가 만들어 버리면, 팀 단위 개발을 안해봤다는 증거이고... CVS 이건, Subversion 하여간 다양한 소스 형상관리 도구의 필요성을 설명합니다.
형상 관리만 필요한게 아닙니다. 팀 프로젝트를 하려면, 개발자 별로 각자 작업한 결과를 빌드하고 공통 개발 서버로 전송(deploy)하는 방법을 알아야 합니다. Ant 혹은 maven 같은 도구를 쓸 줄 알아야죠. 신입 머리에 스팀 들어 갑니다... 아직, 'Hello world'도 찍지 못하고 있으니까요~
여기서 또, 컴파일과 빌드의 차이가 무언지를 묻습니다... 어디서 많이 듣기는 했는데 제대로 대답을 못하죠. 결과만 잘 내면 그만이지 않냐는 표정을 짓기도 하는데, 배만 부르면 장땡이니 맨날 햄버거만 먹고 살아도 된다는 얘기와 일맥상통하는 얘기가 되겠습니다. 음식은 몸을 지키는 것이고, 지식은 마음을 키우는 것이죠~ 프로라는 사람들이 자신이 하는 일이 어떤 일인지도 모르다면, 오죽이나 고객들이 믿고 일을 맏기겠습니다.
여기까지 설정하고 나면, 그 과정을 모두 문서화 합니다. 각 워크스페이스의 위치, 환경설정 변수 내역, 서버와의 통신 방법 (형상 관리 및 통합 개발 서버는 별도의 서버를 사용하니까요) 등인데, 원래 Project Leader가 알아서 일괄 작성합니다만... 문서 작업하는 버릇을 들이기 위해서 신입 사원들에게 한번씩 경험 시킵니다. 오타와 문법, 띄워쓰기와 문장력 검사는 덤 입니다.
그리고 각장 작성한 작업환경 설정 결과를 팀원 모두에게 메일을 보내게 합니다. 메일을 보낼 때 인사말 쓰는 법, 본문을 최대한 짧게 쓰는 법, 맺음말을 잊지 말아야 한다는 점, 서명을 포함시킬 것 등등 기본 매너를 알려줍니다. 세상에 요즘 대기업 신입 중에 공적인 메일 보내는데 메일에다, '안녕하세여~'라고 쓰는 이도 있더군요. 좀 있으면 방'가방가'도 나올 듯 합니다. 남들이 그런다고, 우리도 그러면 구멍가게 신세 못 면합니다. 최근에는 직원들 중에 이런 경우가 나올까봐 외부로 보내는 메일 하나하나 보내는 거 다 확인하죠.
이제... Hello world 찍습니다. 그럼 'Helo World'가 출력 되면 짝짝 박수 치느냐? 아니예요. JSP 내장 객체의 라이프 사이틀에 대해서 묻습니다. application, session, request, page 등 다양한 scope를 이해하고 있느냐를 묻습니다. JSP로 막 코딩 했을 때, 발생하는 문제 (UI와 비즈니스 로직의 결합) 들에 대해서 아는지 확인 합니다. 모르면, 또 한참 설교를 들어야 겠죠.
다음은 DB와의 연결 및 쿼리를 수행하고 결과를 찍는 과정을 가르쳐야죠. DB와 톰캣 서버는 어떻게 통신하는 걸까요? 프로세스간 통신일까요? 아니면, 네트워크 통신인가요? jar 파일을 톰캣 서버에 등록하는 과정과 JNDI의 원리를 학습합니다. JDBC 드라이버를 초기화 하는 과정을 통해서, 재사용성의 원리를 알게 됩니다.
여기까지가 기본 1주일 정도의 교육 코스가 되겠습니다.
P.S. 1
직원들을 계속 채용하면서 교육 중인데, 매번 떠들기 귀찮아서 블로그에 교육 과정을 써 놓을 생각입니다.
월요일에 출근하는 신입이 이 글을 보면 무얼해야 할지 알 수 있겠죠. ^^;
P.S. 2
친절한(?) PM 같아 보일 수도 있지만, 반전이 있습니다. 1주일 코스를 수 차례 못 따라오면 탈락 시킵니다.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- web (웹) by kaos119
- 초보 Java 웹 개발자들을 위한 학습 로드맵 by 권남
- [펌]초보 Java 웹 개발자들을 위한 학습 로드맵 by 그런지
# by | 2009/09/05 20:34 | Development | 트랙백(1) | 덧글(16)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : 유니의 생각
웹 개발을 하려면 무얼 알아야 하나요?...more
하지만, 이렇게 정성들여 가르쳐주시는데 그걸 따라가지 못하는 것 또한 회사에 누가 되겠지요.
ㅡ_-); 저도 같이 공부하면서, 저녀석이 나랑 같이 면접을 가면, 그 회사를 위해서 저녀석은 절대 뽑지 마세요.
라고 말할만큼 자바의 J도 모르는 녀석이 있었을 정도였으니까 말이죠.
지금에 와서 보면 그녀석이나 저나 오십보백보네요.
+_+) 써니님의 블로그를 보면서 공부를 따라해야겠습니다. 즐건 주말 보내세요.
저를 냉정하게 평가하시는 분들은 뭐... '돌팔이'라고 부르니까요~ ^^;
제가 작년 프로젝트에서는 90%에 속한 사람이었잖습니까?
농담 반, 진담 반...
정말 몸이 않좋아서 나왔지만... 많이 배웠지요.
개발자 커뮤니티에서 이런 거 몰라도 밥 먹고 사는데
지장없다고 떠드는 사람들이 넘쳐 나던 걸요.
웹 개발하고, 임베디드 쪽은 같은 자바라고 해도 전혀 달라요~
담에 임베디드 얘기 할 기회가 있겠죠~ ^^;
참고하겠습니다 ^_^
공개할 수 있는 구체적인 내용은 따로 분점에 게시하도록 하겠습니다.~
고맙게 구경하고, 감상하고 갑니다.
제 블로그도 보시고, 가능하면 링크하여 진실을 홍보해 주시면 감사하겠습니다.
감사합니다.
http://blog.paran.com/krhan1233/33767287
수많은 시스템과 설정값들이 얽혀있는 미궁은 언제쯤 정리가 될지.
따라오지 못하면 탈락시킨다고 해도 일단 웹이 어떻게 돌아가는지를 가르쳐주시니 좋은 PM이신듯.
미궁이라는 표현은 적절한 듯 합니다.