2013年11月11日月曜日

Бүтээмж

Японд ирээд удаагүй байсан юм даг. Энэ явдал одоогоос 7 орчим жилийн өмнө болжээ. 

Нэг удаа Японы асар том даатгалын компаний системийн хөгжүүлэлтэнд оролцох завшаан тохиолдсон юм. Хөгжүүлэлтийн эхний үе шатаас эхлэн оролцохоор болсон ба манай баг гэхэд л 20 орчим хүнээс бүрдэх нүсэр том төсөл байлаа.

Дэлгэцийн зохиомжийг багийн гишүүд бүгд хийхээр болов оо. Асуудлын гол нь хэрэгцээ шаардлагыг бүрэн тодорхойлж дуусаагүй байв. Дэлгэц бүр 100-500 оруулах талбар (textbox, text area, combobox г.м) - тай агаад талбар бүрийн хувьд тухайн талбарын нэр (論理名: logical name, 物理名: physical name), оруулах өгөгдлийн төрөл, өгөгдлийн хэмжээ гэх мэтийг нэг бүрчлэн Excel фаилд шивж оруулах ажил байлаа. Ганцхан удаа хийнэ гэвэл ч асуудал байсангүй. Төслийн явцад 4-5 удаа өгөгдлийн төрөл, талбарын нэр өөрчлөгдөх нь энүүхэнд. Үүгээр зогсохгүй энэ зохиомжоос гүйцэтгэл (программчлах) хийнэ. Гүйцэтгэл хийхэд дараах кодыг бичих ёстой байлаа.
  • Form Class - Java Bean гэгдэх класс (UserInfoForm.java)
  • Дэлгэцнээс оруулсан өгөгдлийг шалгах тохиргоо:  apache commons validator-н тохиргоо (user-info-validator.xml)
  • Бизнес логик буюу процессор класс (UserInfoProcessor.java)
Япончууд дуулгавартай, хичээнгүй юм болохоор юу ч бодолгүй өөрчлөгдөх бүрт залхуугүй засаад, дээрх үйлдлийг давтаад л ... Би 2 удаа нэлээд тэвчээр гарган хийж үзлээ. Гурав дахиас нь дахиад хэдэн ч удаа өөрчлөгдөө билээ. Ерөөсөө VBA ашиглаад макро биччихвэл зохиомж өөрчлөгдөх бүрт автоматаар кодыг үүсгэж болох юм гэж бодлоо.

VBA мэдэхгүй тул жаал интернэт ухаад хагас өдөр оролдсоны эцэст ямар ч байсан бүгдийг нь генерацладаг болголоо. Гэхдээ япон үсэгтэй болоод ирэхээр үсэг нь танигдахаа байчихаад байлаа. Фаилаас унших, фаил руу бичих үед үсгийн кодыг зааж өгөөгүйгээс болсон нь тэр. Манай төсөлд VBA-д нэвтэрхий япон байсан тул түүнээс үсгийн кодыг хэрхэн зааж өгөх талаар жишээ программ авч макрогоо заслаа. Ингэж би амьдралдаа анх удаа source code generator хийж билээ.

Үүнээс хойш төсөл өрнөхийн хэрээр олон ч хүн шинээр ирж, олон ч удаа зохиомж өөрчлөгдөж, олон ч шинэ дэлгэц нэмэгдсэн билээ. Тэр бүрт миний хийсэн генератор хэрэглэгдэн, маш их цаш хугацаа, хөдөлмөр хэмнэсэн дээ.

Бас нэгэн удаа Curl 4 дээр программ бичих хэрэг гараад Curl-г сурах хэрэг гарав. Долоо хоног оролдсоны эцэст ойр зуурын программ бичихтэйгээ боллоо. Бичсэн программаа тестлэх хэрэг гарч, арай туршлагатай нэгнээс яаж тестлэх талаар асуув. Тэгсэн debug хийж л тестлэдэг юм ярьлаа. Энэ арга хэтэрхий бүтээмж багатай, яг үнэнийг хэлэхэд тохиромжгүй тэнэг арга шиг санагдсан тул интернэтээр хайж үзлээ. 

