SimpleIsBest.NET

유경상의 닷넷 블로그

북한 프로그래머가 작성한 닷넷 코드...

by 블로그쥔장 | 작성일자: 2005-07-26 오후 12:54:00
이 글은 오래된 전에 작성된 글입니다. 따라서 최신 버전의 기술에 알맞지 않거나 오류를 유발할 수 있습니다. 저자는 이 글에 대한 질문을 받지 않을 것입니다. 하지만 이 글이 리뉴얼 되면 이 글에 대한 질문을 하거나 토론을 할 수도 있습니다.
최근 북한의 프로그래머가 작성한 닷넷 코드의 일부를 구경할 기회가 있었습니다. 제가 컨설팅 나가 있는 S 회사가 Offshore 아웃 소싱을 추진하고 있는데 그 대상이 중국의 소프트웨어 회사였죠. 중국에 있는 회사지만 사실은 국내 자본으로 설립된 회사였으며 개발자는 북한 프로그래머를 고용한다고 합니다. 아직까지 남한에서 직접 북한에 IT 아웃소싱을 줄 수 없기 때문에 중국을 통하는 방법을 사용한다고...

Offshore 아웃 소싱은 많은 기업에서 관심의 대상이라고 합니다. 국내 개발자의 인건비 보다 훨씬 싼 해외 인력을 통해 개발을 하는 것이 요지인데 핵심은 개발자를 불러들이는 것이 아니라 개발하고자 하는 소프트웨어의 요구사항, 스펙 등을 요청하고 현지 개발을 수행하는 것을 말합니다. 지금까지 미국과 같이 자국에서 높은 인건비와 인력 구입의 여러움을 겪을 때 중국, 인도 등의 개발자를 미국으로 불러들여 개발을 수행했었지만 이젠 불러 들이지도 않고 아예 현지에서 개발하고 그 결과물 만을 받음으로써 보다 비용을 줄이고자 한다더군요. 품질이 저하를 우려할 수도 있지만 실제 품질 저하는 별로 없다고 하네요.

우리나라에선 중국, 인도 개발자를 사용하기엔 언어 장벽이 있는지라 인건비도 더 싸고 의사 소통이 편리한 조선족이나 북한 프로그래머를 활용하는 방법이 많이 시도된다고 합니다. 게다가 중국은 1일 생활권으로 볼 수 있기 때문에 출장기간도 짧고... 등등 장점이 많다고 하네요. 국내 개발자의 절반 혹은 그 이하의 인건비만이 소요되므로 SI 회사에서 관심을 갖나 봅니다. 불쌍한 우리 남한 개발자는 이젠 해외의 동포 개발자와도 경쟁해야 합니다. 아.... -_-

아웃 소싱을 통해 북한 개발자(들)에게 주어진 일은 SI 개발에 필요한 독립 공통 모듈이였는데, 업로드 컨트롤, 메뉴 작성기 등 이였습니다. 제가 살펴본 코드는 업로드 컨트롤의 서버 코드 였죠. 코드는 상상외로 깔끔하고 잘 작성된 편이였습니다. 닷넷 코드였지만 UNIX 스타일의 코드가 군데 군데 보였지만 전체적으로 군더더기 없이 깔끔했습니다. 중간 중간 등장하는 북한 식 커맨트는 웃음을 유발했지만 참신한 경험이였습니다. ^^

다음은 북한 프로그래머가 작성한 코드 중 일부만을 발췌했습니다. 디렉토리 대신 '등록부' 란 용어를 쓰는 것 같고 두음 법칙(맞나?)을 사용하지 않고 표기하는 련결, 리용 이란 단어가 눈에 띄네요. 근데 당췌 기발값이란게 뭔지는 잘 모르겠네요. 시작값 정도 되겠지요?

using System;
using 
System.IO;
using 
System.Text;

