ศิลปะแห่งสงครามประยุกต์กับการพัฒนาซอฟต์แวร์
เผยแพร่แล้ว: 2022-03-11หากคุณทำงานในอุตสาหกรรมซอฟต์แวร์ มีแนวโน้มว่าคุณจะเคยได้ยินเกี่ยวกับการ แบ่งและพิชิต กระบวนทัศน์การออกแบบ ซึ่งโดยพื้นฐานแล้วประกอบด้วยการแบ่งปัญหาแบบเรียกซ้ำออกเป็นสองปัญหาย่อยขึ้นไป ( หาร ) จนกระทั่งสิ่งเหล่านี้กลายง่ายพอที่จะแก้ไขโดยตรง ( พิชิต ).
สิ่งที่คุณอาจไม่รู้ก็คือกระบวนทัศน์นี้มีต้นกำเนิดมาจากกลยุทธ์ทางการเมืองแบบเก่า (ชื่อนี้มาจากภาษาละตินว่า divide et impera ) ซึ่งแนะนำว่าเป็นไปได้ที่จะรักษาการควบคุมผู้ใต้บังคับบัญชาหรือวิชาของตนโดยส่งเสริมความขัดแย้งระหว่างพวกเขา
กลยุทธ์นี้ถูกใช้โดยนักการเมืองและผู้นำทางทหารนับไม่ถ้วนตลอดประวัติศาสตร์ เช่น Julius Caesar (ซึ่งใช้ระหว่างสงคราม Gallic เพื่อเอาชนะกอลที่เข้มแข็งทางทหาร) และนโปเลียน (ผู้เชี่ยวชาญด้านปืนใหญ่ของฝรั่งเศสจะแบ่งกองกำลังศัตรูเพื่อไม่ให้ส่วนใดแข็งแกร่งขึ้น มากกว่ากองทหารของเขา แล้วขัดขวางการสื่อสารของพวกเขา ขัดขวางความพยายามของศัตรูในการประสานงานและดำเนินการโจมตี)
The Art Of War: หลักการโบราณที่ใช้กับการพัฒนา
อย่างไรก็ตาม กฎการ แบ่งแยกและพิชิต ไม่ใช่กลยุทธ์ทางการเมืองเพียงอย่างเดียวที่สามารถนำไปใช้กับการพัฒนาซอฟต์แวร์ได้ แม้ว่าการเมืองและสงครามจะไม่ค่อยเกี่ยวข้องกับการพัฒนาซอฟต์แวร์ เช่นเดียวกับนักการเมืองและนายพล นักพัฒนาจะต้องเป็นผู้นำผู้ใต้บังคับบัญชา ประสานงานความพยายามระหว่างทีม ค้นหากลยุทธ์ที่ดีที่สุดในการแก้ไขปัญหา และจัดการทรัพยากร
Art of War เป็นบทความทางการทหารโบราณที่เขียนขึ้นในศตวรรษที่ 5 ก่อนคริสต์ศักราช และมาจากซุนวู ซึ่งเป็นนักยุทธศาสตร์ทางการทหารของจีนโบราณ ซึ่งทฤษฎีดังกล่าวมีอิทธิพลอย่างลึกซึ้งต่อปรัชญาทั้งตะวันออกและตะวันตก
แม้จะอายุมากแล้ว แต่เนื้อหาก็ยังรวมอยู่ในหลักสูตรของโรงเรียนทหารหลายแห่งในเอเชียตะวันออก และอยู่ในรายการแนะนำให้อ่านในโรงเรียนการทหารทางตะวันตก ข้อความนี้แบ่งออกเป็น 13 บท โดยแต่ละบทอุทิศให้กับแง่มุมต่าง ๆ ของการทำสงคราม
อย่างไรก็ตาม นอกจากการทำสงครามแล้ว หลักการและคำสอนของซุนวูยังนำไปใช้ได้จริงในด้านการเมือง ธุรกิจ กีฬา และการพัฒนาซอฟต์แวร์ เชื่อหรือไม่ ที่จริงแล้ว คุณอาจแค่นำหลักการเหล่านี้ไปใช้กับกิจวัตรประจำวันของคุณโดยที่ไม่รู้ที่มาที่ไปด้วยซ้ำ
รายละเอียดด้านล่าง คุณจะพบรายการสั้น ๆ ของกลวิธีพื้นฐานและคำแนะนำที่อธิบายไว้ใน Art of War สิ่งเหล่านี้สามารถนำไปใช้กับงานของคุณในอุตสาหกรรมซอฟต์แวร์หรืออุตสาหกรรมอื่นๆ ได้
เวลาเป็นสิ่งสำคัญในทุกแคมเปญ
บทที่ II วรรค 2
เมื่อคุณเข้าร่วมการต่อสู้จริง หากชัยชนะนั้นยังอีกยาวไกล อาวุธของผู้ชายก็จะดูหม่นหมองและความกระตือรือร้นของพวกเขาจะลดลง
หลักการนี้สามารถนำไปใช้กับการพัฒนาซอฟต์แวร์ ตามกฎที่อธิบายความสัมพันธ์ระหว่างระยะเวลาของวงจรการพัฒนาและขวัญกำลังใจของนักพัฒนา
หากกลุ่มนักพัฒนาทำงานในโครงการเดียวกันเป็นเวลาหลายเดือนโดยไม่มีเป้าหมายหรือจุดจบที่ชัดเจน พวกเขาอาจจะหงุดหงิดและประสิทธิภาพการทำงานลดลง
การพัฒนาซอฟต์แวร์เป็นความพยายามทางปัญญา ดังนั้นแรงจูงใจจึงเป็นเชื้อเพลิงหลักในการผลิต การทำงานทุกวันโดยไม่รับรู้ว่างานของคุณให้ผลลัพธ์ที่แท้จริงนั้นอาจทำให้เสียสมาธิได้มาก
ตามที่ระบุไว้ในวิธีการแบบเปรียวบางวิธี แผนงานการพัฒนาควรแบ่งออกเป็นหลายเป้าหมายและเหตุการณ์สำคัญ ซึ่งทีมอาจทำได้สำเร็จในกรอบเวลาอันสั้น และพวกเขาจะให้ความรู้สึกถึงความก้าวหน้าและความสำเร็จ
บทที่ II วรรค 18
ในสงคราม ให้สิ่งที่ยิ่งใหญ่ของคุณเป็นชัยชนะ ไม่ใช่แคมเปญที่ยาวนาน
วลีนี้สามารถตีความได้สองวิธี:
ประการแรก มันสามารถถูกมองว่าเป็นบรรพบุรุษของปรัชญา UNIX: เขียนโปรแกรมที่ทำสิ่งเดียวและทำได้ดี เมื่อพัฒนาซอฟต์แวร์ คุณต้องคำนึงถึงวัตถุประสงค์หลักของโปรแกรมเสมอ คุณลักษณะหลักที่มีให้ หรือปัญหาที่ใหญ่ที่สุดที่จะแก้ไข และให้แน่ใจว่ามีการใช้งานอย่างเหมาะสม
บางครั้งคุณอาจได้รับแรงบันดาลใจและนึกถึงคุณลักษณะที่ยอดเยี่ยมจริงๆ ที่จะเพิ่ม แต่อย่าลืมว่าแอปพลิเคชันที่มีคุณลักษณะที่ใช้ไม่บ่อยนักจะมีชื่อที่ดูหมิ่น: bloatware
ประการที่สอง คำกล่าวนี้อาจถือเป็นสารตั้งต้นสำหรับหลักการพัฒนาซอฟต์แวร์แบบลีนข้อใดข้อหนึ่ง: ส่งมอบให้เร็วที่สุด
ยิ่งคุณส่งมอบซอฟต์แวร์โดยปราศจากข้อบกพร่องที่สำคัญได้เร็วเท่าใด คุณก็จะได้รับคำติชมจากลูกค้าได้เร็วเท่านั้น และคุณจะสามารถรวมการเปลี่ยนแปลงในการทำซ้ำครั้งต่อไปได้
ในทางกลับกัน หากคุณส่งมอบซอฟต์แวร์ที่ไม่ทำงาน คุณจะพลาดข้อเสนอแนะอันมีค่า เนื่องจากลูกค้าจะไม่มีโอกาสทดสอบซอฟต์แวร์อย่างถูกต้อง ซึ่งจะทำให้ขั้นตอนต่อไปของการพัฒนายากขึ้นหรือเป็นไปไม่ได้ในสถานการณ์ที่การทำซ้ำครั้งต่อไปของคุณขึ้นอยู่กับความคิดเห็นของลูกค้า
ไม่มีความเป็นผู้นำ ไม่มีผลลัพธ์
บทที่ III วรรค 11
ตอนนี้นายพลเป็นป้อมปราการของรัฐ ถ้าป้อมยามสมบูรณ์ทุกจุด รัฐก็จะเข้มแข็ง ถ้าป้อมปราการชำรุด รัฐก็จะอ่อนแอ
ข้อความอ้างอิงนี้อธิบายถึงความสำคัญของบทบาทของผู้จัดการในทีมพัฒนา: ความสำเร็จของโครงการขึ้นอยู่กับความแข็งแกร่งของ ทุกคนที่ เกี่ยวข้อง และผู้จัดการคือป้อมปราการของโครงการ ความรับผิดชอบเริ่มต้นที่ด้านบน
แม้ว่านักพัฒนามักจะทำงานคนเดียว (แต่ละคนนั่งอยู่หลังคอมพิวเตอร์ โดยมีการสื่อสารที่จำกัดกับเพื่อนร่วมงาน) แต่ก็ไม่ได้หมายความว่าพวกเขาไม่ต้องการความเป็นผู้นำที่ดี ผู้จัดการโครงการมีหน้าที่ดูแลให้ทีมทำงานตามแผน รับรองการสื่อสารที่มีประสิทธิภาพและการระงับข้อพิพาท และเห็นได้ชัดว่าผู้นำจะกำหนดลำดับความสำคัญของโครงการ (นอกเหนือจากงานอื่น ๆ ) ดังนั้นบทบาทของพวกเขาจึงไม่ควรถูกมองข้าม ไม่ควรรับผิดชอบหากมีสิ่งผิดปกติเกิดขึ้น ลองนึกภาพว่าจะเกิดอะไรขึ้นกับผู้นำทางทหารที่หน่วยล้มเหลวในการปฏิบัติหน้าที่ในสนามรบ?
ทีมสามารถผลิตซอฟต์แวร์ที่ยอดเยี่ยมได้แม้ว่าจะมีแอปเปิ้ลที่ไม่ดีสองสามตัวอยู่ในตำแหน่งการพัฒนา แต่ก็ไม่น่าจะเกิดขึ้นได้หาก ผู้จัดการโครงการเป็นแอปเปิ้ลที่ไม่ดี ไม่ว่าทีมจะมีนักพัฒนา rockstar มากแค่ไหนก็ตาม
บทที่ VI วรรค 28
อย่าใช้กลอุบายซ้ำๆ ซึ่งทำให้คุณได้รับชัยชนะ แต่ให้วิธีการของคุณถูกควบคุมโดยสถานการณ์ที่หลากหลายไม่รู้จบ
บางครั้ง เมื่อเริ่มต้นโครงการ เรามักจะพยายามใช้เทคโนโลยีชุดเดียวกันกับที่เราเคยใช้ในโครงการที่ประสบความสำเร็จก่อนหน้านี้ (ภาษาการเขียนโปรแกรมเดียวกัน ไลบรารีเดียวกัน เซิร์ฟเวอร์เดียวกัน ฯลฯ) อย่างไรก็ตาม เว้นแต่ข้อกำหนดของโครงการใหม่จะ เหมือนกับ โครงการก่อนหน้าทุกประการ นี่อาจเป็นแนวทางที่ผิด
ในการเขียนโปรแกรม เช่นเดียวกับในโดเมนส่วนใหญ่ ยาครอบจักรวาล (ยาที่ควรจะเป็นที่สามารถรักษาโรคได้ทั้งหมด) ไม่มีอยู่จริง ไม่มีการผสมผสานเทคโนโลยีใดที่คุณสามารถใช้แก้ปัญหาทั้งหมดได้ แต่ละเทคโนโลยีมีข้อดีและข้อเสีย
แน่นอน การเรียนรู้ภาษาการเขียนโปรแกรมใหม่หรือใช้ API ที่ไม่รู้จักในตอนแรกอาจมีราคาแพง แต่ในระยะยาว คุณภาพของซอฟต์แวร์จะเหนือกว่า และคุณจะกลายเป็นนักพัฒนาที่ดีขึ้น
บทที่ XIII วรรค 27
ดังนั้นจึงเป็นเพียงผู้ปกครองที่รู้แจ้งและแม่ทัพที่ฉลาดเท่านั้นที่จะใช้สติปัญญาสูงสุดของกองทัพเพื่อจุดประสงค์ในการสอดแนม และด้วยเหตุนี้พวกเขาจึงบรรลุผลที่ยอดเยี่ยม สายลับเป็นองค์ประกอบที่สำคัญที่สุดในสงคราม เพราะขึ้นอยู่กับความสามารถของกองทัพในการเคลื่อนที่
วลีนี้อาจถูกตีความว่าเป็นความสำคัญของการใช้เครื่องมือตรวจสอบและไลบรารีการบันทึกในระหว่างขั้นตอนการบำรุงรักษา
แม้ว่าบางครั้งลูกค้าอาจไม่คิดอย่างนั้น แต่การพัฒนายังไม่สิ้นสุดเมื่อคุณได้รับเวอร์ชันที่เสถียรและผ่านการทดสอบอย่างสมบูรณ์ ซอฟต์แวร์มีการพัฒนาอยู่เสมอ ไม่ว่าจะเป็นการแก้ไขข้อผิดพลาด เพิ่มคุณสมบัติใหม่ หรือปรับปรุงประสิทธิภาพ

