태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

우리 할머니에게 웹사이트 개발 방법 가르쳐 주기 - 웹 개발자가 하는 일

Human Information Interaction 2010/01/06 00:14

이번 포스트의 주제는 우리 할머니에게 웹사이트 개발 방법 가르쳐 주기 입니다. - how to teach my grandmother to  development website 입죠

현재 대한민국의 학부생 또는 청소년들이 개발자 또는 웹개발자가 되기를 희망하는 사람이 얼마나 될지 모릅니다. 후배들에게 개발자를 직업으로 추천 할 수 있을지 또한 의문입니다.

개발자의 세계가 현실 세계와 너무 동떨어져 있는 것과 개발자 이외의 집단이 개발자를 이해하는 것, 그리고 개발자 집단 내부에서도 개발자를 이해하는 것은 쉽지 않습니다.

개발자는 디테일 하나 하나에 집착 합니다. 작은 것 하나쯤이야 하고 소홀히 대했을 때 석달 열흘을, 원인 모를 오류로 디버깅을 하면서 밤을 세울 수도 있기 때문입니다. 그런 개발자들에게 그냥 두리뭉실 좋은 게 좋은 것 아니냐며 대충 이래 저래 돌아가게 만들어라 하는 것은 타협 할 여지가 없음을 이외의 사람들은 이해하지 못합니다.

개발자들도 개발이외의 집단에서의 요구사항인 "뭔가 좀 맘에 안들어요, 그 뭔가를 좀 고쳐줘 봐요" 의 그 뭔지 모를 "뭔가"를 이해 하는 회로가 뇌에서 빠져 버린 듯 합니다.
 
아무리 연관 관계를 줄이려고 해도 코드들 객체(오브젝트)들은 연관을 가지고 있습니다. 현실 세계와 마찬가지로 프로그램의 세계에서도 독야청청 홀로 떨어져 있는 객체는 존재 할 수 없음을 개발자들은 알고 있으니까요. 개발자 이외의 집단에서 하는 말인 "그거 하나 수정하는데 뭐가 그렇게 어려워!?"라는 말에 속시원히 답하기 어려운 개발자들 마음은 더욱 답답합니다.



그럼 개발자들이 왜 그렇게 생각이 많고, 혼자서 집중할 수 있는 공간을 요구하는지 우리 할머니에게 설명하는 것처럼 말해 보겠습니다.

개발자들이 하나의 웹사이트를 개발하기 위해서, 또는 개발자가 되기 위해서는 무엇을 공부해야 하나?  ASP.NET 개발자의 경우로 말해 보도록 하죠.



웹사이트의 컨셉, 목표, 해결해야 할 현실 문제, 요구사항, 기획, 디자인이 나왔다고 가정하도록 하죠.

첫번째, 윗 줄에 열거한 모든 것을 이해 해야 합니다. 그리고, 머리 속으로 시스템을 그립니다. 머리 속으로 그리려면 열거한 모든 것들에 대해서 공부 해야 합니다. 업무 영역, 업무 프로세스, 업무가 해결해야 할 과제 등등. 현실 세계의 거의 모든 상식을 지니고 있어야 합니다.

개발자의 좀더 구체적인 세계로 들어가 보도록 하죠.

두번째, 윈도우즈 서버 환경에 대해서 공부하고 이해 해야 합니다. 여러개의 서버가 함께 일할 수 있는 서버팜 , High availability 환경에 대해 이해하고 통제 할 수 있어야 합니다.

세번째, 웹사이트를 구동 시켜 줄 수 있는 IIS(Internet Information Services)를 공부하고 이해하고 통제 할 수 있어야 합니다. 버전 별로 특성과 지원되는 기능을 알아야 합니다.

네번째, web application framework인  ASP.NET을 공부하고 이해해야 합니다.

다섯번째, ASP.NET 위에서 구동할  주로 사용할 언어에 통달 해야 합니다. C#.NET 또는 VB.NET을 공부 해야 합니다.

여섯번째, 언어가 구동되는 프레임워크인 .Net Framework를 공부해야 합니다. 주요 모듈이 Common Language Runtime 이라는 CLR에 대한 공부가 필요 합니다.

.net framework 3.5

닷넷 프레임워크란 것이 요놈 입니다.




일곱번째, 언어를 가지고 문제를 해결하기 위해서 알고리즘자료구조, 객체를  구조화 하기 위한 디자인 패턴 , 아키텍쳐를 공부하고 머리에 담고 있어야 합니다.  