Харамсалтай нь JUnit шиг CurlUnit гэж байх авч Curl 6 буюу түүнээс дээших хувилбарыг дэмждэг гэсэн байлаа. Өөрөө бичихээр шийдэж JUnit-н source-г нааш цааш нь гүйлгэж жаахан харж байгаад 2 цаг нухаад хийсэн нь нэг иймэрхүү юм болсон юм. Гар утсан дээрх зурагны огноог харвал 2010.09.17 нд хийж байжээ. Сайн харвал цаана нь curl дээр бичсэн код харагдах ажгуу.


Энэ жилийн нэг сард (өмнөх компанид), шахуу төлөвлөгөөтэй хэрнээ тест хамралт (test coverage) өндөр байх ёстой гэсэн сонин өндөр шаардлагатай төсөлд ажиллахаар болов. Бүгд амжихгүй тул нэн түрүүнд зайлшгүй шаардлагатай хэсгийн тест кодыг бичээд тестлэх шаардлагагүй хэсгийг орхичихов. Тэгтэл нэлээн асуудал босох янзтай. Шинэ хүүхдүүд даргад загнуулаад л … Амжуулах боломжгүй, хэт богино хугацаанд бүгдийг тестлэж амжсангүй гэж хэлж чадахгүй, хэцүү байгаа бололтой. Мэнчийтлээ улайсан харагдна. Дөнгөж эхний шат болохоор дараагийн шатанд бас л ингэж хэлүүлж таарах болохоор 1 цаг оролдоод тестлэгдээгүй үлдсэн бүх JavaBean классыг тестлэх тест код генерацладаг нэг tool хийгээд тавьчихлаа. Нөгөө мэнчийтлээ улайсан нөхөр баярлаад жигтэйхэн тасүкаримасү (тус боллоо) гээд л ...

Одоогийн компанид дөнгөж сургууль төгссөн гэлтгүй гайгүй сайн, өсөх ирээдүйтэй, залхуу нөхөр бий. Тэр нөхөр нэг удаа ингэж байна. Тест кодонд ашиглаж байгаа өгөгдлийг гараар бэлтгэх нь их цаг хугацаа, хөдөлмөр зараад байна. Би интернэтээс хайж байгаад мэдээллийн сангаас одоо байгаа өгөгдлийг түүж аваад бэлдэц (fixture-тест өгөгдөл) хийдэг helper биччихлээ гэж байна. Бүх тест кодонд ашиглагддаггүй юм гэхэд автоматаар генерацласан өгөгдлийг засаад ашиглах нь цаг хугацаа хийгээд хөдөлмөр ихэд хөнгөвчлөх тул зөв зүйтэй санаачлага юм.

Энэ мэтээр багт нэг ийм хүн байхад бүтээмж хэд дахин илүү хурдан болдог юм. Эндээс миний юу өгүүлэх гэснийг ойлгосон байх гэж найдна.

Инноваци хэрхэн мэндэлдэг вэ?

Уг нь объект хандлагат программчлалын талаар бичье гэж төлөвлөж байсан авч энэ удаад  "Монголын Програм Хангамж Үйлдвэрлэлийн Салбарын Анхдугаар Чуулган" болж буйтай холбогдуулан инновацийн талаар бичмээр санагдлаа.

Японы NHK телевизийн боловсролын сувгаар даваа гариг бүрт гарах Super Presentation бол миний үзэх дуртай нэвтрүүлгийн нэг юм. Сар орчмын өмнө юм даг. Нэгэн дугаараар ахлах сургуулийн сурагч хэрхэн нойр булчирхайн хорт хавдарыг хямдхан, өндөр нарийвчлалтай, хурдан оношлох аргыг нээсэн талаар илтгэл тавьж байна.

Энэ явдал ойр дотныхоо хүнийг нойр булчирхайн хорт хавдраар алдсан явдлаас үүджээ. Харамсал, уй гашууд автсан тэр дотных нь хүнийг аваад явсан аюулт өвчний талаар интернэтээр (google, wikipedia) судлаад ихэд цочирджээ.

