อะไรคือเศรษฐกิจเท็จที่เลวร้ายที่สุด (นั่นคือวิธีการประหยัดเงินที่มีราคาสูงกว่าการประหยัด) ในอุตสาหกรรมซอฟต์แวร์และคุณต่อสู้กับพวกเขาอย่างไร?
อะไรคือเศรษฐกิจเท็จที่เลวร้ายที่สุด (นั่นคือวิธีการประหยัดเงินที่มีราคาสูงกว่าการประหยัด) ในอุตสาหกรรมซอฟต์แวร์และคุณต่อสู้กับพวกเขาอย่างไร?
คำตอบ:
เช่น "เพียงแค่ทำอย่างรวดเร็วเราจะทำการปรับโครงสร้างภายหลัง" ประการแรกเพราะฉันยังไม่เห็นใครบางคนมีส่วนร่วมในพฤติกรรมนี้จริง refactor ในภายหลัง ประการที่สองเพราะทำสิ่งต่าง ๆ อย่างรวดเร็วแทนที่จะเป็นวิธีที่ดีทำให้ยากที่จะเพิ่มคุณสมบัติในอนาคตหรือแก้ไขข้อบกพร่องในอนาคตเพื่อให้คุณเสียเวลาในระยะยาว
น่าเศร้าที่หลายคนยังคิดว่ามันช่วยให้รอบนักพัฒนาซอฟต์แวร์สามารถทำสิ่งที่รวดเร็วได้ ฉันคิดว่ามันเป็นไปได้ แต่ฉันยังไม่เห็นมันในทางปฏิบัติ
จ้างนักพัฒนา2 คนราคาถูกแทนที่จะเป็น1ที่ยอดเยี่ยมจริงๆ (สำหรับราคาเดียวกัน)
ตัวอย่างของฉันจะตรงข้ามกับตัวอย่างของ NimChimpskyกล่าวคือ:
พยายามพัฒนาสิ่งที่อยู่ภายในบ้านที่สามารถหาซื้อได้จากชั้นวาง
โดยปกติสิ่งนี้เกิดขึ้นเนื่องจากความล้มเหลวในการตรวจสอบตลาดเพื่อดูว่ามีบางสิ่งที่มีอยู่แล้วซึ่งจะช่วยแก้ปัญหาได้ สิ่งนี้สามารถทบต้นได้โดยนักพัฒนาซอฟต์แวร์ที่ต้องการ "ดำน้ำใน" การเขียนโค้ดก่อนทำการวิจัยใด ๆ และโดยผู้จัดการโครงการที่ไม่คำนึงถึงปัจจัยในเวลานั้น = เงิน
หนึ่งในตัวอย่างที่พบบ่อยที่สุดที่ฉันเคยเห็นในสาขาการพัฒนาเว็บคือ บริษัท ที่พยายามพัฒนาและระบบ CMS ภายในองค์กร สิ่งเหล่านี้จะเริ่มต้นอย่างไม่หยุดหย่อน แต่ในไม่ช้าจะได้รับการควบคุมและออกนอกลู่นอกทางเมื่อคุณสมบัติถูกปิดขณะที่ทุกครั้งที่มีผลิตภัณฑ์และกรอบการทำงานฟรีมากมายที่จะเหมาะสมกว่า
ไม่มีทรัพยากรเฉพาะสำหรับการจัดการโครงการ
ฉันเคยมีประสบการณ์หลายครั้งเมื่อโปรแกรมเมอร์ไม่กี่คนที่ทำสัญญาและคนที่มีงานประจำวันที่มีความต้องการควรมีการจัดการโครงการ แต่ที่จริงแล้วงานยุ่งเกินไปกับงานอื่น ๆ ดังนั้นโครงการจึงไม่ได้รับแรงกระตุ้นจริงๆ โปรแกรมเมอร์สร้าง "ต้นแบบ" และสิ่งของ แต่ไม่มีผู้นำส่วนใหญ่ทำงานเป็นวงกลมเพื่อดูยุ่ง
อุปกรณ์ไม่ดีสำหรับโปรแกรมเมอร์ใหม่
ฉันเคยมีประสบการณ์กับ บริษัท ที่มีนโยบายคือ "โปรแกรมเมอร์คนใหม่ต้องทำงานบนพีซีเก่าที่มีหน้าจอเล็ก ๆ จนกว่าพวกเขาจะพิสูจน์ว่าพวกเขาสมควร" ไม่แปลกใจเลยที่นโยบายดังกล่าวก่อให้เกิดการเลือกเชิงลบที่ผลักไสคนดีที่มักจะมีทางเลือกให้ทำงานในสภาพแวดล้อมที่มีสติมากขึ้น
เราสามารถประหยัดเงินได้โดยให้โปรแกรมเมอร์เป็นสองเท่าในฐานะผู้ทดสอบ / นักเขียนด้านเทคนิค
หากคุณกำลังจ่ายเงินเดือนโปรแกรมเมอร์สำหรับงานทดสอบ / นักเขียนทางเทคนิคแล้วคุณจะสูญเสียเงินและมีแนวโน้มที่จะได้งานที่มีคุณภาพต่ำกว่าคนที่ได้ทุ่มเทอาชีพของพวกเขาเพื่องานนั้น นอกจากนี้เมื่อโปรแกรมเมอร์หยุดทำงานกับการทดสอบกำหนดเวลาที่แน่นหนาและเอกสารประกอบมีแนวโน้มที่จะทำหล่นหรือทำครึ่งตูดเพื่อให้ตรงกับมัน
BTW: นักพัฒนาอยู่เสมอกับเส้นตายที่แน่น
การวิจัย / การอ่าน / การเขียนรหัสที่ไม่เกี่ยวข้องกับการพัฒนาผลิตภัณฑ์เป็นการสิ้นเปลืองทรัพยากร
โปรแกรมเมอร์บางคนและผู้จัดการก็เชื่อในเรื่องนั้น โดยปกติพวกเขาจะเขียนโปรแกรมตามความรู้ในหัวของพวกเขาและทำการวิจัยและค้นหาคำตอบเมื่อพวกเขาประสบปัญหา พวกเขาไม่พัฒนาความรู้อย่างต่อเนื่องเชิงรุก ความคิดเห็นของฉันเราควรรักษาตัวเองให้ทันสมัยอยู่เสมอและความรู้ที่เรารวบรวมไว้จะเป็นประโยชน์สำหรับเราในการแก้ปัญหาที่มีอยู่และในอนาคต แน่นอนคุณต้องจัดสรรเวลาของคุณอย่างชาญฉลาด
นอกจากนี้ยังมีความคล้ายคลึงกับคำตอบของแดน ผู้จัดการบางคนเพียงต้องการให้นักพัฒนาดำน้ำอย่างรวดเร็วและพัฒนาผลิตภัณฑ์ตามความต้องการโดยไม่ต้องค้นคว้าเกี่ยวกับผลิตภัณฑ์ที่มีอยู่ในตลาด
ในหลายกรณีค่าใช้จ่ายในต่างประเทศเงินมากขึ้น ใน บริษัท ของฉันมันยากมากที่จะได้รับช่องพนักงานใหม่เราถูกผลักดันอย่างหนักเพื่อเอาท์ซอร์ส มันยากที่จะหาผู้รับเหมาในสถานที่ มีอัตราส่วน 3: 1 นอกชายฝั่งต่อฝั่งพวกเขาควรจะรักษา ดังนั้นหลายทีมก็จ้างคนต่างชาติเพียงโหลเดียวและใช้พวกมันแทบทั้งหมด
ข้อเสนอแนะยาวลูป!
มันเกิดขึ้นกับทุกคน: คุณสร้างสิ่งที่คุณคิดว่ายอดเยี่ยมและมันกลับกลายเป็นว่าคุณคิดผิด นั่นไม่ใช่ปัญหา ปัญหาคือระยะเวลาที่คุณใช้สร้างก่อนที่จะพบว่าคุณควรหยุด
ในระดับสูงคุณจะเห็นปัญหานี้กับรอบการเปิดตัวนาน หากคุณสร้างเป็นเวลาหนึ่งปีโดยไม่มีคำติชมแสดงว่าคุณกำลังเล่นการพนันตลอดทั้งปี ยิ่งคุณปล่อยมือให้บ่อยเท่าไหร่การพนันของคุณก็จะยิ่งเล็กลงเท่านั้น
แต่มันก็เกิดขึ้นที่ระดับต่ำสุด ในฐานะนักพัฒนาซอฟต์แวร์ฉันชอบรีวิวโค้ดบ่อย ๆ (หรือดีกว่าการเขียนโปรแกรมจับคู่) เพราะมัน จำกัด ระยะเวลาที่ฉันสามารถทำสิ่งที่เป็นใบ้ต่อไปก่อนที่ใครบางคนจะพูดว่า "เฮ้มีวิธีที่ง่ายกว่า!" ด้วยเหตุผลเดียวกันฉันต้องการให้หน่วยทดสอบของฉันทำงานได้อย่างรวดเร็วและบ่อยครั้งดังนั้นฉันจึงสามารถจับและฆ่าแมลงก่อนที่มันจะโต
เมื่อคุณเริ่มสังเกตเห็นความสำคัญของลูปป้อนกลับสั้น ๆ คุณจะเห็นมันทุกที่ เช่นความคิดทางทหารของวง OODA
ไม่ใช่เรื่องเล็ก ๆ น้อย ๆ ของฉัน แต่ฉันเคยได้ยินร้านที่หยุดให้กาแฟฟรีแก่นักพัฒนาบอกกับพวกเขาแทนว่าเมื่อใดก็ตามที่พวกเขาต้องการรับกาแฟพวกเขามีอิสระที่จะเดินไปที่ร้านกาแฟที่ใกล้ที่สุด (ประมาณสิบนาที) เดินทางในแต่ละทาง) และซื้อบางอย่าง
คำจำกัดความของเศรษฐกิจที่ผิด ๆ
ให้เวิร์คสเตชั่หน้าจอเดียวเพราะจอที่สองมีราคาแพงเกินไป แม้ว่ามันจะช่วยให้คุณประหยัดเวลาในการทำงานในแต่ละปีเพียงชั่วโมงเดียวหน้าจอที่สองก็ยังเป็นการลงทุนที่ดี ฉันรู้แน่ว่าเหมืองของฉันช่วยฉันทำงานหลายชั่วโมง
การตั้งค่าหลายจอภาพสามารถทำให้งานใด ๆ มีประสิทธิภาพมากขึ้นไม่เพียง แต่งานพัฒนาเท่านั้น จอภาพสามจอดียิ่งกว่าสองจอ แต่เอฟเฟกต์เด่นชัดน้อยลงทุกหน้าจอพิเศษ
การตั้งค่าหลายจอภาพ:
ฮาร์ดแวร์ที่ถูกที่สุดให้กับที่ปรึกษาเมื่อที่ปรึกษาค่าใช้จ่ายมากกว่า$ 150
การใช้ฮาร์ดแวร์อย่างดีกว่าอาจทำให้งานมีประสิทธิภาพมากขึ้น 30 นาทีต่อวัน นั่นจะให้ 30 นาที * 20 วันทำงานต่อเดือน = 600 นาที / เดือน = 10 ชั่วโมง / เดือน> มากกว่านั้น 1 วันงาน = 10 ชั่วโมง * 150 $ / ชั่วโมง = 1500 $
ตอนนี้ที่ปรึกษาจะไม่ทำงานมีประสิทธิภาพมากขึ้นถ้าเขา / เธอมีคอมพิวเตอร์ราคา 1,500 เหรียญ? มันจะทำให้ที่ปรึกษาระคายเคืองน้อยลงหรือไม่
ตอนนี้ปัญหาดูเหมือนว่าจะมีสองงบประมาณหนึ่งสำหรับที่ปรึกษาและหนึ่งสำหรับฮาร์ดแวร์พีซี
หลายเดือนในการทำงานช่วยประหยัดเวลาในการวางแผน
(ไม่ได้มีเวลามากพอในการวางแผน)
ส่วนใหญ่ที่ฉันสงสัยว่าเป็นผู้จัดการก็ไม่ได้ให้เครื่องมือที่พวกเขาต้องการในการทำงานอย่างมีประสิทธิภาพ
"โยนวัตถุ (พอ) ที่เป็นปัญหา"ยังคงสามารถใช้งานได้ในบางสถานที่โชคไม่ดี กฎหมายของบรู๊คไม่ตอบโต้เรื่องนี้จากThe Mythical Man-Monthแม้ว่าบางคนอาจต้องการประสบการณ์เพื่อเรียนรู้บทเรียนนี้ โดยทั่วไปนี่ไม่ใช่สิ่งที่ฉันต้องหยุดเพราะฝ่ายบริหารอาจเชื่อว่าข้อความเท็จเกี่ยวกับการเพิ่มผู้คนและไม่ต้องจ่ายราคา
การประชุมทุกวัน :
(meeting duration in hours) x (Y team members) x (average salary per hour) = ...
ซื้อซอฟต์แวร์ชั้นวางแทนการพัฒนาภายใน
ฉันมีประสบการณ์เกี่ยวกับระบบการจัดการระดับเอนเตอร์ไพรส์ที่เน้นทั้งทรัพยากรบุคคลและห้องปฏิบัติการทางชีวภาพ
โซลูชันสำหรับชั้นวางราคา 50-100,000 ปอนด์และต้องการการพัฒนาและปรับแต่งเพิ่มเติมเพื่อตอบสนองความต้องการทางธุรกิจ
โซลูชันที่พัฒนาขึ้นภายในใช้เวลา (<6) เดือนในการพัฒนาโดยมีโครงการอื่น ๆ ทำงานคู่ขนานกันและใช้นักพัฒนาที่มีงานทำอยู่แล้ว
ฉันไปจากภาครัฐที่เรามี LIMS (ระบบการจัดการข้อมูลห้องปฏิบัติการ) ที่พัฒนาขึ้นภายในและเปิดใช้งานไปยังเวชภัณฑ์ระหว่างประเทศขนาดใหญ่ที่การดำเนินการแก้ปัญหาชั้นวางได้ใช้เวลานานกว่าหนึ่งปี
(6 เดือนของนักพัฒนาที่ได้รับการว่าจ้างแล้วทำงานในโครงการอื่น ๆ ในแบบคู่ขนานดังนั้น ~ 10k และนั่นไม่รวมค่าใช้จ่ายในการสนับสนุนที่เกี่ยวข้องกับโซลูชันการเก็บรักษาแบบปิด) ประเด็นหลักคือระบบที่ถูกพัฒนาขึ้นภายในนั้นถูกนำมาใช้จริง! ดังนั้นคุณมีผลประโยชน์ต้นทุนเพิ่มเติมที่เกี่ยวข้องกับสิ่งนั้นซึ่งฉันไม่สามารถคำนวณได้
ฉันเห็นด้วยกับเว็บไซต์พื้นฐาน ฯลฯ ทำไมต้องกังวลกับการพัฒนาเว็บไซต์ของคุณเอง แต่สำหรับระบบที่ซับซ้อนใด ๆ ที่มีขนาดใหญ่และถ้าคุณมีอยู่แล้วในทักษะการบ้านผมสร้างมันเอง
ซื้อสินค้าราคาแพงเมื่อสินค้าทางเลือกโอเพนซอร์สดีกว่าและฟรี
มีกี่ บริษัท ที่ใช้คอมไพล์ มีกี่ บริษัท ที่ใช้การควบคุมเวอร์ชัน enterprisey เส็งเคร็ง?
ใช่มันทำให้ง่ายต่อการค้นหาโปรแกรมเมอร์เพื่อรักษารหัส แต่มันทำให้มันยากที่จะหาโปรแกรมเมอร์ที่ดีที่ไม่เพียงแค่เรียนรู้คำศัพท์ล่าสุดที่จะจ้างพวกเขา ใช่มันทำให้แต่ละรหัสบิตเข้าใจง่ายขึ้น แต่มันก็ทำให้มันเข้มงวดเหมือน 2x4 และเพิ่มปริมาณของรหัสที่ต้องเข้าใจ ใช่มันได้รับการสนับสนุนโดย บริษัท ขนาดใหญ่ แต่บอกว่า บริษัท ขนาดใหญ่จะสร้างนวัตกรรมอย่างช้า ๆ และมีระบบราชการ
ผู้จัดการโครงการ / หัวหน้าทีมไม่ดี
เนื่องจากบุคคลไร้ความสามารถมีอำนาจทำลายงานของกลุ่มคนได้ ในท้ายที่สุดโครงการจะทำได้ดีขึ้นมากหากไม่มีการตัดสินใจระดับสูง (การบริหารโครงการ / นำทีม)
ปริมาณ "เพียงแค่ทำอย่างรวดเร็วเราจะ refactor ในภายหลัง" ตัดสินใจ
ไม่มีข้อกำหนดของผู้ใช้
ขั้นตอนที่สำคัญและยากในการออกแบบผลิตภัณฑ์ซอฟต์แวร์คือการพิจารณาว่าลูกค้าต้องการทำอะไร
เชื่อหรือไม่ว่าบางครั้งส่วนนี้ขาดหายไปหรือล้าสมัย สิ่งที่ต้องคำนึงถึงคือราคาหนึ่งสร้างฟังก์ชันการทำงานที่ผู้ใช้ไม่เคยถาม
ผลผลิตมีค่ามากกว่าความคิดสร้างสรรค์
ความคิดสร้างสรรค์นั้นยากที่จะวัดโดยทั่วไปและเป็นไปไม่ได้แม้แต่ที่จะสังเกตและไม่เคยวัดเลยเมื่อพูดถึงการพัฒนาซอฟต์แวร์ ในทางกลับกันผลผลิตสามารถวัดได้ (มักจะไม่ดี) และสามารถสังเกตได้
เป็นผลให้นักพัฒนาที่สามารถ (เขียนโค้ดเพิ่มเติม | เขียนโค้ดได้เร็วขึ้น | ท่องเทคโนบุ๊กเร็วขึ้นเพื่อตอบคำถาม | มีประสิทธิผลมากขึ้นอย่างเห็นได้ชัด) มีแนวโน้มที่จะมีค่ามากกว่าที่ (ใช้โค้ดน้อยลงเพื่อแก้ปัญหาเดียวกัน ใช้เวลานานในการเขียนโค้ด แต่ผลิตผลิตภัณฑ์ที่เชื่อถือได้มากกว่า | เข้าใจหัวข้อที่ดีพอที่จะตอบคำถามในแบบธรรมดาเข้าใจง่ายอังกฤษ | แก้ปัญหาอย่างสร้างสรรค์)
ด้านล่างทั้งหมดอาจไม่ดีเมื่อใช้หรือไม่ได้ใช้อย่างไม่เหมาะสม
ซอฟต์แวร์ภายนอกและภายใน
การปฏิบัติตาม ISO 9001 (เศรษฐกิจ - ลดความเสี่ยงจากการสูญเสีย MSS หากคุณภาพของผลิตภัณฑ์ลดลง)
การพัฒนา / QA outsourcing
ขั้นตอนการพัฒนา / สร้าง / เผยแพร่ / สนับสนุน
มีผู้จัดการการจัดส่งที่ไม่สามารถเรียกเก็บเงินได้มากเกินไป
สองสามปีที่ผ่านมาใน บริษัท ของเราเรามีโครงการขนาดใหญ่หลายโครงการที่เกิดขึ้นและการสรรหาบุคลากรอยู่ในระดับสูงสุด ในเวลานั้น บริษัท ของเราจ้างผู้จัดการการจัดส่งมากเกินไป (หลายคนไม่ใช่ IT!) และผู้เขียน / ทดสอบจำนวนน้อยมาก อัตราส่วนผู้จัดการต่อโปรแกรมเมอร์เท่ากับ 1: 2 ต่อมาหลังจากเสร็จสิ้นโครงการเหล่านั้นเรามีสถานการณ์ที่เรามีผู้จัดการเหล่านี้หลายคน (บางคนเป็นคนหย่อนยาน) นั่งอยู่บนม้านั่งที่ไม่ทำอะไรเลย เรามีรอบการประเมินหนึ่งรอบที่ทุกคนได้รับการเลี้ยงดูน้อย / ไม่มีเลย (แม้แต่พวกเราที่ทำงานหนักโปรแกรมเมอร์ถอนหายใจ) เพื่อให้ บริษัท ไม่ต้องเลิกจ้างใคร! โชคดีที่ บริษัท ตระหนักถึงสถานการณ์นี้และได้ทำสิทธิในไตรมาสแรกของปีนี้!
การเพิ่มประสิทธิภาพก่อนการทำโปรไฟล์ (aka การปรับให้เหมาะสมก่อนกำหนด)
มีหลายครั้งที่ฉันเคยเห็นคนเข้าถึงโซลูชันที่ชาญฉลาดซึ่งทำให้การบำรุงรักษาและการอ่านง่ายขึ้นโดยไม่จำเป็น ตามปกติแล้วรหัสไม่ได้ถูกทำเครื่องหมายไว้ (ไม่ใช่แม้แต่กับมาตรฐานขนาดเล็ก) ดังนั้นมันจึงกลายเป็น "เร็วขึ้นตามอาร์กิวเมนต์ที่โน้มน้าวใจมากขึ้น" ในส่วนของรหัสที่น่าจะไม่ส่งผลกระทบต่อประสิทธิภาพโดยรวมของทั้ง แอพลิเคชันโดยมาก
เช่นนี้มันเป็นเศรษฐกิจที่ผิดพลาดมากและเศรษฐกิจแบบผิด ๆ ที่เข้ามาเกี่ยวข้องเป็นครั้งคราวแม้กระทั่งมืออาชีพที่มีประสบการณ์
อินเทอร์เน็ตมีจำนวน จำกัด หรือไม่มีเลย
เพราะเห็นได้ชัดว่าพนักงานของคุณจะใช้อินเทอร์เน็ตเพื่อเล่นเกมเฟสบุ๊คโดยไม่ต้องค้นคว้าคำตอบสำหรับคำถามทางเทคนิคเกี่ยวกับ Stackoverflow
ในความเป็นจริงแน่นอนว่าอินเทอร์เน็ตเป็นตัวช่วยเพิ่มประสิทธิภาพการทำงานอย่างมากและในขณะที่มันอาจจะเหมาะสมที่จะใช้ตัวกรองไซต์สำหรับเว็บไซต์หลบอย่างแท้จริงมีบางอย่างผิดปกติหากมีการปิดกั้นไฟล์ readme สตูดิโอเสมือน "การท่องเที่ยวทางเพศ"
การทำให้นักพัฒนาของคุณใช้จอภาพขนาด 15 นิ้วและพีซีที่มีสเป็คต่ำเนื่องจากเป็นมาตรฐานขององค์กร
จอภาพขนาดที่เหมาะสมมีราคาถูกติดตั้งและทำให้โปรแกรมเมอร์มีประสิทธิภาพมากขึ้นรวมถึงทำให้โปรแกรมเมอร์ของคุณคิดว่าคุณใส่ใจพวกเขา
ปริญญาตรีบริหารธุรกิจมากเกินไป (หรือชอบ) จัดลำดับชั้นที่พยายามใช้สิ่งที่พวกเขาคิดว่าการจัดการที่ทันสมัยเป็นเรื่องเกี่ยวกับ: รบกวนคนที่มี "KPI", "SLA" และสิ่งที่ไม่ต้องการ "รายงาน" (โดยไม่ต้อง แน่นอนว่าการดูแลโครงสร้างพื้นฐานเพื่อสร้างพวกมัน) เพื่อให้โปรแกรมเมอร์เสียเวลาในการกรอกข้อมูลลงในแผ่นงาน EXCEL แฟนซีรายงานไตรมาสที่ 4 และสิ่งที่ไม่คัดลอกจากเครื่องมือการจัดการใหม่ที่ยอดเยี่ยมและวางลงในอีกอันหนึ่ง เครื่องมือเหล่านี้จะไม่ถูกผนวกรวมเข้าด้วยกันและเข้าร่วมการประชุมที่มีการนำเสนอรายงานและตัวเลข (และทุกคนมีความรู้สึกผิดเกี่ยวกับการล้มเหลวในการกรอกข้อมูลนี้หรือ KPI นั้น)