คุณค่าของซอฟต์แวร์

posted on 01 Aug 2008 23:30 by wonam in softdev

เมื่อสองสามวันก่อน Jay Fields ได้เขียนเกี่ยวกับนักพัฒนากับแฮกเกอร์  ในอีกสองวันถัดไปเขียนเกี่ยวกับรถซีวิคกับคาดิแลค ลองอ่านดูนะครับ เขียนได้น่าอ่านดี

โดยสรุปก็คือเขาพยายามบอกว่านักพัฒนาที่ดีควรจะมีความเข้าใจว่าซอฟต์แวร์ที่ตนกำลังพัฒนานั้นมีคุณค่า (value) หรือมี "ความหมาย" ต่อลูกค้าอย่างไร  เขาเทียบว่าบางทีลูกค้าอาจต้องการซีวิคมือสอง การพยายามสร้างคาดิแลคให้ หรืออะไรที่มากกว่านั้นเป็นสิ่งที่เกินความจำเป็น และอาจทำให้เสียอะไรหลาย ๆ อย่าง

แน่นอนว่า requirement เป็นสิ่งสำคัญอย่างยิ่งยวด  อย่างไรก็ตามสิ่งที่สำคัญมากไม่แพ้กัน (ตามที่อ่านเอาจากบทความของ Fields) ก็คือความเข้าใจ value ของระบบที่กำลังสร้าง   ใน Rational Unified Process ช่วง Inception มีผลลัพธ์อย่างหนึ่งคือ Vision document ผมคิดว่าน่าจะเป็นเอกสารในเรื่องเดียวกัน  หรือในหลักการเชิงคล่องแคล่วข้อแรกก็ระบุว่า "Our highest priority is to satisfy the customer through early and continuous delivery of valuable software." (ดู)

ทีนี้ หลังจากอ่านที่ Fields เขียนมา ผมกลับเริ่มสงสัยว่านักพัฒนาคนหนึ่งมีความจำเป็นแค่ไหนที่ต้องทราบ value ของลูกค้า (ซึ่งไม่น่าจะทราบอย่างลึกซึ้งได้โดยง่าย)

ถ้าพัฒนาเป็นทีม นักพัฒนาทุกคนคงไม่จำเป็นต้องตระหนักถึง value ทุกคน  คนที่จำเป็นต้องทราบอย่างดีน่าจะเป็นหัวหน้าทีมก็พอหรือเปล่า?  ถ้าระบบถูกออกแบบมาอย่างดี requirement ถูกพัฒนาอย่างครบถ้วน แล้วผมคิดว่ามันก็ไม่จำเป็นมากนักหรอกว่านักพัฒนาจะรู้เกี่ยวกับระบบที่ตัวเองสร้างแค่ไหน  อย่างไรก็ตาม สำหรับทีมพัฒนาที่ใช้แนวทางเชิงคล่องแคล่ว ที่ไม่เน้นเอกสาร อย่างเช่นถ้าทำแบบ xp เท่าที่ผมอ่าน ๆ ดู เอกสารที่มีก็คงมีแค่ story card  ที่นี้การ implement แต่ละเรื่องราว อาจมีอิสระมากมายจนทำให้นักพัฒนาต้องมีความเข้าใจในระบบมากระดับหนึ่งจึงจะสามารถพัฒนาได้ถูกต้อง ผมคิดว่านี่คืออีกสาเหตุที่ทำให้กระบวนการพัฒนาเช่น xp ระบุว่าควรมีลูกค้าที่สามารถเข้าถึงได้ตลอดเวลา (อาจอยู่ที่เดียวกับทีมนักพัฒนาด้วย) ซึ่งผมก็ไม่รู้ว่าเป็นสิ่งที่ทำได้จริงในทางปฏิบัติมากน้อยแค่ไหน

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

Comment

Comment:

Tweet

เวลาทำงาน ส่วนใหญ่ที่ผมเจอก็คือ

ลูกค้า คาดหวังว่า เราจะมองสิ่งต่างๆ ได้มากกว่าที่ลูกค้าบอก ออกมา และนำไปเสนอเขาด้วย Budget และ Time ที่ยอมรับ

ประมาณ "ถ้าเอ็งไม่รู้ แล้วข้าจะเสียเงินจ้างเอ็งมาทำไม"

#3 By gomora on 2008-08-02 02:50

ขอบคุณมากครับสำหรับบทความ

ผมย้งไม่ค่อยมีประสบการณ์ด้านออกแบบ software แต่หลังๆ เริ่มรู้แล้วว่ามันสำคัญมากสำหรับ software engineer (อันนี้คิดเอง) เห็นด้วยอย่างยิ่งกับการทำตาม requirement ของลูกค้าก็พอ (แต่ที่ทำก็ต้องคุณภาพด้วย)

แต่ตอนนี้สงสัยนอกประเด็นว่า computer engineering ในไทย ตอนนี้ไปในทิศทางไหน
software engineering???

#2 By Tux-Linux (203.159.36.13) on 2008-08-02 01:09

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

#1 By plynoi แว่วศรี on 2008-08-02 00:25