จะอธิบายได้อย่างไรว่ามันยากที่จะประเมินเวลาที่จำเป็นสำหรับโครงการซอฟต์แวร์ขนาดใหญ่


37

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

ฉันจะอธิบายสิ่งนี้กับบุคคลที่ไม่ใช่นักพัฒนาซอฟต์แวร์ได้อย่างไร


5
อยากรู้อยากเห็น: ทำไมงานของคุณในฐานะนักพัฒนารุ่นน้องที่จะอธิบายเรื่องนี้กับผู้พัฒนาที่ไม่ใช่ซอฟต์แวร์? มีใครบางคนในกลุ่มงานหรือห่วงโซ่การจัดการของคุณที่สามารถช่วยคุณในการโน้มน้าวใจใครก็ตามที่คุณต้องการโน้มน้าวใจ?
Alex Feinman

@Alex: ไม่ไม่ใช่คนใน บริษัท เดียวกัน เป็นเพียงคนที่มีแนวคิดที่จะเริ่มต้น และฉันเป็นนักพัฒนาเพียงคนเดียวที่เขาติดต่อด้วย
Jonas



คำตอบ:


48

คุณสามารถขอให้เขา / เธอประเมินว่าจะใช้เวลานานเท่าไรในการเข้าถึงสถานที่ห่างไกลในมุมที่ไม่มีใครอยู่ของโลก เป็นตัวอย่างที่ดีที่สุดให้เลือกจุดสูงสุดที่รู้จักกันน้อยในเทือกเขาหิมาลัยที่มีคนน้อยมาก (ถ้ามี) ปีนขึ้นไปบน เธอจะต้องมีการเตรียมตัวมากมายและฝึกฝนก่อนที่จะเริ่มเดินทางรวมถึงใบอนุญาตซึ่งแต่ละใบสามารถเลื่อนการเดินทางเป็นเวลาหลายเดือนถึงหลายปี ... และทีมสนับสนุนที่ดี ... จากนั้นก็ขึ้นไปบนเนินเขา เธอจะต้องรอและสวดภาวนาเพื่อให้อากาศดีเริ่มปีนขึ้นไปสู่จุดสูงสุด ... ฯลฯ ฯลฯ สิ่งเหล่านี้ส่วนใหญ่ยากที่จะคาดเดาไม่ได้ถึงแม้จะเคยมีประสบการณ์มาก่อนก็ตาม

ประเด็นก็คือโครงการซอฟต์แวร์แต่ละโครงการมีลักษณะเหมือนการปีนเขาใหม่ที่ไม่มีใครเคยทำมาก่อนดังนั้นจึงไม่มีใครมีประสบการณ์ตรงมาก่อน นักพัฒนาเก๋าอาจได้รวบรวมประสบการณ์มากหรือน้อยคล้ายโครงการ แต่มีจะเป็นองค์ประกอบใหม่และความประหลาดใจ - มิฉะนั้นถ้าโครงการซอฟต์แวร์เป็นว่าเหมือนใครบางคนก่อนหน้านี้จะมีจุดอย่างที่ทำมันไม่มี


สิ่งที่ไม่รู้จักมากขึ้นหมายถึงความไม่แน่นอนมากขึ้น
surfasb

9
ลืมไปไกล ขอให้พวกเขาประมาณ - นาที - เมื่อพวกเขาจะกลับถึงบ้านจากที่ทำงานเย็นวันนี้ เกิดอะไรขึ้นถ้าการจราจรแตกต่างกันถ้าเกิดฝนตกจะเกิดอะไรขึ้นถ้าคุณได้รับโทรศัพท์ขณะขับรถ ฯลฯ ถ้ามีอะไรบางอย่างที่ธรรมดาและทำบ่อยเท่าที่ขับรถกลับบ้านไม่สามารถวัดได้อย่างแม่นยำในระดับใด เราคาดว่าจะสามารถประมาณเวลาที่ต้องใช้ในการพัฒนาซอฟต์แวร์ที่ซับซ้อนได้ดีกว่าซึ่งมีตัวแปรที่สำคัญมากมายนับไม่ถ้วนกว่าการทำงานที่บ้าน
quentin-starin

8
@qes ฉันใช้ระบบขนส่งสาธารณะดังนั้นฉันจึงบอกด้วยความแม่นยำประมาณ 10% เมื่อฉันจะมาถึงบ้าน - ฉันคิดว่าผู้จัดการโครงการ SW ส่วนใหญ่จะมีความสุขกับความสมถะในระดับนี้ ;-)
PéterTörök

