ทำอะไร

วันนี้ในงาน Chrome โดนเรียกขึ้นเวทีไม่รู้ตัว (แอบขาสั่นนะนั่น) แต่คำถามหนึ่งที่คิดได้คือ จะแนะนำอะไรให้กับนักพัฒนาคนอื่นๆ

ผมแนะถึง Chrome Extension ว่ามันเป็นเครื่องมือที่ดี ที่เราจะเล่นกับเว็บได้มากมาย แต่สิ่งสำคัญอย่างแรกคือเราต้องคิดก่อนว่าเราจะทำอะไร

ปัญหาของเมืองไทยตอนนี้ไม่ใช่เราขาดนักพัฒนา แต่เราเต็มไปด้วยนักพัฒนาที่มีแต่ yet another ….

การทำตามอย่างไม่ใช่เรื่องเลวร้ายไปซะหมด การเรียนรู้จากคนอื่นเป็นเรื่องที่ดี แต่สำคัญคือในงานแต่ละชิ้นเราต้องการความแตกต่างแม้จะเล็กน้อย

ครั้งหนึ่ง exteen เคยเป็นเว็บบล็อกสำหรับเด็กคอสเพลย์, Blognone เองก็เคยเป็น Slashdot in Thai แล้วเราค่อยสร้างความแตกต่างออกมาจากตรงนั้น

ผมเคยคุยกับ @nattachai บอกว่าเด็กๆ ที่ทำเกมบ้านเราไม่ได้แย่ ระบบดี เกมดี แต่มันไม่สนุก, หรือบางทีก็ไม่ได้ต่างจากเกมอื่นๆ ที่หลายครั้ง “แจกฟรี”

เราไม่ได้ขาดโปรแกรมเมอร์ขนาดนั้น (จริงๆ โปรแกรมเมอร์เก่งๆ บ้านเราก็คงเรียกได้ว่า “ขาดแคลน”) แต่เราขาดคนอย่าง Sid Meier อย่างมาก คนที่อาจจะเขียนโปรแกรมไม่เป็นเลย แต่บอกได้ว่าทำอย่างนี้แล้วมันสนุก

เราควรเริ่มจากปัญหา เราควรสอนใ้หเด็กๆ กล้า กล้าลอง กล้าทำผิด กล้าเริ่มใหม่

หลายครั้งเราแค่ไม่กล้าเริ่ม หลายครั้งมันก็แค่การ copy code จาก tutorial มาทำตาม เราแค่ต้องเริ่ม เราแค่ต้องลอง เราต้องกล้าแหวกแนว

ผิดก็แค่เริ่มใหม่อีกที ไอเดียไม่เวิร์คก็คิดใหม่อีกอัน

เราต้องสอนให้เด็กเริ่มจากปัญหา สอนให้มองเห็นโอกาสในวิกฤติ สอนให้กล้าที่จะลงมือแก้ไขมัน

เราต้องถือว่าการที่เด็กจบมาแล้วสามารถบอกกับคนทั้งโลกได้กว่า ไม่เก่ง ไม่สามารถ และทำไม่ได้ เป็นผลผลิตของความล้มเหลวในการศึกษาอย่างสิ้นเชิง

น่าตกใจที่ผลเช่นนี้มีมากมาย

 

ว่าด้วย AppUp

อันนี้เป็น note เพราะ blognone ได้ project ร่วมโปรโมท AppUp กับทางอินเทล (คงเห็นข่าวใน blognone ยิงเรื่อยๆ กันสักพักแล้ว)

AppUp เป็นความพยายามของอินเทลที่อยากได้ Application มาอวดโลกว่า นี่มันทำมาสำหรับ Atom โดยเฉพาะ เพราะว่าตอนนี้เอง Atom รับสภาพ PC ที่อืดๆ อยู่ทำให้แม้จะขายดิบขายดี (และยังขายดีขึ้นเรื่อยๆ ) แต่ก็ไม่สามารถสร้างโอกาสใหม่ๆ ได้ แถมพอดีว่าปีนี้ tablet มันดันเข้ามา และสองตลาดนี้อาจจะกลืนเป็นตลาดเดียวกันในอนาคต