여덟번째, 드디어 사용자들이 볼수 있는 화면을 구성하는 언어인 HTML: Hypertext Markup Language 을 공부해야 할 시간입니다. <html></html><body></body><a href="src" ></a> <img src="" alt="" /> 이런 것들이 HTML입니다.

아홉번째, 내용을 디자인과 분리하기 위해서 CSS(Cascading Style Sheet) 를 공부 해야 합니다.

열번째, 사용자에게 더욱 좋은 경험 또는 서비스 요구 사항을 들어 주기 위한 언어인 Javascript 라고 불리우는 ECMA Script를 공부해야 합니다. javascript를 좀더 사용가능한 언어처럼 사용하기 위해서 javascript framework인  jQuery 또는 Prototype을 익혀야 합니다.

열한번째, 위에서 만든 서비스의 데이터를 영구적으로 저장 하기 위한 Server인 RDBMSSQL 서버를 공부 해야 합니다.T-SQL이라고 불리우는 언어를 공부해야 합니다.

열두번째, 웹서비스에서 DB 서버와 통신하는 여러가지 기술을 익혀야 합니다. ADO.NET, 최근의 LINQ TO SQL, ENTITY FRAMEWORK, NHibernate, iBatis.NET등의 ORM( Object-Relation-Mapping)이라는 것을 익혀야 합니다.

열세번째, 소프트웨어를 구동할 수 있는  물리적인 컴퓨터의  네트워크, RAID, SCSI, HBA, SAN등의하드웨어와  기술들에 대해서 알고 있어야 합니다.

열네번째, 첫번째에 이해한 것들을 구현하기 위해서 열세개의 영역을 엮어(Weaving) 나갑니다. 위에 언급한 언어들(흡사 영어,프랑스어,스페인어와 같은 언어로 보시면 됩니다.)을 적절히 섞어가며 감동과 재미를 동시에 충족하는 문학작품 같은 것을 써 내려 갑니다. 아니 부분 부분을 써서 적재 적소에 엮습니다.
 
드디어 뭔가 돌아가는 화면을 볼 수 있습니다.

웹사이트 개발을 진행 하는 동안 요구사항의 변경과 버전의 변경, 개발 트렌드의 변화을 추적하면서 위에 언급한 열 세가지를 반복합니다.

개발자 이외의 잡단이 볼때 키보드나 또닥 거리며, 사무실 주변을 어슬렁 거리는 행위를 하는 동안 머리 속으로 , 또는 문서에 , 또는, 노트에 위의 열 세가지를 엮고 있는 것입니다. 비지니스의 선행조건 , 후행조건 등의 제약사항을 준수 하면서 말이죠.


개발자들은 위의 열세가지의 요소를 엮고 있으니, "제발 좀 나를 내버려 둬"라고 무언으로 말하지만, 회사 인간 관계에 서툰 미친놈 소리를 듣지 않기 위해서 뇌의 일부 영역을 주변 인간 관계를 위해서 남겨둡니다. 가끔 다른 팀의 컴퓨터도 고쳐줘야 하고, 윈도우도 깔아주거나 오피스도 깔아줘야 합니다. 개발자들이 자신의 세계로 다시 돌아가서 자신의 일을 하기 위해  갖추어야 할, 책에서 가르쳐 주지 않는 소양입니다.


인고의 시간이 지나고 프로덕트가 나옵니다. 많은 아니 대부분의 프로젝트가 아래의 결과를 보입니다.

요구사항 분석과 프로젝트

출처 : http://www.linuxkungfu.org/images/fun/geek/project.jpg



위의 프로젝트 결과에 고객과 여타의 팀에서 볼맨 소리가 빗발칩니다. 비에 홀딱 젖어 익사하지 않기 위해서는 구멍난 우산이나 스노클이라도 준비 해야 합니다.

새로운 요구사항을 들어주고 변경된 제품을 내놓기 위해서 개발자들은 위의 열세가지를 수정하고, 삭제하고, 재배치하고, 새로 작성하고 동시에 유지관리를 걱정하며 엮어갑니다.

열세가지의 실로 엮은 스웨터가 구멍이 숭숭 난 누더기가 아닌 명품 캐시미어 스웨터로 만들려고 머리 속이 꽉차 있는 하루 하루를 보내는 것입니다.

실력이 있는 개발자 이건  부족한 개발자이건 모두가 같은 입장입니다. 한 가지도 소홀 할 수 없습니다.

개발자를 꿈꾸고 있거나 개발자이외의 우리 할머니, 개발자가 하는 일이, 되기 위해 하는 일이 무엇인지, 개발자들의 뇌속이 조금 머리 속으로 그려 지십니까? 다른 세계에 사는 사람인 듯 타협하기 힘든 개발자들의 속성을 조금 이해 하시나요?