namespace 
FileTransferWeb
{
 
/// <summary>
 /// FileUploadWebForm 클라스에 대한 요약 설명입니다.
 /// </summary>
 
public class FileUploadWebForm : System.Web.UI.Page
 {
  ......
  private const int cUnitByte 8192;  //한번에 전송하는 자료토막크기

  
private void Page_Load(object sender, System.EventArgs e)
  {
   
this.FileUpload();
  
}

  
void FileUpload()
  {
   Stream inputStream 
System.Web.HttpContext.Current.Request.InputStream;
   ......   
   m_Flag (byte)inputStream.ReadByte();  //기발값 읽기
   ......   
   
string uploadDir Server.MapPath(uploadFilePath);  //업로드 파일보관등록부

   
const int cFileNameByte 1//파일명,파일크기를 전송하는데 리용되는 바이트수
   ......
   if
((char)m_Flag == 'S'//--------------------시작메쎄지 처리부분----------------------
   
{
      ......
   }

   
if((char)m_Flag == 'A'//--------------------련결시작메쎄지 처리부분----------------------
   
{
    .....
    if(!File.Exists(uploadDir + serverFileName)) //련결해야할 서버파일이 존재하지않는경우
    
{
      ......
    }

    // 이하 생략~~~

  }
}

언젠가는 북한 프로그래머와 같이 일할 날이 있기를 간절히 기원해 봅니다.



Comments (read-only)
#re: 북한 프로그래머가 작성한 닷넷 코드... / 송기수 / 2005-07-28 오전 1:45:00
쿠..쿳..넘..재밋다..
일단 거기도 저희와 같은 프로그래머가 있다는게 정말 새로운 사실이네요. 물론 이전에도 있었겠지만 그래도 실제 코드를 보니 신기하기두 하구...ㅋㅋ
#re: 북한 프로그래머가 작성한 닷넷 코드... / 이석원 / 2005-07-28 오후 6:41:00
Offshore 코드를 보니 재미있네요.
북한개발자의 코드라.... 얼마안있으면 Remote로 같이 일하는 때가 있을수 있겠네요.
근데 Offshore로 spec을 알려줄려면 정의서가 명확해야 할텐데 그건 어떤식으로 하죠...
일본에서 하는 프로젝트를 보면 설계자는 일본에 있고 Coder는 여러나라에서 진행을 한다는 이야기도 들었는데 문제는 검증할 방법이 묘하다는 거죠. 실제 설계서대로 작업이 되었는지 아닌지...
정확한 spec 정의서를 어떻게 communication할 건지등....

아뭏든 북한개발자라고 해서 더욱 신기한것 같아요
#re: 북한 프로그래머가 작성한 닷넷 코드... / 블로그 쥔장 / 2005-07-29 오전 9:57:00
말씀하신대로 Offshore 아웃소싱이 실효를 얻기 위한 핵심은 communication 이죠.
이 아웃소싱에서도 제일 힘든 것이 communication 이였답니다. 직접 개발자와 통신은 불가능했고
(북한의 현실상...) 중국을 통해서 메일로만 communication이 가능했다고 하네요...

S 기업의 이 프로젝트의 경우는 완전한 독립 소프트웨어로서 기능 명세서(요구사항명세)만을 넘겼습니다.
그리고 설계는 그쪽에서 담당했죠.
이런 독립 소프트웨어는 Offshore가 가능하겠지만 SI 성의 프로젝트에 대해서는 실효성에 의문이 남습니다.
우리나라 처럼 업무가 뷁 스럽고 자주 변경을 요구한다면... 우~워~
#re: 북한 프로그래머가 작성한 닷넷 코드... / 유치수 / 2005-08-21 오후 2:47:00
한글 VisualStudio.net 버전이 두가지가 있나보네요..
흔한 "한글 Visual Studio.net 2003" 그리고 "북한말 Visual Studio .net 2003" ^^

/// <summary>
/// FileUploadWebForm 클라스에 대한 요약 설명입니다.
/// </summary>

이렇게 되어있어서요.. 클래스 추가하면 주석이 "Class1에 대한 요약 설명입니다." 라는 문구가 붙게되는데.
저기서는 "클라스" ^^ 재미있네요..
#re: 북한 프로그래머가 작성한 닷넷 코드... / ^^ / 2006-05-29 오후 4:39:00
기발값 => 깃발값 아닐까요? flag가 깃발이니..^^
#re: 북한 프로그래머가 작성한 닷넷 코드... / 지나가다 들린 이 / 2007-07-18 오후 6:32:00
코드를 보니 참 깔끔하게 되여 있을거란 생각이 드네요.
듣자니 정상급 프로그램에서 상당히 실력을 발휘하고
세계컴퓨터바둑대회에서 1등도 여러번 했다네요... 실력이 여간 아닌듯!!! 인정할건 해야죠.
#re: 북한 프로그래머가 작성한 닷넷 코드... / 디벨로 / 2007-08-08 오후 4:02:00
좋은 정보 스크랩 해두되죠?~ 출처는 반드시 적을게요 ^^*
#//디벨로/ 스크랩이라... / 쩝... / 2007-08-13 오전 10:51:00
퍼간다는 글 하나 달랑 남기고 그냥 긁어 가면 끝인가...
완전 불펌인것같은데요...