최근 북한의 프로그래머가 작성한 닷넷 코드의 일부를 구경할 기회가 있었습니다. 제가 컨설팅 나가 있는 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)) //련결해야할
서버파일이 존재하지않는경우
{
......
}
// 이하 생략~~~
}
}
언젠가는 북한 프로그래머와 같이 일할 날이 있기를 간절히 기원해 봅니다.