더 나은 프로그래밍을 위한 제언

요즘 “대한민국 개발자 희망보고서”를 읽고 있다. 현장의 얘기가 체계적으로 정리된 느낌과 함께  평소에 알고 있으면서도 실천하지 못하는 부분에 대해 내 자신을 다시 한번 일깨워 주고 있다. 그 중 코딩에 관한 가장 기본적인 얘기가 있어서 인용한다.


더 나은 프로그래밍을 위한 제언


제발 줄 좀 맞추자
프로그래밍을 잘 하는 사람과 그렇지 못한 사람의 차이는 바로 줄 간격을 맞춰서 프로그램을 짜느냐에 달려 있다고 나는 과감히 주장한다. 왜냐하면 그 동안 수많은 개발자를 보아왔지만 줄을 제대로 맞추지 않고 프로그램을 제대로 짜는 사람은 본 적이 없기 때문이다. 보기 좋은 코드가 디버깅하기 좋다. 제발 기본에 먼저 충실하자. 알고리즘과 자료구조에 대한 이해는 기본이다. 그런 다음에 기교를 발휘해도 늦지 않는다.

백문이 불여일타
“프로그래머가 되는 가장 좋은 방법은 프로그램을 작성해보고, 다른 사람이 작성한 훌륭한 프로그램을 공부하는 것이다.”
훌륭한 작가 중에서 책을 많이 읽지 않은 사람을 보았는가? 마찬가지로 좋은 프로그램을 만들기 위해서는 좋은 프로그램을 많이 보아야 한다. 무에서 만들어지는 것은 아무것도 없다. 책에 있는 소스나 공개 소스를 스스로 분석해보자. 그러나 이보다 더 좋은 방법은 직접 짜보는 것이다. 직접 짜보는 것만큼 훌륭하게 배우는 방법은 없다.

선설계 후코딩
항상 프로그래밍을 하기 전에 선설계 후코딩하는 습관을 들여야 한다. 생각하고 계획하는 프로그래밍을 하라는 말이다. 프로그래밍을 하다가 막히는 부분에 가서야 생각하는 것은 좋지 않은 습관이다. 프로그래밍 시간이 배로들뿐더러 수정에 의해 또 다른 문제가 야기될 개연성이 크다. 계획을 하되 머리속으로만 하지 말고 문서로 작성하여 기억이 유실되지 않도록 해야 한다.

친절한 주석씨
주석은 습관이다. 주석은 타인에 대한 배려다. 친절한 프로그래머가 되는 지름길은 주석을 잘 다는 것이다. 시간이 날 때 주석을 다는 것이 아니다. 주석은 프로그래밍의 일부분이라는 인식을 갖고 실천해야 한다. 주석을 달지 않으면 본인도 시간이 지나면 잘 기억이 나지 않는다.

3종 언어 세트
나의 경험으로 볼 때 프로그래밍 언어는 최소한 3가지는 익혀야 한다. 가급적이면 소프트웨어 프레임워크에 맞는 언어를 각각 익히는 것이 좋다. Client/Server, .NET, J2EE 프레임워크에 맞는 Powerbuilder, Java, C#을 예로 들 수 있다. 그렇지만 이 세가지 중에서 반드시 자신의 전공부야는 있어야 한다. 하나의 언어를 배우더라도 다른 언어에서 금세 응용할 수 있도록 충분히 이해해야 한다.

나만의 테크노트
자신만의 노하우를 반드시 정리하라. 가장 큰 재산이 된다. 일전에 프로젝트를 하면서 나만의 테크노트를 한 권씩 만들어 정리한 적이 있었는데 매우 유용했다. 그렇게 습득한 지식은 책에도 잘 나와 있지 않는다. 기록을 하지 않고 다시 복기하려면 엄청한 시간과 노력이 또 다시 요구된다. 테크 노트를 정리하는 일은 시행착오를 줄일 수 있도록 해 줄 뿐만 아니라 전문가로 가는 노하우를 하나씩 쌓아가는 기쁨도 느끼게 된다. Taeyo ASP & .NET 웹사이트가 성장한 배경을 살펴보라. 내일 당장 그대만의  테크노트를 한 권 장만하라.