Юу вэ гэвэл: Нойр булчирхайн хорт хавдарын 85% нь эцсийн шатандаа илрэх агаад амьд үлдэх магадлал 2%-тай байдаг юм байна. Түүнээс гадна нойр булчирхайн хорт хавдарын 30% нь илэрдэггүй бөгөөд нэг удаагийн оношлогооний өртөг хэт өндөр-800$ байдгийг олж мэджээ. Оношлогооны энэ арга 60 жилийн турш огт өөрчлөгдөөгүйгээр барахгүй өөрийнх нь ааваас ч урт настай гэж хэлээд танхимд цугласан олныг инээлгээд авав.

Ингээд тэр илүү дэвшилтэт сайн арга олохоор шийджээ. 
  • Хямд, маш амарханаар хийж болох.
  • Илэрц сайтай, алдаа багатай.
Цааш нь 60 жилийн турш оношлогооны энэ арга сайжраагүй нь цусны шинжилгээгээр хүний биед байх олон мянган уургаас зөвхөн нэг төрлийн уургийн өчүүхэн бага өөрчлөлтийг илрүүлэх нь маш хэцүү байдгаас гэдгийг олж мэджээ.

Нойр булчирхайн хорт хавдраар өвчлөгсдөд 8000 төрлийн уургийн өөрчлөлт ажиглагддаг. Эдгээрээс био-заагч (bio-marker) болж болох зүйлийг хайж эхлэжээ. Яаж гэвэл, энэ өвчний эхний шатанд цусанд хамгийн ихээр агуулагддаг уургийг хайж олох. Дөрвөн мянган уургийг нэг бүрчлэн судласаар  арай хийж био-маркераар сонгох боломжтой mesothelin гэдэг уургийг олж илрүүлжээ. Энэ уураг угаас хүний биед байх боловч, нойр булчирхай, өндгөвч, уушигны хорт хавдрын эхний шатанд ихээхэн өсдөг байна. Иймээс энэ уургийн тоо хэмжээний өсөлтийг хэмжиж чадвал өвчний эхний шатанд, бараг 100% амьд үлдэх магадлалтай үед нь оношлох боломжтой ажээ.

Нэг өдөр тэр биологийн хичээл дээр сууж байгаад санамсаргүйгээр амархан хэмжих арга бодож олжээ. Энэ санаа сэтгүүл дээрээс нүүрс төрөгчийн нано хоолойн талаар үзэж байх үед төржээ. Хичээлээс илүү нано хоолойд хамаг анхаарлаа төвлөрүүлсөн яг тэр мөчид багш дархлааны систем (эсрэг биет)-ийн  талаар хичээл зааж байлаа. Эсрэг биет нь уургийн нэгдэлд онцгой урвал үзүүлдэг молекуль юм. 

Түүнд ийм нэгэн санаа төржээ. Нано хоолойг, эсрэг биеттэй хослуулбал, өөрөөр хэлбэл нано хоолойд байршуулсан эсрэг биетийн тусламжтайгаар зорилтот уургийн хэмжээг тодорхойлох боломжтой юм. Тухайлбал нано хоолойн цахилгаан дамжуулалтын өөрчлөлтөөр уургийн хэмжээг олох мэргэн санаа төржээ.

Гол бэрхшээл нь нано хоолой хэт хэврэг явдал байлаа. Гэхдээ үүнийг цаасанд нэвчүүлчихвэл болох нь тэр. Өөрөөр хэлбэл оношлогооны цаас (индикатор буюу илтгүүр) бэлдэх явдал гэж сэтгэжээ. 

Илтгүүр бэлтгэх нь маш хялбар. Усанд нано хоолойг эсрэг биеттэй хольж хутгаад, энэ бэлдмэлдээ цаасаа дүрж нэвчүүлээд хатаагаад л болоо.

