ไม่ได้ update blog ซะนานเลย 
วันนี้ำพอมีเวลาว่างเปิด web ดูนู่นดูนี่  ก็ไปเจอเรื่องน่าสนใจ

เมื่อหลายเดือนก่อนมีคนมาถามผมว่า ถ้าจะทำพวกให้บริการ ads คล้ายๆ google adsense
จะต้องใ ช้เครื่อง spec อะไร ใช้ software อะไรเป็น DBMS โดยให้ตัวเลขประมาณ transaction ต่อวันมาคร่าวๆ
ผมก็ตอบไ ปว่าแค่ MySQL ก็เหลือเฟือ ไม่ถึงกับต้องเสียเงินไปซื้อ DBMS ราคาแพงมาใช้
คนถามก็งงๆ ว่าจะสามารถรองรับได้เหรอ
จนถึงตอนนี้ก็ไ ม่ทราบว่าโครงการนั้นไปถึงไหนแล้ว

มาวันนี้ผมเ องก็เพิ่งรู้ว่า facebook เจ้าของ social networking ชื่อก้องโ ลกเอง
ที่เมื่อปีที่แล้วมี hit rate มากกว่า 80,000 hit ต่อนาที ก็ยังคงใ ช้ php/mysql อยู่

อย่าง google เองก็ยังคงใช้ linux เป็น os สำหรับ server
และในหลายๆ project ของ google เองก็ใช้ opensource อย่างแพร่หลาย และมีประสิทธิภาพ

จะเห็นได้ว่าบ่อยครั้งที่ free opensource/software ก็ knock out licensed software ด้วยความสามารถของ architecture และ engineer
ทำไ มคนไทยไม่เอาเป็นแบบอย่างบ้าง
หรือกลัวว่าจะไม่ได้ commission นอกระบบกันนะ :D

ทำไมงาน sw development ที่ใช้ OOP เป็นหลัก ถึงได้มีแต่คนที่ทำงานโดยยังคิดเป็น procedural programming อยู่นะ
ทั้งที่ OOP ในไทยก็เริ่มใช้กันแพร่หลายมาเกือบสิบปีแล้ว แต่ knowledge และความเข้าใจของคนที่ทำงานด้วยกัน เหมือนมันเป็นเรื่องใหม่เลย
แค่ developer เองยังหาน้อยมากที่เข้าใจ concept และนำมาใช้งานให้ได้ประสิทธิภาพ
ซ้ำร้าย sa ที่เ ข้าใจยิ่งหายากกว่า

ปล1: โดยทั่วไปประมาณ 90% ของ developer ที่ใช้ microsoft ใช้งาน OOP ให้เกิดประโยชน์ไม่เป็น
ปล2: ส่วนใหญ่ developer ชอบการ copy+paste ทั้งที่รู้ว่างาน sw development มักจะเจอแบบแก้แล้วแก้อีก ทั้งแก็ก้ bug ทั้ง change requirement แต่ก็ยังคงเพิ่มงานให้ตัวเองโดยการ copy+paste
ปล3: คนที่ทำงาน sw development โดยทั่วไป (โดยเฉพาะ sa) เข้าใจว่าการ re-use ในมุมของ oop คือการ enhancement บางสิ่งบางอย่าง ให้ใช้งานได้หลายๆ ที่ ผลที่ตามมาคือ dependency มหาศาล ทำให้ยากต่อการ debug และการแก้ไข
ปล4: เท่าที่เจอมา 80% ของ developer ใช้ spring เพียงแค่การใช้แทนการสร้าง object และการเรียก set method
ปล5: ทั้งหมดมาจากประสบการณ์ส่วนตัวทีเ จอมาทั้ง organization ขนาดใหญ่บางที่ จนถึงขนาดเล็ก
ปล6: จากทั้งหมดข้างบนอาจบอกได้ว่าคนที่ทำงานจริงจังไม่ได้รับการ encourage/motivate ในการเรียนรู้ ทั้งจากที่เกี่ยวกับงาน และเกี่ยวกับ technology จริงจังจากองค์กร เท่าที่เห็นส่วนมาก คนที่ทำงานดีทำงานเก่ง งานจะมากองโดยที่เงินเดือนเท่าเดิม จะได้เงินดือนขึ้นก็ต่อเมื่อตอนที่บอกว่าจะลาออก ซึ่งคนส่วนมากเมื่อบอกว่าจะลาออกก็คือได้งานใหม่แล้วนั่นเอง

การใช้ hibernate สำหรับทำ ORM นั้น ยังมีข้อดีอีกอย่างนึงคือ
สามารถสร้าง generic dao ได้ โดยสามารถนำ operation ที่ใช้ทั่วไปคือ CRUD (Create, Read, Update, Delete)
มาไว้ที่ base-class โดยที่ไม่ต้องเขียน operation เหล่านี้ที่ sub-class อีก 
แต่การทำแบบนี้เป็น type-unsafe operation คือ ใน base-class สามารถรับ parameter เป็น Object
หรือ base-class ของ data class เท่านั้น ซึ่งในการเรียกใช้งาน operation เหล่านี้เราต้องทำ explicit casting และ error บางอย่าง
สามารถตรวจสอบได้ที่ runtime เท่านั้น
(เพิ่มเติม…)

DAO ย่อมาจาก Data Access Objects แนวความคิดนี้เกิดขึ้นมาจาก Microsoft เพื่อให้ programmer สามารถเข้าใช้งาน database ประเภทต่างๆ ได้โดยง่าย
ใน OOP เราใช้ DAO เพื่อแยก data layer ออกจาก business layer ให้ชัดเจน
ใน business layer เราไม่จำเป็นต้องรู้เกี่ยวกับ sql statement หรือการเข้าถึงข้อมูลในฐานข้อมูล
ดังนั้นในส่วนที่เป็นการเข้าถึงข้อมูลในฐานข้อมูลจึงถูกแยกออกมาเป็น data access layer
(เพิ่มเติม…)

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Follow

Get every new post delivered to your Inbox.