이런 끊임없이 공부 해야 하고 머리속이 꽉찬 하루 하루를 보내는 개발자라는 직업이 쉽지만은 않습니다. 개발팀을 영원한 '을'로 여기는 대한민국의 인식은 후배들에게 개발자를 추천 하는 것을 망설이게 합니다.

그러나 개발자들은 무형의 그 상상을 현실화 하는 것에 무한한 행복을 느낍니다. 무한한 기쁨을 느낍니다. 한단계 한단계 성장하는 자신을 느끼면서 세상 그 무엇도 부럽지 않습니다. 현실로 돌아오면 깨지기 쉬운 유리 그릇 같은 만족감 이지만 행복합니다. 개발을 사랑합니다.

이 행복이 노력의 댓가로 지불되는 것이 아니기에 망설여집니다. 이것도 딜레마에 빠지게 합니다. 모두가 개발자를 하지 않으면 유능하며, 발전하며 행복을 느끼는 후임 개발자를 볼 수 없기 때문입니다.

"그거 하나 고치는데 뭐가 그렇게 어려워?" 라는 질문에 대한 답이 조금 되셨습니까? 물론 고치기 쉬운 것이 얼마간 있는 것도 인정합니다.
 
개발자 이외의 분들 이제 개발/개발자가 되기 위해 뭘 해야 하는지 아셨으니 한번 직접 개발해 보시겠습니까?
저작자 표시
이올린에 북마크하기(0) 이올린에 추천하기(0)

현재글 : 우리 할머니에게 웹사이트 개발 방법 가르쳐 주기 - 웹 개발자가 하는 일 posted By - 반더빌트 2010/01/06 00:14
Trackback 0 : Comments 10

