Sunday, March 30, 2014

Archtecture Then Design

When you want to build the project
You need to do architecture then design
Without this it's not easy to maintain.

Wednesday, March 26, 2014

ครู อาจารย์ สอน ศิษย์

อ่านเรื่องต่าง ๆ ในนี้ (ปรัชญาการทำงาน) แล้วก็มีความคิดวูบ ขึ้นมา
"ครู สอน อะไรบ้าง?"

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

เมื่อเกิดการถ่ายทอดอย่างนี้แล้ว ความรู้ที่เกิดจากครูคนแรก ๆ ก็จะเกิดเป็นความรู้มากขึ้นเรื่อย ๆ ไปเอง

การพัฒนาซอฟท์แวร์แบบตลาด ๆ บ้านเรา

การแก้ปัญหา หรือการสร้างระบบ หลาย ๆ คนคงคิดว่ามันเป็นการยากที่จะทำ แต่พอกลับมามองในอีกมุมหนึ่ง ก็ปรากฏว่ามันไม่ได้ยากอย่างที่คิด หรือใช้วิธีการที่ซับซ้อนอะไรเลย แต่หากว่ามันกลับเป็นวิธีที่เรียบง่าย หรือธรรมดามาก ๆ เช่น linux ก็ไม่ได้ถูกสร้างขึ้นจากความซับซ้อนอะไรเลย

มาวันนี้ระหว่างเดินอยู่ท่ามกลางตลาดสด มีร้านรวงมากมาย ต่าง ๆ กันไป  ทั้งร้านผลไม้ กับข้าว ยา ผัก ของสด อาหารแห้ง ร้านขายของชำ พวงมาลัย
แล้วก็จำได้ว่าเคยอ่านเรื่องนี้ไว้แล้วเมื่อครั้งสมัยเร่ิมพัฒนาระบบใหม่ (cathedral-bazaar)

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

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

ดังนั้นตลาด ก็จะมีสินค้าและบริการที่หลากหลาย และมันก็ทำให้ผมเกิดความคิดแบบตลาด ๆ นี่แหละ

ถ้าเรากลับมามองระบบซอฟต์แวร์ที่จะพัฒนาตามความคิดผม ก็จะได้ประมาณว่า

ระบบ (ตลาด) ก็จะประกอบด้วย งาน (ร้านค้า ที่หมายถึงร้านที่ขายสินค้าประเภทเดียวก่อน) แต่ละงานก็ต่างคนต่างขายสินค้าหรือบริการ และแต่ละงาน (ร้าน) ก็พัฒนาตนเอง จนเมื่อถึงเวลา ก็มีการแลกเปลี่ยนข้อมูล (สินค้า หรือบริการ) กัน

ส่วนลูกค้า (ผู้ใช้งานระบบ) ก็จะเป็นผู้ซื้อ (ใช้งาน) สินค้าหรือบริการของแต่ละร้าน

แต่ก็จะมีงาน (ร้านค้า)บางร้านที่นำ งาน หรือสินค้าหรือบริการ ของแต่ละงานมารวมกันแล้วสร้างเป็น งานอีกรูปแบบหนึ่งขึ้นมา เช่นร้าน มินิมาร์ท

เมื่อมองกลับมาที่ตัวซอฟต์แวร์ ก็จะมีลักษณะคล้าย ๆ กัน คือ ถ้าหากเราสามารถแยก งาน สินค้า บริการ ออก เป็นส่วนเล็ก ๆ ที่ทำงานได้ด้วยตัวเอง (application) เราก็สามารถนำมันมาประกอบกันเป็น ตลาด (Project) ได้ แล้วก็ได้หลาย ๆ แบบ ด้วยสิ เพียงแค่เราหา application มารวมกันให้ได้

แล้วเมื่อมองภาพใหญ่กว่าตลาดเดียว มันก็คือการเชื่อมโยงกันระหว่าง ตลาด หรือ Project นั่นเอง

คราวนี้ภาพของ object มันก็ออกมาให้เห็นได้ชัดขึ้น โดยถ้าหากเราสร้าง object ที่เหมาะสม เราก็สามารถสร้าง application , project ได้ เรื่อง ๆ

ดังนั้นเราก็คงไม่แปลกใจว่า เดี๋ยวนี้เราทำไมจึงเห็นว่ามี application และ Project ออกมาได้หลากหลายขึ้น


"ระเบิดจากข้างใน และ สิ่งที่สมบูรณ์เกิดจากสิ่งเล็ก ๆ ที่รวมกันอย่างลงตัว"