코딩이 뭐길래
프로그래머는 절대 코딩만 하는 사람이 아니라고 누차 강조했다. 코딩 지상주의를 절대 경계하라. 어느 정도 코딩 실력이 올라가면 데이터베이스, 아키텍쳐 등의 유사분야의 영역에 대한 지식을 넓혀라. 때론 일반적인 지식도 필요하다. 큰 그림을 그릴 수 있어야 한다. 설상 프로그래머로 자신의 경력개발경로를 설계한다 하더라도 다른 분야에 대한 학습은 꼭 필요하다.

ASP: MSXML2.ServerXMLHTTP 사용하여 원격 웹서버 내용 갖고 오기

HTTP를 구현해 놓은 여러 컴포넌트들이 있지만 윈도우2000부터 기본으로 설치되는 MSXML2.ServerXMLHTTP 컴포넌트를 이용하여 원격 웹서버의 내용을 갖고 올수 있다.

가장 기본적인 방법은 다음과 같다.

<%  
sUrl = "http://www.ecplaza.net/"  
set oHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")  
oHttp.Open "GET", sUrl, False  
oHttp.Send ""  
Response.Write oHttp.ResponseText  
Set oHttp = Nothing  
%>  

GET 방법으로 갖고 온 HTML을 화면에 출력하는 루틴이다. POST 방법으로도 요청할 수 있다.

<%  
sUrl = "http://river.ecplaza.net/form.asp"  
set oHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")  
oHttp.Open "POST", sUrl, False  
oHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"  
oHttp.Send "subject=test&contents=message+body"  
Response.Write oHttp.ResponseText  
Set oHttp = Nothing  
%>  

오류 처리는 Send 메쏘드를 호출하기 전에  On Error Resume Next를 적어주고 오류발생 여부를 체크하면 된다.

<%  
sUrl = "http://river.ecplaza.net/form.asp"  
set oHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")  
oHttp.Open "POST", sUrl, False  
oHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

On Error Resume Next

oHttp.Send "subject=test&contents=message+body"  
If Err Then  
Response.Write "Error:" & oHttp.ParseError.URL & "<br>" & _  
oHttp.ParseError.Reason  
Else  
Response.Write oHttp.ResponseText  
End If  
Set oHttp = Nothing  
%>  

한라산 등반 (영실 코스)

지난 주말에 한라산에 다녀왔다. 백록담까지는 가지 못하고 영실코스로 해서 윗세오름까지만 올라갔다. 왕복 2시간반정도 걸렸는데 등산로도 잘되어있어서 힘들지는 않았다.

사용자 삽입 이미지한라산을 가는 코스는 다섯개가 있는데 길이는 짧지만 오백나한, 병풍바위등 경치가 좋은 영실코스를 택했다. 백록담을 가려면 관음사나 성판악코스를 타야하고 왕복 8시간정도 걸린다고 한다.

사용자 삽입 이미지
사용자 삽입 이미지
영실코스 입구. 입구부터 멀리 보이는 바위들. 차로 해발 1280미터까지 갈수가 있다.

사용자 삽입 이미지
날씨가 너무 좋았다. 비온뒤라 하늘도 정말 맑고. 바다랑 산방산도 한눈에 다 들어오고.

사용자 삽입 이미지

사용자 삽입 이미지영실기암. 정말 장관이다. 카메라에 다 담지 못하는게 아쉽다.

사용자 삽입 이미지전세계에서 한라산에만 산다는 구상나무이다.

사용자 삽입 이미지가운데로 희미하게 선이 나있는 부분이 등산로. 많이 올라왔다. 이제 조금만 더가면 윗세오름이다.

사용자 삽입 이미지드디어 멀리 백록담이 보인다. 해발 1700미터의 가을 바람은 가슴을 뻥뚫어준다.

사용자 삽입 이미지
사용자 삽입 이미지
목적지 윗세오름. 영실코스와 어리목코스가 만나는 곳. 영실코스는 여기까지 밖에 더 못 올라간다. 윗세오름 대피소에서 먹는 사발면은 정말 끝내준다.

추석때는 몸을 만들어서 백록담에 한번 도전해볼까 한다.