2006년 12월 22일
내가 웹표준 코딩을 추구하는 이유중 한가지
웹표준을 준수한 코딩이 모든 브라우저에서 완전히 똑같은 모습으로 보이지 않는다고 문제삼을 것은 없습니다.
다르게 보여지는 모습과 같은 기능을 수행하는 것은 서로 다릅니다.
자바를 예로 들면 자바는 AWT로 GUI 프로그래밍시 플랫폼마다 다른 모습을 보이지만 똑같은 기능을 수행합니다.
물론 버튼이 글상자로 나온다던가 하는 너무 엉뚱한 모습으로 나오면 안되겠죠.

IE라고 해도 윈도우 테마에서 XP테마와 고전테마의 윈도우 환경에서 스타일이 적용안된 버튼의 모습은 다르게 보여집니다.
이건 결국 IE와 그외의 브라우저들에서 조금씩 다르게 보이는 모습과 다를바 없습니다.
기본글꼴 또한 XP와 비스타가 서로 다릅니다.
IE전용으로 웹사이트를 만든다고 하여도 모든 윈도우와 IE환경에서 똑같은 모습으로 보여지는게 아닙니다.

웹디자이너 분들의 어디서나 똑같은 모습으로 보여지고 싶은 마음은 이해하지만 웹사이트는 출판물이나 그림이 아니므로 여러 상황이 있다는 것을 알고 계실 겁니다.
이 점을 감안하기에 사용자의 인터페이스와 해상도등을 신경쓰며 디자인 하시는 것이겠지요.

제가 눈으로 보여지는 부분에 대한 이야기를 한 것은 저에게 웹표준 코딩의 목적은 눈에 보이는 부분보다 내부동작과 코드를 중시하기 때문입니다.

웹표준을 무시한 엉터리 자바스크립트를 보면 아래와 같은 것이 있습니다.
<input type="text" name="my">
<script>
  my.value = "abc";
</script>

그렇다면 아래와 같은 경우는 누가 진짜 my 일까요?
<div id="my"></div>
<input type="text" name="my">
<script>
  my.value = "abc";
</script>

자바스크립트가 아닌 HTML코드를 예로들면 아래와 같은 코드도 있습니다.
<table>
<form><td></td></form>
<table>

table 태그에는 td,th,thead,tbody등의 table관련된 태그만이 올 수 있다고 아래의 dtd에 선언되어 있습니다.