Trackback Address :: http://smack.kr/trackback/352 관련글 쓰기

  1. 도둑갈매기 2010/01/06 09:23 Modify/Delete Reply

    트랙백 보고 왔는데, 많은 공감이 가는 글 입니다. 정리도 깔끔하게 잘 하셨네요.
    저는 현재 작은 프로젝트 PM 을 하고 있는데 ,개발자 태생이 아닌 경영학 태생이다 보니
    개발자를 이해 못하는 부분도 많은 것 같습니다.
    프로젝트를 위하여 그리고 나 자신을 위하여 좀 더 상대방이 하는 일에 잘 알아야 할 것 같네요

    • 반더빌트 2010/01/06 10:05 Modify/Delete

      안녕하세요 도둑갈매기님.
      개발자가 기획자에게 가장 바라는 것은 "기획서가 비지니스 목표를 논리적으로 만족 시키느냐" 일 겁니다. 완벽하게 논리적인 것을 소프트웨어로 구현 하는 것도 100% 확신 할 수 없는데 , 기획의 비논리는 소프트웨어도 비논리적으로 만듭니다. 소프트웨어가 비 논리적 이라는 것은 '동작하지 않는다'의 의미입니다.

      최종 결과물을 책임지고 있는 개발자는 제품을 두고 변명이 불가능 합니다. 요구사항을 안 들을 수도 없습니다. 결국에는 개발자 자신이 제품을 수정해야 하니까요.

      자신의 분야에서 최대한의 노력한 결과물을 전달 하는 것이 서로를 이해 하는 첫번째 라고 생각합니다.

  2. 아름드리 2010/01/06 09:49 Modify/Delete Reply

    Java나 .NET 혹은 다른 플랫폼을 사용해서 개발을 진행하게 되더라도 위와 비슷하게 필요하다고 생각됩니다.
    이런 것을 보면 우리나라의 4~6개월 IT 교육과정은 정말 터무니 없다고 생각됩니다.

    • 반더빌트 2010/01/06 10:11 Modify/Delete

      아름드리님 생각에 전적으로 동의 합니다. 컴퓨터공학을 전공하고, 개발업무에 수년을 몸담아도 내가 개발자로서의 자격을 가지고 있는 것인가를 고민하게 만드는 영역이 개 영역이라고 느껴집니다. 끝이 없는 자기계발이 필요함은 몇년을 개발로 버틸수 있을 것인가를 자문하게 만듭니다.
      개발을 4~6개월 교육과정으로 가능하다고 생각 하는 자체가, 교체가능한 단순노동으로 보는 현실을 만들어낸 큰 요인으로 생각합니다.

  3. DIFF 2010/01/07 14:43 Modify/Delete Reply

    저도 비슷한 일들을 해 오고 있는 입장이지만, 이렇게 길게 차곡차곡 쉽게 설명하기란 쉽지 않은 일인데 글을 참 잘 쓰셨습니다. 영원한 "을"이란 부분도 가슴이 아프네요.
    어찌보면, 컴퓨터공학에서 우리가 제일 먼저 배워야 할 것은
    어떻게 프로그래밍하느냐 혹은 어떻게 데이터를 모델링하느냐가 아니라,

    "어떻게 돈이 되는 소프트웨어 사업을 구상하느냐" 일 지도 모른다는 생각을 해 봅니다.

    아마도 개발자들이 인정받으려면, 갑이 정해져 있는 프로젝트를 하는 회사가 아닌,
    다수의 고객이 존재할 수 있는 제품을 만드는 회사의 일원이 되어야 하지 않나 싶습니다.

    • 스맥 반더빌트 2010/01/07 22:17 Modify/Delete

      네 DIFF님, 실세계의 비지니스를 단순 지원 하는 역할에서의 개발은 많은 시간이 흘러도 '을'의 입장을 벗어날 수 없을 듯 합니다.

      모든 개발자들의 꿈이 겠죠.

      개발된 서비스나 제품 자체가 수익을 만들어 내는 회사의 일원 되는 것.

      서로 토론하며 세상의 지식과 정보를 더욱 가치있고 쓸모 있게 만드는 것.

      희망합니다. 우리가 개발하는 서비스가 인간이 인간답게 살 수 있도록 지원하는 것이 되기를...

  4. 우군 2010/01/12 13:04 Modify/Delete Reply

    제 블로그의 엮인글을 보고 찾아왔습니다. 웹기획을 하는 기획자이자 막 걸음마를 시작한 PM으로서 비단 개발자 뿐 아니라 모든이와의 커뮤니케이션이 얼마나 중요한 요소인지 깨닫고 있는 중입니다. 커뮤니케이션만 잘 이루어져도 반은 먹고 들어갈 수 있을거 같은 생각입니다. 목표를 논리적으로 만족시키기 위한 기획을 위해 부단히도 노력해야겠다는 생각을 추가로 하고 갑니다. 좋을 글 잘 읽었습니다.

    • 스맥 반더빌트 2010/01/12 14:46 Modify/Delete

      우군님이 말씀하신대로 커뮤니케이션이 절반이라고 할 정도로 중요합니다. 문제는 '모든 문제의 답은 어떤 문제의 정답도 아니다'라는 것에 있겠죠.

      사람마다 커뮤니케이션에 대한 개념이 다릅니다. "내가 원하는 것은 A라는 것인데 해주세요!" 라고 말 할때는 기대하는 답이 사람마다 다릅니다. "되, 안돼?, 되면 언제까지 되"를 커뮤니케이션의 개념이라고 탑재한 사람들이 너무 많습니다. 그런 이유가 제가 장문의 포스트를 남긴 이유 중 하나이기도 합니다.

      인정하긴 싫지만 '좋은 개발자와 나쁜 개발자는 타고 나는 것'이라고 느껴집니다. 같은 이유로 '좋은 기획자와 나쁜 기획자는 정해져 있습니다.' 그렇다고 노력하지 말라는 얘기가 아닙니다.

      정확한 고객의 요구사항도 알지 못하고, 자신의 생각도 정확히 묘사하지 못 한 기획서(?: 기획서의 정의가 뭘까요.)를 내밀면서 "됐고!, 되, 안돼? 언제까지 되?"를 외치는 기획자가 많은 것은 문제 입니다.

      중요한 것은 '공동의 비지니스 목표를 이루기 위해서 자신의 역할을 최대한 하면서 경청하는 자세' 라고 생각합니다.

      커뮤니케이션 할 때마다 "됐고!"의 빈도는 '좋은 기획자와 개발자의 척도'죠.

  5. 박제성 2010/01/15 04:40 Modify/Delete Reply

    트랙백을 보고 찾아 왔습니다.

    이 분야에 긍정적인면과 부정적인 면을 면밀히 분석하고 생각하여 신중한 진로가 되기를 바랍니다.

  6. Tiger Kim 2010/01/15 13:19 Modify/Delete Reply

    트랙백 보고 찾아왔어요. ^^
    블로그 잘 둘러보고 갈께요~ 반갑습니다. :)


[생각을 적어 주세요~ 댓글은 작은 인연의 씨앗입니다.]

◀ PREV : [1] : ... [3] : [4] : [5] : [6] : [7] : [8] : [9] : [10] : [11] : ... [296] : NEXT ▶