ปัญหาอย่างหนึ่งคือ ไอเดียของ AppUp คือ App อะไรก็ได้ที่คุณบอกว่ามันทำมาสำหรับ Atom ตาม Guideline ของอินเทล ที่เหลืออินเทลพยายามรักทุกคน .NET, Java, C++, Python รวมถึง OS ที่รับทั้ง Moblin (ตายไปแล้ว), MeeGo (ยังไม่เกิด), และ Window ที่มีฐานผู้ใช้มากที่สุดในตอนนี้

ความพยายามที่จะรักทุกคน เป็นทั้งข้อดีและข้อเสียไปในเวลาเดียวกันคือ SDK ของ Intel มันจะงงๆ หน่อย ว่ามันทำอะไร อย่าง Android เราก็เปิด SDK แล้วเขียนๆ ตาม tutorial ไปเรื่อยๆ ก็ได้ App ของ Android เป็นอันเสร็จพิธี

แต่ SDK ของ AppUp นั้นจะมีเพียงตัว package และ C/C++ lib บางส่วนที่ช่วยแจ้งปัญหาเวลาซอฟต์แวร์มัน crash และตรวจสอบสิทธิ์การใช้งานผ่าน Service ตัวหนึ่งที่ลงมากับ AppUp เรียกว่า ADP Service

เนื่องจากเป็น C/C++ มันจึงไปที่ไหนก็ได้ในโลก ทำไปทำมาอินเทลพบว่านักพัฒนาบนวินโดวส์ชอบ .NET ก็ออก tutorial มากมายถึงวิธีการพัฒนาบน .NET เริ่มจากขั้นแรกคือทำ .NET Binding! ของ ADP Service

ที่เหลือนั้นคือการแพ๊ค โดยอินเทลบอกว่าแพ็คยังไงก็ได้ให้ติดตั้งแบบไม่ต้องให้ผู้ใช้เข้ามายุ่ง กด install จาก AppUp แล้วมันต้องลงไปอยู่ในเครื่องเลย กับอีกข้อคือ Executable ต้องมีตัวเดียว ห้ามลงโปรแกรมทีมี 10 ไอคอนแบบซอฟต์แวร์บนวินโดวส์เดิมๆ เด็ดขาด

ข่าวการเข้ามาของ AIR เป็นเรื่องน่าสนใจ เพราะขณะที่ C/C++ ของ ADP จะอยู่ในทั้ง Windows/Linux แต่อินเทลกลับไม่มี platform ให้ยึดว่าทำตามนี้แล้วจะขายได้ทุกที่ที่ AppUp ไป ดังนั้นเราไม่รู้เลยว่าวันนี้ที่ AppUp มีข่าวมากมายเช่นว่า Tablet Asus จะรับ หรือ MeeGo มันเจ๋ง ฯลฯ ถึงเวลาจริงๆ แล้วจะพัฒนา App ยังไง ต้องแก้จากของเดิมแค่ไหน ขณะที่ Android บอกว่า Android App รันบน Google TV ได้ แค่จอมันใหญ่ อาจจะต้องปรับหน้าจอหน่อย….

AIR เป็นทางออกให้อินเทล เพราะมัน Cross Platform แถม AIR ก็ชัดเจนว่าจะไปกับ MeeGo ด้วย ดังนั้นมันเป็นทางออกแบบ WORM (Write Once Run Many) ของอินเทล อีกทางหนึ่งคือ Qt ของ Nokia ผู้ร่วม MeeGo เพราะ Qt มันรองรับ Desktop ด้วย จึงเป็นรูปแบบการพัฒนาแบบ WOCA (Write Once Compile Anywhere) ที่เทพคือตัวจัด UI ของ Qt Creator มันเทพมาก ในบทความชุด AppUp คงมีบทความตัวนี้อยู่ด้วย

ว่ากันตามจริง AIR น่าจะได้รับความสนใจกว่ามาก เพราะมันเองสามารถไปรันบนมือถือได้ด้วย