1
เป้าหมายของโครงการซอฟต์แวร์ก็เปลี่ยนไปเช่นกันดังนั้นหลังจากที่พวกเขาประมาณเวลาที่พวกเขาต้องการ OP จะถามพวกเขาว่าพวกเขาจะตรงเวลาหรือเปล่าหลังจากที่มีคนบอกให้พวกเขาเปลี่ยนยอดเขาเมื่อพวกเขาครึ่งทางแรก
paul

18

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

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

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

ในฐานะนักพัฒนารุ่นเยาว์เริ่มติดตามการประมาณการและเวลาจริงในขณะนี้ คุณอาจสนใจอ่านเกี่ยวกับกระบวนการซอฟต์แวร์ส่วนบุคคลที่พัฒนาขึ้นที่สถาบันวิศวกรรมซอฟต์แวร์ หนังสือหลัก PSP มีวินัยสำหรับวิศวกรรมซอฟต์แวร์ , PSP: Process ตัวเองปรับปรุงซอฟแวร์สำหรับวิศวกรและรู้เบื้องต้นเกี่ยวกับกระบวนการซอฟแวร์ส่วนบุคคล ฉันเชื่อว่าบทนำสู่กระบวนการซอฟต์แวร์ส่วนบุคคลจะครอบคลุมหัวข้อที่คุณจะพบว่ามีประโยชน์มากที่สุด ฉันคิดว่ามันเกินความจริงสำหรับนักพัฒนาส่วนใหญ่ แต่ก็มีความคิดที่ดีและแนวปฏิบัติที่ดีที่สามารถดึงออกมาและใช้เพื่อปรับปรุงประสิทธิภาพการผลิตส่วนบุคคลและฝึกฝนทักษะต่าง ๆ (รวมถึงการประมาณ) ที่คุณจะใช้ในอาชีพของคุณอย่างต่อเนื่อง

หากคุณจะทำงานมากขึ้นในการประมาณค่าฉันขอแนะนำหนังสือสองเล่มของ Steve McConnell: การประเมินซอฟต์แวร์: เข้าใจอย่างลึกซึ้งศิลปะสีดำ (เน้นที่การประมาณค่าเป็นศิลปะและวิทยาศาสตร์) และการพัฒนาอย่างรวดเร็ว: ตารางซอฟต์แวร์ซอฟต์แวร์ที่ทำให้เชื่อง หัวข้อกระบวนการทางวิศวกรรมและการจัดการโครงการ)


7

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

ต้องอ่าน: http://en.wikipedia.org/wiki/The_Mythical_Man-Month

The Mythical Man-Month: บทความเกี่ยวกับวิศวกรรมซอฟต์แวร์เป็นหนังสือเกี่ยวกับวิศวกรรมซอฟต์แวร์และการจัดการโครงการโดย Fred Brooks ซึ่งเนื้อหาหลักคือ "การเพิ่มกำลังคนให้กับโครงการซอฟต์แวร์ที่ล่าช้าทำให้ในภายหลัง" ความคิดนี้เป็นที่รู้จักกันในนามกฎหมายของบรูกส์และนำเสนอพร้อมกับเอฟเฟกต์ระบบที่สองและการสนับสนุนการทำต้นแบบ

การสังเกตของ Brooks ขึ้นอยู่กับประสบการณ์ของเขาที่ IBM ในขณะที่จัดการการพัฒนา OS / 360 เขาได้เพิ่มโปรแกรมเมอร์เพิ่มเติมลงในโครงการที่อยู่เบื้องหลังกำหนดการตัดสินใจว่าเขาจะสรุปได้ในภายหลังโดยสังเขปว่าโครงการล่าช้ายิ่งขึ้น นอกจากนี้เขายังทำผิดพลาดในการยืนยันว่าโครงการหนึ่ง - การเขียนคอมไพเลอร์ ALGOL - จะต้องใช้เวลาหกเดือนโดยไม่คำนึงถึงจำนวนของพนักงานที่เกี่ยวข้อง (ต้องใช้อีกต่อไป) แนวโน้มสำหรับผู้จัดการที่จะทำซ้ำข้อผิดพลาดในการพัฒนาโครงการทำให้บรูกส์อ้างว่าหนังสือของเขาถูกเรียกว่า "The Bible of Software Engineering" เพราะ "ทุกคนพูดถึงมันบางคนอ่านมันและบางคนก็ผ่านมันไป" หนังสือเล่มนี้ได้รับการยกย่องอย่างกว้างขวางว่าคลาสสิกในองค์ประกอบของมนุษย์ของวิศวกรรมซอฟต์แวร์ ...