Түүний нээсэн аргаар 800$-н өртөгтэй оношлогоо ердөө 3 цент хүртлээ буурчээ. Энээ хүртэлх зам дардан байгаагүй бөгөөд түүнд лаборатори хэрэгтэй болжээ. Ингээд тэрээр судлагааны төсөл бичээд 199 профессор руу захиа явуулсан боловч хэн ч түүнийг дэмжсэнгүй. Эцсийн эцэст нэгэн профессороос (200 дахь нь) нааштай хариу сонсон, 3 сарын дараа түүнтэй уулзахаар болов.

Гурван сарын дараа профессортой уулзаж, судлагааныхаа талаар танилцуулж эхэлтэл профессор 20 орчим судлаач эрдэмтдийг танхимд дуудаж, цугласан олон түүнийг элдэв янзын асуултаар булж гарав. Түүнийг унагаах гэсэн бүх оролдлогыг амжилттай няцааж чадсанаар арай хийж лабораторит ажиллах эрх олж авчээ.

Ингээд судлагааны ажлаа эхлүүлж, удалгүй түүний төлөвлөгөө бүрэн төгс биш болохыг олж мэдэв. Гэлээ ч шантралгүй шамдсаны хүчээр 7 сарын дараа 5 минутын дотор оношлох чадвартай илтгүүр гаргаж авч чаджээ.

Энэ оношлогооны хамгийн гайхамшигтай нь 6 арваны турш ноёрхсон оношлогооноос даруй 168 дахин хурдан, дор хаяж 26000 дахин хямд, нарийвчлал 400 гаруй дахин өндөр юм. 

Бас оношлогооны нарийвчлал 100% руу дөхүү, амьд үлдэх магадлал бараг 100% байх эхний шатанд нь илрүүлэх боломжтой. Иймээс энэ өвчнөөр шаналагсад ойрын 2-5 жилийн дотор амьд үлдэх магадлал 5.5%-аас бараг 100% хүртэл өсөх боломжтой. Нойр булчирхайгаас гадна өндгөвч, уушигны хорт хавдарыг ч оношилж болно. Цаашилбал эсрэг биетийн төрлийг сольж өөрчилсөнөөр бусад төрлийн өвчнийг оношлох боломжтой гэж нүд нь цогтойгоор гялалзах цовоо сэргэлэн жаал өгүүлж байх юм.

Түүний илтгэх чадварыг гайхаад баршгүй. Жинхэнэ эхийг эндээс үзвэл илүү их сэтгэл хөдлөм, бас хөгжилтэй байх болов уу. 

Яагаад энэ сэдвээр бичих болсоноо одоо тайлья. Ахлах сургуулиа ч төгсөж амжаагүй түүний хийж бүтээснийг харвал аливаа зүйлийг хийхэд хүсэл эрмэлзэл, уйгагүй оролдлого чухлаас гадна зөв сэдэл, сэтгэлгээний зөв хандлага, бүтээлч сэтгэлгээ чухал ажээ. Бүтээлч сэтгэлгээ байгаагүй бол ийм богино хугацаанд, 60 жил эрдэмтдийн хийж чадаагүй зүйлийг хийж чадаа ч уу, үгүй ч үү?

Хөгжүүлэгчийн ажил ч гэсэн бүтээлч сэтгэлгээ ихээр шаарддаг.
Залхуу инженерүүдээс шинэлэг санаа байнга төрдөг. Тэд залхуу учраас ажлаа хөнгөвчлөхийн тулд үргэлж янз бүрийн багаж хэрэгсэл зохиодог. Хүний оролцоог багасгасан шинэ оролдлого, шинэ сэдлийн ачаар өнөөдөр энэ салбарт өдөр бүр шинэ технологи, инноваци мэндэлж байна. 

Та ч гэсэн тэдний нэг байх боломж дүүрэн бий юм шүү. Энэ салбарын хөгжлийн хурдасгуур нь олон бүтээлч сэтгэлгээний үр дүн гэж би хувьдаа боддог юм. Тун удахгүй Монголоос минь дэлхийн хэмжээнд хүлээн зөвшөөрөгдсөн олон сайхан инноваци гарна гэж итгэж найдаж явдаг. 

Монголын бүтээлч сэтгэгчид олон болох болтугай!