ถ้าเราเอาเทคโนโลยีนำหล่ะ

จาก Blognone by pruet

แนะนำอย่างหนึ่ง project จบเมืองไทย ชอบเอาเทคโนโลยีนำ คือ อยากใช้เทคโนโลยีนี้ ๆ (เมื่อก่อน ก็ CGI, ไล่มาจนถึง J2EE ตอนนี้ก็คงเป็น AJAX) แต่เราไม่เคยคิดว่า อะไรคือปัญหาที่เราอยากแก้

เวลาไปทำงาน เราไปบอกเจ้านายไม่ได้นะครับ ว่า เราอยากใช้ AJAX กับ project นี้ เพราะว่ามันเป็นเทคโนโลยีที่น่าสนใจหรือว่าเราอยากจะเรียนรู้มัน

ลองมองอีกมุมดูนะครับ เราสนใจปัญหาอะไรหรือเปล่า เช่น การใช้งานคอมพิวเตอร์สำหรับคนพิการ การทำเพิ่ม usability/accessibility/blah blah ในการใช้งานเว็บ การสร้าง social network สำหรับผู้อ่านข่าวในเมืองไทย ฯลฯ พวกนี้ แล้วค่อยมองหาเทคโนโลยีที่จะเอามาใช้แก้ไขปัญหาพวกนี้ได้อย่างเหมาะสม

ถ้าให้พูดแบบภาษาชาวบ้าน ๆ ก็คงประมาณว่า คุณมาถึงแล้วถามว่า เอาฆ้อนกับตะปูไปทำอะไรดีคะ คุณว่ามันแปลก ๆ เปล่า ที่ถามแบบนี้ :)

แหมมมมม โดนใจจริง ๆ ครับท่าน

เตรียมตัวรับการเปลี่ยนแปลง ในการเขียนโปรแกรมบน Windows Vista

หายไปนานเนื่องจากสอบ และปั่นงานให้มี performance สูงที่สุดเท่าที่จะทำได้ T_T กะว่าถ้าเสร็จแล้วจะมาอัพ blog สัก 6-7 เรื่องเลย แต่ว่าตอนนี้เอานี่ไปก่อนแล้วกัน ชิมลางไปก่อน

โดยที่เมื่อเช้านี้ได้อีเมลจากข่าวสารจาก CodeProject (Forum หรือเว็บที่น่าจะเป็น Partner ของ  Microsoft Developer Network) ให้ลองเข้าไปอ่าน Windows Vista User Experience Guidelines หรือเอกสารประกอบการออกแบบ User interface ของ Windows Vista ซึ่งเป็น Windows ตัวใหม่ของ Microsoft สามารถอ่านได้ที่ http://msdn.microsoft.com/library/?url=/library/en-us/UxGuide/UXGuide/Home.asp โดยตัวเอกสารยังคงไม่เสร็จดี แต่ก็คงเติมใส่ลงไปเรื่อย ๆ ให้ทันสมัยต่อไปเรื่อย ๆ โดยรวมน่าจะทำเพื่อให้การออกแบบ ส่วนติดต่อกับผู้ใช้นั้นเป็นไปในแนวทางที่ดี และทำให้โปรแกรมที่ทำงานบน Windows Vista นั้นใช้งานได้ง่ายขึ้น รวมไปถึงทำให้มันดูเป็นชิ้นเดียวกัน แน่ๆ และอาจรวมไปถึงการเล่น Themes ของระบบที่ทำให้โปรแกรมของเรานั้นสามารถทำงานกับ Themes ของระบบได้ดีขึ้นด้วย

โดยเตรียมตัวไว้ก่อนน่าจะดีกว่า พอ Windows ตัวใหม่ออกมาใครพัฒนาโปรแกรมตัวใหม่จะได้รองรับอนาคตได้พอดี (เห็นว่าเปลี่ยนแปลงไปเยอะเลย) แนะนำว่าให้ลองโหลด Microsoft .NET 3.0 Beta (WinFX) มาลองเล่นด้วยก็ดีนะ

ส่วนในตอนนี้ Windows Vista ออกรุ่นทดสอบถึง RC2 แล้วคาดว่าจะ RTM ได้ในอีกไม่กี่เดือนนี้ แต่ bug ในรุ่น RC1 และ Beta นั้นมีรายงานว่าเยอะระดับหลักพันเลยทีเดียว -_-‘ ใครจะลอง RC2 ถ้ามี error ก็ send error ส่งให้ Microsoft ด้วยนะ ;) ไปหล่ะ