2

ค้นหาสิ่งที่พวกเขาวางแผนจะทำกับการประเมินนี้ ในใจพวกเขาต้องการทราบว่าจะใช้เวลาเป็นเดือนหรือเป็นปีและคุณพยายามรับชั่วโมงที่แน่นอน (Typical Engineer)

ดูว่าคุณสามารถทำงานกับชิ้นส่วนของโครงการแล้วรวมการประมาณการที่ดีกว่าถ้าจำเป็น

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


1

ฉันได้พบกับคนที่อ้างว่าสามารถประเมินซอฟต์แวร์ได้ แต่ฉันไม่รู้ว่าพวกเขาทำได้อย่างไร ไม่มีใครสามารถอธิบายได้ว่าพวกเขาทำได้อย่างไร

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

ฉันค้นหาหนังสือที่จะสอนวิธีประเมินซอฟต์แวร์มาหลายปีแล้ว แต่ยังหาไม่เจอ

สำหรับการอธิบายเรื่องนี้กับคนที่ไม่ได้เป็น coder คุณสามารถชี้ให้เห็นว่าไม่มีใครในอุตสาหกรรมที่สามารถตอบสนองการประมาณการของพวกเขาได้อย่างสม่ำเสมอ มันเกิดขึ้นตลอดเวลาที่ผลิตภัณฑ์ซอฟต์แวร์ใหม่มีการแจ้งล่วงหน้าเท่านั้นที่จะจัดส่งเป็นเดือนหรือเป็นปีหลังจากวันที่มีการประกาศครั้งแรก

หาก บริษัท ใหญ่ ๆ อย่าง Microsoft ไม่สามารถทราบได้ว่าจะประเมินเวลาที่ใช้ในการผลิตผลิตภัณฑ์ของตัวเองได้อย่างไรฉันจะทำอย่างไร

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


1
การประมาณค่าซอฟต์แวร์ของหนังสือของ Steve McConnell: การทำให้เข้าใจศาสตร์มืดเป็นเรื่องที่ดีมากในการอธิบายว่าวิศวกรซอฟต์แวร์ประมาณอย่างไร คุณสามารถเรียนรู้เทคนิคและเครื่องมือ แต่วิธีเดียวที่จะทำให้การประเมินดีขึ้นคือการประเมินอย่างต่อเนื่องเรียนรู้จากการประมาณของคุณและทำซ้ำ สำหรับองค์กรที่ไม่สามารถทำตามประมาณการได้มีองค์กรหลายองค์กรที่เข้ามาประเมินค่าของพวกเขาไม่กี่เปอร์เซ็นต์ - หนังสือของ McConnell พูดเกี่ยวกับองค์กร (มักเป็น CMMI ระดับ 4 หรือ 5 พร้อมการปรับปรุงอย่างต่อเนื่องและการติดตามอย่างละเอียด) เสมอต้นเสมอปลาย
โธมัสโอเวนส์

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


0

การประเมินเวลาทั้งหมดของโครงการมักดำเนินการโดยผู้จัดการโครงการไม่ใช่โปรแกรมเมอร์

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

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


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

0

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

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

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


1
วิศวกรรมซอฟต์แวร์ยังอายุน้อยกว่ามากในสาขาวิชาวิศวกรรมอื่น ๆ ที่อายุ 42 ปี อย่างไรก็ตามมีเทคนิคและเครื่องมือการประเมินจำนวนมาก Wideband delphi (พัฒนาขึ้นในปี 1970 ซึ่งเป็นที่นิยมโดย Barry Boehm's เศรษฐศาสตร์วิศวกรรมซอฟต์แวร์ในปี 1981), function points (1979), SEER-SEM (root ในทศวรรษที่ 1960), การประเมินค่า proxy-based (ใช้ใน PSP, พัฒนาในปี 1994 ที่ SEI) และ COCOMO (1981) และ COCOMO II (1997) ในสาขาที่มีอายุเพียง 42 ปีมีงานเกือบ 40 ปีในการประเมินโครงการ
โธมัสโอเวนส์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.