ข่าวดีคือตอนนี้ AppUp มีโปรโมชั่นสมัครฟรี ใครยังไม่ได้สมัครก็รีบไปสมัครๆ ไว้ก่อนได้

ข่าวร้ายคือ AIR นั้นเข้ากับ AppUp ได้ง่ายเพราะ AIR มันมี Licensing API ในตัว และมันต้องการ Signing (หลอนจาก Symbian ในทันใด) แถมรองรับ Cert จาก 4 รายเท่านั้นคือ Thatwe, Verisign, GlobalSign, และ ChosenSecurity ตรงนี้เตรียมใจไว้เลยว่ามันจะแพง ถูกที่สุดคือ ChosenSecurity อยู่ที่ 199 ดอลลาร์ต่อปี ส่วนนี้เป็นข้อจำกัดที่มากับ AIR Licensing API ที่เหลือคือส่งไฟล์ .AIR ไปให้อินเทลก็ได้เอา App ขึ้นเว็บแล้ว

ดังนั้นลาก่อน Adobe AIR…

จุดที่เจ๋งของ AppUp คือมันขาย Component ให้ App อื่นเอาไปใช้ได้ด้วย แถมคิดค่าใช้งานแบบส่วนแบ่งรายได้ ที่เห็นๆ เช่นว่าอยากเขียน App ด้วย Python แทน C/C++ ก็ต้องจ่าย 10% ของราคา App เป็นค่า Wrapper เป็นต้น

เป็นแนวทางที่น่าสนใจมาก ยิ่งถ้าอนาคต Android ทำแนวทางนี้ได้ เช่นว่าทำ Component Share to Facebook เป็น Activity ใน Android แล้วเปิดให้เกมต่างๆ ที่เสียเงินใช้ ถ้ามีการเรียกต้องจ่าย 0.1% ของค่าเกมน่าจะทำให้เกิด App ที่ไม่มีหน้าจอเป็นของตัวเองอีกเยอะพอควร

ปล. note นี้ยังมั่วๆ มาก เดี๋ยวเรียงลำดีบเป็นบทความลง blognone อีกที

 

Angry Driven Development

หลายคนอาจจะเคยเห็นว่า ผมมักเขียนถึงโค้ดที่ผมแก้แล้วขึ้นต้นบทความด้วยคำว่า “แม่ง”

มันไม่สุภาพนัก แต่คำว่าแม่งนี่แหละ ที่เป็นแรงผลักดันโค้ดพวกนี้ให้ออกมาอย่างรวดเร็ว ไร้ความวอกแวกใดๆ

ไม่ต้องฟังเพลง ไม่สนใจเกม ไม่สนใจกินข้าว โค้ดให้เร็ว แก้อด้วยความเร็วสูง อ่านด้วยความเร็วสูงมาก

ผมเรียกมันว่า Angry Driven Development (ADD)

ใน Test Deriven Development (TDD) เราอาจจะเริ่มทุกอย่างด้วยการออกแบบการเทส แต่ใน ADD เราเริ่มมันด้วยคำว่า “แม่ง”

ความเร็วในการพัฒนาขึ้นกับคำสร้อยต่อท้ายคำว่าแม่ง เช่น “แม่ง เอ๊ย…” ก็จะเร็วขึ้นอีกขั้น ถ้าสร้อยเริ่มมากขึ้น การพัฒนาจะเข้มข้นขึ้นเรื่อยๆ

ไม่นอน ไม่กิน ไม่คุย ไม่พัก เปิดโปรเจคแล้วต้องจบ รวดเดียวเท่านั้น

เคยทำได้ 8 ชั่วโมงรวด หลับเป็นตาย….

 

ทำ อะไร

เมื่อเป็นเด็ก ผมไม่มีอะไรทำ

เมื่อเป็นวัยรุ่น ผมไม่ทำอะไร

เป็นเรียนจบใหม่ๆ ผมไม่รู้จะเลือกทำอะไร

เมื่อทำงานใหม่ๆ ผมไม่รู้จะทำอะไรก่อน

ตอนนี้ ผมไม่รู้ว่าเมื่อใหร่สิ่งที่ต้องทำมันจะหมด

แก่ชิบ