<!ELEMENT TABLE - -
(CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ELEMENT CAPTION - - (%inline;)* -- table caption -->
<!ELEMENT THEAD - O (TR)+ -- table header -->
<!ELEMENT TFOOT - O (TR)+ -- table footer -->
<!ELEMENT TBODY O O (TR)+ -- table body -->
<!ELEMENT COLGROUP - O (COL)* -- table column group -->
<!ELEMENT COL - O EMPTY -- table column -->
<!ELEMENT TR - O (TH|TD)+ -- table row -->
<!ELEMENT (TH|TD) - O (%flow;)* -- table header cell, table data cell-->

이 dtd를 다 외우라는 뜻이 아닙니다. 전 모르는것은 이해할 수 있습니다.
하지만 잘못된 것이라는 것을 알고도 무시하는 것은 이해할 수 없습니다.
잘못을 알았을때 수정하지 않는다면 개발자로써의 기본이 되지 않았다고 생각합니다.
지금 당장 수행중인 프로젝트에서는 고치지는 못하더라도 앞으로의 프로젝트에서 고치려고 노력하는게 개발자의 기본입니다.

건물을 지을때도 돈 아끼려고 규칙에 어긋나게 지으면 부실공사로 무너지게 됩니다.
요즘 TV선전중에 대략 '이음새 하나가 천년을 버티는 것이야'라는 장인의 말이 나옵니다.
건축을 설계, 배선, 미싱등의 전문직종과 단순히 자재를 나르는 것은 다릅니다.
개발자도 전문직 종사자로 이런 장인정신이 없다면 개발자라 할 수 없습니다.

제가 웹표준 코딩을 추구하는 이유중 한가지는 바로 위에서 예를든 것과 같은 엉터리 코드는 자존심이 허락하지 않기 때문입니다.
과거 모르고 작성한 엉터리 코드들을 뒤돌아 보면 부끄러워 숨고 싶은 마음입니다.
그렇기 때문에 웹표준 코딩을 추구합니다.

[ 혹시모를 예상 태클에 대한 답변 ]
Q : 너는 웹표준 완벽하냐? 매사에 완벽한 코드를 만들어내냐?
A : 완벽하지 않기에 노력합니다. 그리고 제 실력에 최선을 다한 코드를 만듭니다.

Q : 내가 배울때는 웹표준 같은거 없었는데 어쩌라고?
A : 다시 한번 말씀드리지만 모르는 것은 배우면 되고 부끄러워 할 필요 없지만 알고도 무시하는건 부끄러워해야 합니다.

Q : 회사 프로젝트에 쫓기고 먹고 살기 바쁘다. 비표준 코드를 쓰는건 내 맘이다.
A : 네, 알겠습니다. 어쩔 수 없지요. 대신 '웹표준은 필요없다, MS가 표준이다' 라는 해괴한 주장은 하지 말아주세요. 뭐 프로젝트에 쫓기고 먹고 살기 바쁜데 해괴한 주장을 올리실 시간도 없으시겠지만요.

간혹 남들은 웹표준 지키며 멋있는 코드 만들어 내는걸 시기해서 웹표준 같은거 필요없다며 다른 사람 공부 막는 분들이 계신데 그럴 시간에 공부하시면 훌륭한 개발자가 될 수 있을겁니다.

태그 :
by -A2- | 2006/12/22 11:02 | | 트랙백(1) | 덧글(11)
트랙백 주소 : http://ani2life.egloos.com/tb/2890273
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from 쏭군은 열정 드리머 at 2008/02/27 18:37

제목 : 왜 웹표준인가?
여러분 가게에 물건 구경하겠다는 손님을 그냥 내쫓겠습니까?손님이 시각장애인이라는 이유로 물건을 팔지 않겠습니까?웹표준을 지키지 않으면 알게 모르게 놓치는 것들이 많습니다!웹표준? 웹접근성? 그게 뭐길래?웹표준을 지킨다 즉, 웹접근성을 높인다는 말은 무엇이고.웹표준을 지키면 뭐가 좋길래 사람들이 웹표준, 웹표준 할까요?똑같은 데이터를 가지고 있는 웹사이트가 있습니다. 웹표준을 지키면 검색엔진 노출이 잘 됩니다. 반면 그렇지 않으면 검색엔진 노출도......more

Commented by 정찬명 at 2006/12/22 12:30
휼륭한 생각이십니다. 특히 '장인정신' 이라는 말은 저도 늘 가슴에 새겨놓고 일하는 중입니다.
Commented by wizmusa at 2006/12/22 12:58
반가운 글이었습니다.
Commented by Joo8111 at 2006/12/23 09:57
같은 기능... 공감입니다...
무분별한 Javascript 남용으로 Firefox에서 링크가 열리지 않는 홈페이지들은 정말... -_-;;;;;;
Commented by -A2- at 2006/12/23 12:43
정찬명// 저도 가슴에 항상 새기고 있습니다. :)

wizmusa// 감사합니다.

Joo8111// JavaScript의 남용도 문제지만 프로그래밍적으로 봤을때 어이없는 코드를 작성하는 것도 문제입니다. 그 어이없는 코드를 동작시켜 주는 브라우저도 문제입니다.
Commented by ENTClic at 2006/12/24 13:24
오랫만에 아주 동감하는 좋은 글 읽었습니다 ^^
쉬운 것이 어디에 있겠습니까? 노력한 만큼의 결과도 모두에게 좋은 인상을 남길거라고 믿습니다.


많이 많이 즐거운 Merry Christmas! 보내세요 ^^
Commented by -A2- at 2006/12/24 16:56
ENTClic// 님도 즐거운 크리스마스를 보내세요. :)
Commented by 토리 at 2007/04/11 11:49
<table>
<form><td></td></form>
<table>

이게 잘못된 코딩이였군요 ;;

저도 조그 업뎃시키면서 웹표준에 눈뜨기 시작해서 몇달전만해도 파폭에서 아주 엉망이더라구요..
지금은 평소엔 익스 아무래도 익숙하다보니^^ 웹 프로그래밍할땐 저도 파폭을 주로 사용하게 됐는데...

테이블 태그안에 폼태그를 넣지 않으면 폼태그 만큼의 빈 라인이 생기더라구요
그래서 주로 테이블 태그안에 폼태그를 넣는 습관이 생겼는데...
이게 또 파폭에서도 잘표현이 되어서 잘못된 방법인지는 몰랐네요^^;;

좋은것 배워 갑니다^^
Commented by -A2- at 2007/04/11 23:16
토리// form의 공백은 css를 이용해서 없앨 수 있습니다.
저는 거의 body, form{margin:0; padding:0;} 이런식으로 일단 여러가지 태그들을 초기화(?) 시킨 후 재설정 합니다.
Commented by 열심히 at 2007/04/23 13:55
정말 많은 노력이 필요한 것 같아요.
잘 모르고 엉터리 코딩을 한 것을 보면 숨고 싶어 집니다 => 저두요 ㅠ.ㅠ
Commented by 금지 at 2008/03/07 01:07
수정 안 되나요?
프로그래머시군요..

form{margin:0; padding:0;} 이런게 있군요..
저도 <table> 안에 <form> 을 넣었는데..
Commented by -A2- at 2008/03/07 13:08
금지// 저도 첨에는 그랬습니다. ㅎ

:         :

:

비공개 덧글



<< 이전 페이지 | 다음 페이지 >>