และไม่มีแหล่งข้อมูลใดที่จะดีไปกว่าการรู้ว่าจะต้องทำการเปลี่ยนแปลงใดมากไปกว่าการที่สายลับคอยตรวจสอบซอฟต์แวร์ในสภาพแวดล้อมที่ใช้งานจริง ตรวจสอบว่าคุณสมบัติใดถูกใช้บ่อยที่สุด ข้อผิดพลาดที่พบบ่อยที่สุด และการดำเนินการที่ยาวที่สุด
รายงานข้อผิดพลาด รายการบันทึก และข้อมูลการใช้งานเป็นพื้นฐานสำหรับการตรวจจับจุดบกพร่อง การระบุปัญหาคอขวด และปัญหาอื่นๆ เนื่องจากไม่สามารถทำซ้ำเงื่อนไขเดียวกันในสภาพแวดล้อมการทดสอบที่มีการควบคุมได้เสมอไป
การทำงานเป็นทีมและแรงจูงใจ
บทที่ X วรรค 24
บุคคลผู้ก้าวหน้าโดยไม่แสวงหาชื่อเสียง ผู้ถอยหนีโดยไม่พ้นโทษ ผู้ที่มีเป้าหมายเดียวคือปกป้องประชากรของเขาและรับใช้เจ้านายของเขา บุรุษผู้นี้เป็นอัญมณีแห่งอาณาจักร
โดยทั่วไป นี่คือเวอร์ชันภาษาจีนโบราณของ "ไม่มีฉันอยู่ในทีม" การทำงานร่วมกันกับผู้อื่นสำคัญกว่าการแสวงหาผลประโยชน์ส่วนตัว
การพัฒนาซอฟต์แวร์เป็นกิจกรรมที่ซับซ้อนซึ่งต้องการให้นักพัฒนาทำงานเป็นทีมอย่างมีประสิทธิภาพ นักพัฒนาที่ดีไม่ใช่ผู้ที่แก้ไขจุดบกพร่องส่วนใหญ่ ใช้คุณสมบัติส่วนใหญ่ หรือทำงานมอบหมายให้เสร็จก่อนกำหนด นักพัฒนาที่ดีคือผู้ที่ช่วยให้ทีมบรรลุเป้าหมาย
การอ้างสิทธิ์ในทุกสิ่งที่คุณทำ ไม่รู้จักข้อผิดพลาดของคุณหรือตำหนิผู้อื่นสำหรับพวกเขา หรือการเรียกตัวเองว่า นินจารหัส อาจหลอกผู้จัดการที่ไม่มีประสบการณ์บางคนและอาจถึงขั้นให้คุณขึ้นเงินเดือน แต่คุณจะกลายเป็นสมาชิกที่ต่อต้านทีมของคุณ
บทที่ 7 วรรค 21
ไตร่ตรองและไตร่ตรองก่อนทำการย้าย
วลีนี้บ่งบอกถึงความสำคัญของการประชุมพัฒนาทีม เช่น การประชุมที่เสนอโดยวิธีเปรียว
เมื่อทำงานในทีม สิ่งสำคัญคือต้องหารือเกี่ยวกับการเปลี่ยนแปลงที่สำคัญก่อนที่จะดำเนินการ ไม่สำคัญหรอกว่าคุณจะเป็นผู้นำทีมหรือถ้าคุณเป็นผู้ที่มีประสบการณ์ในหัวข้อนี้มากที่สุด คุณควรพูดคุยด้วยหรืออย่างน้อยก็แจ้งให้ส่วนที่เหลือของทีมทราบเสมอ
โปรดจำไว้ว่านักพัฒนารายอื่นสามารถให้ข้อมูลเชิงลึกแก่คุณในส่วนที่ไม่คุ้นเคยของซอฟต์แวร์ได้ ซึ่งหมายความว่าพวกเขาสามารถเริ่มดำเนินการเปลี่ยนแปลงได้เร็วกว่าที่คาดไว้ เนื่องจากพวกเขาสามารถรับรู้ถึงผลกระทบของการเปลี่ยนแปลงดังกล่าวได้อย่างเต็มที่
บทที่ X วรรค 25
ถือว่าทหารของคุณเป็นลูกของคุณ และพวกเขาจะติดตามคุณไปสู่หุบเขาที่ลึกที่สุด ถือว่าพวกเขาเป็นบุตรที่รักของท่านและพวกเขาจะยืนเคียงข้างท่านถึงแก่ความตาย
คำพูดนี้บ่งบอกถึงความสำคัญของแรงจูงใจ ซึ่งเป็นหลักการของการจัดการที่บางครั้งผู้จัดการและหัวหน้าทีมก็ลืมไป นักพัฒนาที่มีแรงจูงใจจะเขียนโค้ดได้ดีขึ้น ทำงานเร็วขึ้น มีข้อผิดพลาดน้อยลง และเต็มใจที่จะทุ่มเทเวลามากขึ้น
ผู้จัดการต้องสร้างแรงจูงใจโดยให้ความสนใจกับผู้ใต้บังคับบัญชาอย่างแท้จริง รับฟังความคิดเห็น ดูแลสมดุลชีวิตและการทำงาน สร้างสภาพแวดล้อมในการทำงานเชิงบวก และใส่ใจในเส้นทางอาชีพของตน
นอกจากนี้ คุณไม่ควรเข้าใจผิดว่าแรงจูงใจกับค่าตอบแทน การศึกษาเมื่อเร็วๆ นี้แสดงให้เห็นว่าเงินไม่ได้จูงใจคนงานส่วนใหญ่ เงินส่วนใหญ่ดึงดูดและรักษาพนักงานไว้ได้ดี แต่ไม่ได้ทำให้พวกเขามีความสุขกับงานที่ทำ ดังนั้นการยกระดับและการเลื่อนตำแหน่งไม่ควรถูกมองว่าเป็นเครื่องมือที่สร้างแรงบันดาลใจ
คิดนอกกรอบ
บทที่ V วรรค 7, 8 และ 9
มีโน้ตดนตรีไม่เกินห้าตัว แต่การผสมผสานของทั้งห้านี้ทำให้เกิดท่วงทำนองมากกว่าที่จะเคยได้ยิน
แม่สีมีไม่เกินห้าสี แต่เมื่อรวมกันแล้วจะทำให้เกิดเฉดสีมากกว่าที่เคยเห็น
มีรสชาติที่สำคัญไม่เกินห้ารสชาติ แต่การผสมผสานกันทำให้เกิดรสชาติมากกว่าที่เคย
ข้อดีอย่างหนึ่งของการเขียนโปรแกรมคือความเป็นไปได้ไม่มีที่สิ้นสุด คุณสามารถพัฒนาได้ทุกที่ที่คุณต้องการ (อย่างน้อยก็ตราบใดที่ไม่ใช่ปัญหา NP-complete)
แอพมือถือ เว็บไซต์ เกม แอปพลิเคชั่นบนเดสก์ท็อป... ถ้าคุณรู้จักการเขียนโปรแกรม ทั้งหมดนี้อยู่ใกล้แค่เอื้อม
บทที่ III วรรค 1
ในศิลปะการทำสงคราม สิ่งที่ดีที่สุดคือการยึดประเทศของศัตรูให้สมบูรณ์และไม่เสียหาย ที่จะทลายและทำลายมันไม่ดีนัก ดังนั้น การจับทั้งกองทัพยังดีกว่าการทำลาย จับกองทหาร กองทหาร หรือทั้งกอง ดีกว่าทำลายพวกเขา
เมื่อทำงานในโปรเจ็กต์ที่มีฐานโค้ดขนาดใหญ่ มักพบโมดูลหรือส่วนต่างๆ ของโค้ดที่นำมาใช้กับแนวทางปฏิบัติที่ไม่ดีหรือโดยการใช้ไลบรารีที่เลิกใช้แล้ว แม้ว่าการลบ (หรือทำลาย) รหัสนี้อาจล่อใจ แต่ก็อาจไม่ใช่ความคิดที่ดีที่สุดด้วยเหตุผลหลายประการ:
รหัสเดิมไม่ได้แย่เสมอไป บางครั้งอาจเป็นรหัสที่ดีที่เขียนขึ้นเมื่อมีการพิจารณาวิธีการและเทคโนโลยีอื่นๆ อย่างไรก็ตาม เพียงเพราะมันเก่าไม่ได้หมายความว่ามันไม่ทำงาน
คุณอาจเสียเวลาไปกับการ แก้ไขโค้ดที่ยังคงใช้งานได้ แทนที่จะมุ่งไปที่การแก้ไขส่วนอื่นๆ ที่สำคัญกว่าของโค้ด
เว้นแต่คุณจะแน่ใจจริงๆ ว่ากำลังทำอะไรอยู่ การแทนที่ส่วนของโค้ดที่ใช้งานได้หมายความว่าคุณกำลังเสี่ยงที่จะแนะนำข้อผิดพลาดหรือจุดบกพร่องใหม่ๆ
นี่ไม่ได้หมายความว่าวลีที่ว่า “ถ้ายังไม่พังก็ไม่ต้องซ่อม” เป็นกลยุทธ์ที่ดี แต่ทุกโครงการมีลำดับความสำคัญ เป้าหมาย และข้อจำกัดด้านเวลา ดังนั้น หากคุณพบโค้ดที่สามารถปรับปรุงได้ ให้หารือเกี่ยวกับโค้ดนี้กับส่วนที่เหลือของทีมหรือกับผู้จัดการโครงการ เพื่อดูว่าเมื่อใดควรปรับให้เหมาะสม
บทที่ VIII วรรค 3
มีถนนที่ไม่ต้องปฏิบัติตาม มีกองทัพที่ไม่ต้องโจมตี เมืองที่ไม่ต้องปิดล้อม ตำแหน่งที่ไม่ต้องโต้แย้ง มีคำสั่งของอธิปไตยที่ไม่ต้องเชื่อฟัง
แม้จะไม่ได้กล่าวโดยตรง แต่เราสามารถตีความหลักการนี้เป็นคำเตือนเพื่อหลีกเลี่ยงการต่อต้านรูปแบบ
แม้ว่าการใช้รูปแบบต่อต้านอาจแก้ปัญหาในระยะสั้นได้ แต่คุณควรจำไว้ว่าในระยะยาวรูปแบบดังกล่าวจะส่งผลตรงกันข้าม ดังนั้น ไม่ว่าคุณจะประหยัดเวลาได้มากแค่ไหน แก้ไขบั๊กกี่จุด หรือสะดวกแค่ไหนสำหรับคุณ ให้หลีกเลี่ยง
อย่างไรก็ตาม มีบางครั้งที่คุณอาจถูกล่อลวงให้ใช้รูปแบบต่อต้านเพื่อแก้ไขงานเร่งด่วน โดยสัญญากับตัวเองว่าคุณจะแก้ไขอย่างเหมาะสมเมื่อคุณมีเวลามากขึ้น แต่อย่าลืมกฎข้อหนึ่งของเมอร์ฟี: การแก้ไขด่วนทั้งหมดจะกลายเป็นการเปลี่ยนแปลงอย่างถาวร
บทสรุป
แม้ว่าการพัฒนาซอฟต์แวร์จะแตกต่างจากการบังคับบัญชาทหารในสงครามหรือการนำประเทศ แต่สิ่งที่พวกเขาต้องแก้ปัญหาที่ต้องใช้การทำงานเป็นทีม ความเป็นผู้นำที่ดี ประสิทธิภาพ และการแก้ปัญหาระยะยาว
อย่างไรก็ตาม Art of War ไม่ใช่หนังสือเล่มเดียวที่มีหลักการที่อาจนำไปใช้กับการพัฒนาซอฟต์แวร์ ตัวอย่าง The Prince ของ Niccolo Machiavelli
อันที่จริง นี่คือรายการราคาจาก Machiavelli ที่ยังคงมีความเกี่ยวข้อง ลองเดาว่าข้อใดเป็นหลักการที่สอดคล้องกันในโลกของการพัฒนาซอฟต์แวร์
- สิงโตไม่สามารถป้องกันตัวเองจากกับดัก และสุนัขจิ้งจอกก็ไม่สามารถป้องกันตัวเองจากหมาป่าได้ จึงต้องเป็นจิ้งจอกถึงจะรู้จักกับดัก และเป็นสิงโตที่ขู่หมาป่า
- อย่าพยายามเอาชนะด้วยกำลัง สิ่งที่สามารถชนะได้ด้วยการหลอกลวง
- ไม่เคยประสบความสำเร็จอย่างยิ่งใหญ่โดยปราศจากอันตราย
- ผู้ใดปรารถนาความสำเร็จอย่างถาวร ต้องเปลี่ยนความประพฤติของตนตามกาลเวลา
- ผู้ชายโดยทั่วไปตัดสินจากรูปร่างหน้าตามากกว่าความเป็นจริง ผู้ชายทุกคนมีตา แต่มีเพียงไม่กี่คนที่สามารถเจาะทะลุได้
- ผู้ที่ปรารถนาจะเชื่อฟังต้องรู้จักสั่งสอน
- ปัญญาประกอบด้วยการรู้จักแยกแยะธรรมชาติของปัญหา และในการเลือกความชั่วร้ายที่น้อยกว่า
- ไม่มีการหลีกเลี่ยงสงคราม มันสามารถเลื่อนออกไปเพื่อประโยชน์ของศัตรูของคุณเท่านั้น
- ธรรมชาติสร้างผู้ชายไม่กี่คนที่กล้าหาญ อุตสาหกรรมและการฝึกอบรมทำให้หลาย.