โพสสักพักไปอ่านข่าวที ่Blognone แล้วเจอเรื่องคล้ายๆ กันพอดี Windows Vista RC2

หลักการเขียนโปรแกรม 50 ข้อ

เห็นว่าน่าสนใจและดีมาก ๆ เลยนำมาลง (ช่วงนี้รู้สึกว่าตูไม่ได้เขียนเองเท่าไหร่เลยนะ -_-")

  1. โปรแกรมแบบพอเพียง (ทำอะไรให้เล็กที่สุดเท่าที่เป็นไปได้)
  2. ทำสิ่งธรรมดาให้ง่าย ทำสิ่งยากให้เป็นไปได้
  3. จงโปรแกรมโดยนึกว่าจะมีคนมาทำต่ออย่างแน่นอน
  4. ระเบียบ กฎข้อบังคับ เชื่อถือไม่ได้ถ้ามีเพียงหนึ่งโมดูลไม่ปฏิบัติตาม
  5. ตัดสินใจให้ดีระหว่างความชัดเจน (Clearance) กับการขยายได้ (Extensibility)
  6. อย่าเชื่อมั่น Output จากโมดูลอื่น ถึงแม้เราจะเป็นคนเขียนเอง
  7. ถ้าคนเขียนยังเข้าใจได้ยาก แล้วคนอ่านจะเข้าใจได้ยากกว่าแค่ไหน
  8. ค้นหาข้อมูลสามวันแล้วทำหนึ่งวัน หรือจะทำสามวันแล้วแก้บั๊กตลอดไป
  9. จงสร้างเครื่องมือ ก่อนทำงาน
  10. อย่าโทษโมดูลอื่นก่อน โดยเฉพาะถ้าโมดูลอื่นเป็น OS และ Compiler
  11. พยายามทำตามกฎ แต่ถ้ามีข้อยกเว้น ต้องมีอย่างหลีกเลี่ยงไม่ได้ ให้ประกาศและตะโกนให้ดังที่สุด
  12. High Cohesion Loose Coupling (ยึดเกาะให้สูงสุดในโมดูล และเกาะเกี่ยวกับโมดูลอื่นให้น้อยที่สุด)
  13. ให้สิ่งที่เกี่ยวข้องกันยิ่งมากอยู่ไกล้กันมากที่สุด
  14. อย่าเชื่อโดยไม่พิสูจน์
  15. อย่าลองทำแล้วคอมไพล์ดู ถ้าเราไม่ได้คาดหวังผลลัพธ์อะไรไว้ (อย่างเช่นปัญหา index off by one)
  16. จงกระจายความรู้เพราะนั่นคือการทำ Unit Test ระดับล่างสุด (ระดับความคิด)
  17. อย่าเอาทุกอย่างใส่ใน UI เพราะ UI คือส่วนที่ Unit Test ได้ยาก
  18. ทั้งโปรเจ็กต์ควรไปในทางเดียวกันมากที่สุด (Consistency)
  19. ถ้ามีสิ่งที่ดีอยู่แล้ว จงใช้มัน อย่าเขียนเอง ถ้าจำเป็นต้องเขียนเอง ให้ศึกษาจากข้อผิดพลาดในอดีตก่อน
  20. อย่ามั่นใจเอาโค้ดไปใช้จนกว่าจะ Test อย่างเพียงพอ
  21. เอาโค้ดที่ Test ไว้ที่เดียวกันกับโค้ดที่ถูก Test เสมอ
  22. ทุกครั้งที่แก้ไขโค้ดให้รัน Unit Test ทุกครั้ง
  23. จงใช้ Unit Test แต่อย่าเชื่อมั่นทุกอย่างใน Unit Test เพราะ Unit Test ก็ผิดได้
  24. ถ้าต้องทำอะไรที่ซ้ำกันมากกว่าหนึ่งครั้ง ก็เพียงพอแล้วที่จะแยกโค้ดส่วนนั้นออก
  25. ทำให้ใช้งานได้ก่อน แล้วค่อย Optimize และถ้าไม่จำเป็น อย่า Optimize
  26. ยิ่งประสิทธิภาพเพิ่ม ความเข้าใจง่ายจะลดลง
  27. ใช้ Design Pattern ที่เป็นที่รู้จักจะได้คุยกับใครได้รู้เรื่อง
  28. อย่าเก็บไว้ทำทีหลัง ถ้ายังไงก็ต้องทำ
  29. Multithreading ไม่ใช่แค่การเพิ่มประสิทธิภาพ แต่มันมาพร้อมกับ Concurrency, Deadlock, Isolation Level, Hard to Debug, Undeterministic Errors
  30. จงทำอย่างโจ่งแจ้ง
  31. อย่าเพิ่มเทคโนโลยีโดยไม่จำเป็น เพราะนั่นทำให้โปรแกรมเมอร์ต้องวุ่นวายมากขึ้น
  32. จงทำโปรเจ็กต์ โดยคิดว่าความเปลี่ยนแปลงเกิดขึ้นได้เสมอ
  33. อย่าย่อชื่อตัวแปรถ้าไม่จำเป็น เดี๋ยวนี้ IDE มันช่วยขึ้นเยอะแล้ว ไม่ต้องพิมพ์เอง แค่ dot มันก็ขึ้นมาให้เลือก
  34. อย่าใช้ i, j, k, result, index, name, param เป็นชื่อตัวแปร
  35. ทำโค้ดที่ต้องสื่อสารผ่านเครือข่ายให้คุยกันน้อยที่สุด
  36. แบ่งแยกดีๆ ระหว่าง Exception Message ในแต่ละเลเยอร์ ว่าต้องการบอกผู้ใช้ หรือ บอกโปรแกรมเมอร์
  37. ที่ระดับ UI ต้องมี Catch All Exceptions เสมอ เพื่อกรอง Exception ที่ลืมดักจับ
  38. ระวังคอลัมน์ Allow Null ใน Database ให้ดี ค่ามัน Convert ไม่ได้
  39. อย่าลืมว่า Database เป็น Global Variable ประเภทหนึ่ง แต่ละโปรแกรมที่ติดต่อเปรียบเหมือน Multithreading ดังนั้นกฎของ Multithreading ต้องกระทำเมื่อทำงานกับ Database
  40. ระวังอย่าให้ logic if then else ซ้อนกันมากๆ เพราะสมองคนไม่ใช่ CPU จินตนาการไม่ออกหรอกว่ามันอยู่ตรงไหนเวลา Debug (ถ้ามากกว่าสามชั้นก็ลองคิดใหม่ดูว่าเขียนแบบอื่นได้มั้ย)
  41. ระวังอย่าให้ลูปซ้อนกันมากๆ ไม่ใช่แค่เรื่องความเร็วอย่างเดียว เวลา Debug เราคิดตามมันไม่ได้ (ถ้าเกินสามชั้นก็ไม่ไหวแล้ว)
  42. อย่าใช้ Magic Number ในโค้ด เช่น if( controlingValue == 4 ) เปลี่ยนไปใช้ Enum ดีกว่า เป็น if( controlingValue == ControllingState.NORMAL ) เข้าใจง่ายกว่ามั้ย
  43. ถ้าจะเปรียบเทียบ String ให้ Trim ซ้ายขวาก่อนเสมอ
  44. คิดหลายๆ ครั้งก่อนใช้ Trigger
  45. โปรแกรมเมอร์คือห่วงโซ่สุดท้ายของมลพิษทางความซับซ้อน ดังนั้นหา Project Leader ดีๆ แล้วกัน
  46. มนุษย์ฉลาดกว่าคอมพิวเตอร์ การเขียนโปรแกรมก็คือการสอนให้คอมพิวเตอร์ฉลาดได้เหมือนเรา (มนุษย์ฉลาดกว่าคอมพิวเตอร์จริงๆ นะ)
  47. จงควบคุมคอม มิใช่ให้คอมควบคุมเรา เราต้องสั่งให้คอมทำงาน ไม่ใช่ให้เราทำงานตามคอมสั่ง
  48. อย่าปล่อยให้ข้อจำกัดของคอม มาจำกัดความคิดของเรา (คอมไม่ดีเปลี่ยนเครื่องเลย :-D)
  49. ยอมรับความคิดของผู้อื่น แต่อย่าออกจากกรอบของตนเอง
  50. หมั่น Save โปรแกรมไว้อย่าสม่ำเสมอ ก่อนที่จะไม่มีโอกาส Save (จะให้ดี Save เป็นแต่ละ Version เลย)


อ้างอิง