<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener("load", function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <iframe src="http://www.blogger.com/navbar.g?targetBlogID=7355927&amp;blogName=Poonlap%27s+Linux+blog&amp;publishMode=PUBLISH_MODE_BLOGSPOT&amp;navbarType=BLUE&amp;layoutType=CLASSIC&amp;searchRoot=http%3A%2F%2Fpoonlap.blogspot.com%2Fsearch&amp;blogLocale=en_US&amp;homepageUrl=http%3A%2F%2Fpoonlap.blogspot.com%2F" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" height="30px" width="100%" id="navbar-iframe" allowtransparency="true" title="Blogger Navigation and Search"></iframe> <div></div>
 Poonlap's Linux blog  ใช้ซอฟต์แวร์เสรี, มีทางเลือก, ประเทืองปัญญา, พึ่งพาตนเอง.
 
      « Home

เนื้อหาที่ผ่านมา

Image module bug ใน Drupal 4.6
จัดระเบียบ ssh, smbfs ใน coLinux
ตลาดหนังสือลินุกซ์ในเมืองไทย
อ่านเขียนไฟล์ใน Windows จาก coLinux
เซ็ต permission ของไฟล์ในวินโดวส์ XP
แป้นพิมพ์ภาษาไทยใน XWin
เนื้อหาย้่ายไปที่นี่ครับ.
รูปตลกๆ
Virtual desktop บนวินโดวส์
coLinux ตอนที่ 5 - service ใน Windows
 
      เนื้อหาในอดีต
06/01/2004 - 07/01/2004
07/01/2004 - 08/01/2004
08/01/2004 - 09/01/2004
09/01/2004 - 10/01/2004
10/01/2004 - 11/01/2004
11/01/2004 - 12/01/2004
12/01/2004 - 01/01/2005
01/01/2005 - 02/01/2005
02/01/2005 - 03/01/2005
03/01/2005 - 04/01/2005
04/01/2005 - 05/01/2005
05/01/2005 - 06/01/2005
06/01/2005 - 07/01/2005
07/01/2005 - 08/01/2005
08/01/2005 - 09/01/2005
09/01/2005 - 10/01/2005
10/01/2005 - 11/01/2005
11/01/2005 - 12/01/2005
12/01/2005 - 01/01/2006
01/01/2006 - 02/01/2006
02/01/2006 - 03/01/2006
03/01/2006 - 04/01/2006
 
      เชิ่อมโยง

รูปประกอบ (Flickr)
โค้ด
รูปประกอบ (อดีต)
deli.icio.us/poonlap

Thai Linux Working group
TLWG Planet
Blognone
Home at LTN
Bact's blog
Hui blog
Theppitak's blog
Noi's life & thoughts
Kitty.in.th
Sf-alpha
Vee blog
too - blogin'
Mk's blog
Pok's blogger
Vmlinix blog
Sothorn's Web log
คุณอุทัย
DrRider's Blog
Donga's memories

This page is powered by Blogger. Isn't yours?

Creative Commons License

Bad Knowhow and Good Wrapper

ช่วงสองสามวันที่ผ่านมาอ่าน blog ของ Satoru Takabayashi คนที่เขียน Namazu. เหลือบเห็น icon ทางขวามือ Bad Knowhow เลยคลิ้กไปอ่าน. อ่านแล้วทำให้คิด, คิดแล้วก็เห็นว่าดีน่าเอามาเล่าสู่กันฟัง.

นาย Satoru เขียนไว้ว่า พอใช้คอมพิวเตอร์ไปก็ รู้สึกว่าทำไมมันต้องจำโน่นจำนี่เยอะแยะกว่าที่จะใช้ซอฟต์แวร์ให้คล่อง พวก knowhow แบบนี้มันเยอะเหลือเกิน. พวก knowhow พวกนี้ตอนแรกไม่ได้อยากจะรู้เลยและเขาเรียก knowhow พวกนี้ว่า Bad Knowhow. พวก Bad Knowhow เกิดมาจากข้อกำหนด (specification) ของซอฟต์แวร์ที่โยงใยมาจากอดีตจนถึงปัจจุบันแบบว่าแก้ไขลำบาก. ที่เห็นได้ชัดคือซอฟต์แวร์บน UNIX ต่างๆเช่น TeX, emacs, sendmail ฯลฯ. พวกนี้จะเป็นซอฟตแืวร์ที่มีประโยชน์มากแต่ในขณะเดียวกันก็มีความซับซ้อนอยู่ภายใย ใช้ลำบาก. นี่ก็เป็นสาเหตุที่ทำพวก Bad Knowhow ทั้งหลายมีเอกสารเกี่ยวกับการใช้ซอฟต์แวร์เหล่านี้ หรือข้อมูลบนเว็บเยอะ. เขายังเขียนไว้อีกว่า สิ่งที่ทำให้ซอฟต์แวร์เหล่านี้ใช้ยากก็มีหลายสาเหตุ ตั้งแต่คนสร้างโปรแกรมนั้นไม่มี sense บ้าง, เพิ่มความสามารถโน้นนี้จนซับซ้อนเกินเหตุ, ทำให้ซอฟต์แวร์ใช้ยาก. แต่ก็จะมีคนอยู่อีกพวกที่ใช้ซอฟตแืวร์เหล่านี้คล่องแคล่วจนรู้สึกว่า โปรแกรมพวกนี้ลึกซึ้ง (ภาษาญี่ปุ่นใช้คำว่า 奥が深い) จะมีความรู้สึกดีใจ ภาคภูมิใจที่ใช้ซอฟต์แวร์เหล่านี้ได้คล่องแคล่ว. เหมือนเป็นโรคชนิดหนึ่ง. ก็จะมีพวก mania เท่านั้นที่คลั่งไคล้อะไรแบบนี้. อืม... คิดไปคิดมา ผมคนหนึ่งล่ะที่อาจจะจัดอยู่ในพวกคนที่เป็นโรคนี้. ก็ยอมรับนะว่าโปรแกรมบางตัวนี่ใช้ยากจริงๆแต่พอใช้แล้วมันดีอะก็เลยใช้ถึงแม้มันจะใช้ยากก็ตาม ใช้ไปเรื่อยๆก็กลายเป็นชินไป. เรื่อง Bad Knowhow นี้เป็นเรื่องที่คุยกันเยอะมากแต่คงเฉพาะในญี่ปุ่นมั้ง ถึงขนาดมีการจัด Bad Knowhow conference ปีที่แล้วประมาณเดือนพฤษภาคม. หัวข้อก็คือทำอย่างไรให้พัฒนาการใช้คอมพิวเตอร์ให้ดีขึ้น. ก็มีนัยๆว่าทำอย่างไรให้ Bad Knowhow มันน้อยลงนี่แหละ. ในสไลด์ก็มีภาพประกอบที่น่าสนใจอันหนึ่งคืออันนี้

เขาพูดถึงการพัฒนาซอฟต์แวร์ไว้โดยใช้สามเหลี่ยมอธิบายการพัฒนาซอฟต์แวร์ว่า แ่บ่งสามเหลี่ยมออกเป็น 3 ส่วนตามลำดับจากบนลงล่างคือ

  • Universal knowhow เป็นพวกอัลกอริทึ่ม, data structure, object oriented ฯลฯ
  • System knowhow เป็นพวก knowhow ที่เกี่ยวกับตัวระบบเช่น OS, compiler, specification ของภาษาคอมพิวเตอร์, network, computer architecture ฯลฯ
  • Bad knowhow พวกที่อยู่ล่างสุดและมีเยอะ พวก API, เครื่องมือต่างๆ, การ configuration, ตัวเลือกบรรทัดคำสั่ง ฯลฯ
พูดง่ายๆคือพวกที่ 1 กับ 2 นี่ส่วนใหญ่จะเรียนกันในมหาวิทยาลัย. ส่วนที่ 3 คือ Bad Knowhow ไม่มีใครสอนต้องหาความรู้ใส่ตัวเอง เรียนรู้ได้จากการท่องเว็บไปวันๆ, ถามน้องเกิ้ลบ้าง. แล้วส่วนใหญ่ก็จะตายตรงช่วงที่ 3. ลองนึกดูว่ากกว่าจะพัฒนาโปรแกรมเองอะไรสักตัวต้องเรียนรู้อะไรไปบ้างเช่น editor ใช้ยังไง, เชลล์ใช้ยังไง, คอมไพล์อะไรทีมีตัวเลือกอะไรบ้าง สารพัด.

ก็มีอีกคนหนึ่งคือ Hiroshi Yuki ก็ให้ความเห็นโดยเขียนในเว็บไซด์ของเขาในหัวข้อ From Bad Knowhow to Good wrapper ไว้ว่า เวลาเจอโปรแกรมที่ใช้ยากๆดูเหมือนจะเป็น Bad Knowhow ก็อย่าไปว่ามันเลย มาสร้าง Good wrapper ดีกว่า. คือเขาก็บอก Bad Knowhow ก็จริงแต่ทำไมมีคนใช้? เช่น Emacs จำ key binding ไปได้ยังไงตั้งเยอะแยะ, ไฟล์ configuration ของ sendmail อ่านไม่รู้เรื่องแต่ก็มีคนใช้ค่อนโลก, TeX/LaTeX เขียนยากจะตายแต่ก็ไม่ตาย เป็นต้น. แสดงว่าพวกซอฟต์แวร์ที่เป็น Bad Knowhow เหล่านั้นมันให้ "ผลลัพธ์ที่ดี" เลยมีคนใช้. โปรแกรมพวกนี้อาจจะจัดเป็น Bad Knowhow ที่ดี. ส่วน Bad Knowhow ที่ไม่ดีคือพวกที่เรียนรู้แล้วไม่ได้ประโยชน์ ต่อยอดอะไรไม่ได้ เ่ช่น ระบบที่มีแต่ GUI อย่างเดียวคือ knowhow แบบกดปุ่มอย่างเดียว, "คน" ต้องมานั่งกดตามขั้นตอนจะให้ "เครื่องคอมฯ" ทำแทนไม่ได้.

ก็ได้ความคิดที่ว่าไม่ต้องกลัว Bad Knowhow ของพวกระบบที่ซับซ้อน. ถ้ามันเป็น Bad Knowhow ก็สร้าง Good Wrapper ทับมันซะ. ตัวอย่างเช่น nmap คำสั่งสแกน IP มีตัวเลือกเยอะแยะเลือกไม่ถูก, ก็ใช้ nampfe เป็น GUI ช่วยทำให้ใช้ง่ายขึ้น. ทำให้ใช้ได้ทั้งแบบบรรทัดคำสั่งกับ GUI. apt-get เป็นบรรทัดคำสั่ง, ไม่อยากใช้หรือใช้ไม่คล่องก็ไปใช้ synaptic แทน.


หมายเหตุ: Picture from http://www.hyuki.com/techinfo/knowhow2.gif

ใน conference ก็มีการบรรยายของ Tatsuhiko Miyakawa ให้ข้อคิดไว้ดีทีเดียว ว่า Bad Knowhow เป็น "สิ่งที่ไม่ดีแต่จำเป็น" (ภาษาญี่ปุ่นใช้คำว่า 必要悪). แถมยังบอกว่า "ค่าของ engineer อยู่ที่จำนวนของ BK (Bad Knowhow) ที่เรียนรู้ไป" ! เขายังอธิบายต่อไปว่า BK หนึ่งๆ ที่ต้องเรียนรู้นั้น ใจความสำคัญไม่ได้อยู่ที่ Knowhow แต่อยู่ที่ "ขั้นตอนที่หา knowhow" ต่างหาก. ตัว BK จริงๆแล้วอาจจะไม่มีประโยชน์อะไรเลย. API, configuration file ที่เรียนไปวันนี้พรุ่งนี้อาจจะใช้ไม่ได้แล้ว (ตรงเผงเลย). แต่สิ่งที่สำคัญของคนที่สู้กับ BK แต่ละอันๆ คือมีประสบการณ์, จะมีสัญชาตญาณว่าควรจะปรับตัวอย่างไร ควรจะทำอย่างไรให้แก้ปัญหาให้ได้. นี่เองที่เขาบอกไว้ว่า "ค่าของ engineer อยู่ที่จำนวนของ BK (Bad Knowhow) ที่เรียนรู้ไป". ในสไลด์ของเขาน่าสนใจมาก แยกประเภทต่างๆของ Bad Knowhow และวิธีแก้ไขให้ด้วยว่าทำอย่างไร. สิ่งที่ช่วยแก้ Bad Knowhow คือเอกสารต่างๆ ไม่ว่าจะเป็น manual, mailing list, web site หรือ blog ที่เขียนๆกัน. คือทางที่ดีรู้คนเดียวไม่พอควรจะเขียนเป็นนิสัย (คนญี่ปุ่นมีแบบนี้เยอะ) ช่วยแก้ Bad Knowhow ได้แบบหนึ่ง (ทางแก้จริงๆอาจจะต้องไปแก้ที่สาเหตุตั้งแต่การออกแบบโปรแกรมดีๆตั้งแต่แรก). และมีทัศนะคติใหม่ต่อ Bad Knowhow ว่า "Let's face it, Bad Knowhow is fun!". คือคุณ Miyakawa เขาคิดแบบคนเป็นวิศวกร.

กลับมาคิดอีกที คนที่ "ชอบ" ใช้ลินุกซ์นี่เป็นพวกชอบ Bad Knowhow ? ผมว่าส่วนหนึ่งคงใช่ ดูแต่ละคนที่อยู่ใน LTN สิ. ชอบอ่าน ชอบค้นคว้าเอง. คีย์เวิร์ด (หรือ key phrase) มันก็มีอยู่บ้างเช่น "ทำอะไรด้วยตัวเอง", "ไม่ยอมแพ้ง่ายๆ", "ถ้าคนอื่นทำได้, ฉันก็ต้องทำได้", "ปัญหาที่เจอ คงมีคนเจอแล้วและอยู่ใน google" ฯลฯ

Bad Knowhow นี่แหละที่ผมว่าเป็นอุปสรรคสำหรับคนใช้ลินุกซ์หน้าใหม่ หรือที่เรียกว่า newbie. เมื่อวานไปอ่านเว็บ I am a newbie, I have a problem, so you must help me! ชี้ให้เห็นเหมือนกันว่า newbie แตกต่างกับพวกไม่ newbie อย่างไร และคนที่ไม่ใช่ newbie มัน (แน่นอนว่าต้องเคยเป็น newbie มาก่อน) มีคุณลักษณะอย่างไร. ลองอ่านดูครับ.

เนื้อหาที่เกี่ยข้อง:

Bad Knowhow and Good Wrapper - Friday, October 14, 2005 -

ความคิดเห็นจากคุณ Blogger Mk - 12:58 PM

อ่านแล้วเห็นด้วยเกือบหมดเลยครับ เพียงแต่รู้สึกว่าเรียก Bad Knowhow อาจจะดูแรงไปนิด แต่ไม่รู้เหมือนกันว่าจะเรียกว่าอะไร    

ความคิดเห็นจากคุณ Blogger NOI - 2:12 PM

อ่านสนุกมากครับ มันดี ชอบๆ :D ขอบคุณครับ :    

ความคิดเห็นจากคุณ Anonymous นับ - 11:25 PM

อ่านแล้วประทับใจมากครับ รู้สึกโดนใจมากๆ รู้สึกว่าจริงเลยครับ เป็นเรื่องใกล้ตัวเรานี่เอง สงสัยผมคงเป็นทั้ง newbie และพวกที่บ้า BK ด้วยทั้งสองอย่างนะครับ ฮ่าๆ
พอกลับมาคิดทำให้รู้สึกว่าประเด็น คือ
1. ปัญหาตั้งแต่การ design ทำให้ software ต้องไปผูกกับ BK ที่ว่า
2. ปัญหาการกำหนด standard ครับ ให้ software ประเภทเดียวกันใช้มาตรฐานเดียวๆกัน ทำให้คนที่มาใช้งานนั้น เรียนรู้ BK เพียงอันเดียว ก็จะสามารถลดการเกิด BK ได้มหาศาลเลยนะครับ    

ความคิดเห็นจากคุณ Anonymous revolution - 2:30 AM

สุดยอดไปเลยผมมองว่า BK มันกระตุ้นให้คนเรียนรู้มากขึ้นสมองไม่ฝ่อ และในขณะเดียวกันมันก็เป็นบาเรียทำให้เรียนรูยาก

เห็นด้วยกับการกำหนดมาตรฐาน แต่ถ้ามาตรฐานเป็น BK เองหล่ะครับ น่าคิด!!!

ขอบคุณนะครับที่แปลอะไรดีๆให้อ่าน    

Post a Comment



 
Search this blog:


Google Home - Blogger - Blogger Templates

© 2005 Poonlap's Linux blog