การก่อหนี้ทางเทคนิคในบริษัทซอฟต์แวร์ขนาดเล็กของอินเดียที่กำลังพัฒนาแอปและเว็บไซต์: ใครเป็นผู้รับผิดชอบ

เผยแพร่แล้ว: 2020-03-24

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

โปรแกรมเมอร์-meme
Client-developer-tester-manager-funny-meme
ประมาณการ-กำหนดเวลา-สนุก-meme
only-god-knows-code-fun-meme . เท่านั้น
มส์ที่ซ้ำซากจำเจบางส่วนที่ลอยอยู่บนอินเทอร์เน็ตตั้งแต่ไม่กี่ปีที่ผ่านมา

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

ฉันเจอคำนี้เมื่ออ่านบล็อกและวารสารจาก Silicon Valley ในสหรัฐอเมริกาเท่านั้น ซึ่งหมายความว่าโปรแกรมเมอร์และผู้บริหารซอฟต์แวร์ส่วนใหญ่ที่ทำงานในบริษัทพัฒนาซอฟต์แวร์ขนาดเล็กและขนาดกลางในอินเดียจะไม่เคยได้ยินคำศัพท์นี้มาก่อนจนถึงตอนนี้ ให้ฉันเริ่มต้นด้วยการอธิบายคำศัพท์นั้นเอง Technical Debt หรือ Code Debt เป็นแนวคิดในการพัฒนาซอฟต์แวร์ที่สะท้อนถึงต้นทุนโดยนัยของการทำงานซ้ำเพิ่มเติมที่เกิดจากการเลือกโซลูชันที่ง่าย (จำกัด) ในตอนนี้ แทนที่จะใช้แนวทางที่ดีกว่าซึ่งจะใช้เวลานานกว่า

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

กรรม-เลว

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

  1. ลูกค้าที่ใจร้อนและเกินความฉลาด

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

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

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

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

เปลี่ยน-ขอ-สนุก-มีม
  1. ผู้จัดการที่ขี้เกียจและเจ้าเล่ห์

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

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

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

เมื่อ-คุณ-อายุต่ำกว่า-30---แจ็ค-มา---คำพูด
  1. โปรแกรมเมอร์

ใช่ ฉันจะไม่จบหัวข้อนี้ด้วยการตำหนิพวกคุณเช่นกัน! แต่เดี๋ยวก่อน #notallprogrammers ใช่ไหม ก็ใช่ แต่เกือบ 94% ของโปรแกรมเมอร์ อย่างน้อยนั่นคือสิ่งที่ CP Gurani ซีอีโอของ Tech Mahindra คิด เมื่อเขาเปิดเผยสิ่งที่น่าตกใจเมื่อสองสามปีก่อนว่า 94% ของผู้สำเร็จการศึกษาด้านไอทีไม่เหมาะกับงานนี้ ฉันไม่รู้แน่ชัดว่าเขามาที่หมายเลขนั้นได้อย่างไร แต่เนื่องจากเป็นผลงานของวิทยาลัยวิศวกรรมศาสตร์ของอินเดียและได้เห็นระบบนิเวศของวิศวกรรมไอทีทั้งหมดในช่วง 10 ปีที่ผ่านมา ฉันสามารถพูดได้ว่าฉันมักจะเห็นด้วยกับที่คุณ Gurani กล่าว

cp-gurnani

ฉันไม่ได้พยายามที่จะโต้เถียงว่าเป็น 94% หรือ 90% หรือ 80% แต่เพื่อให้การเปรียบเทียบแก่คุณ มันเหมือนกับว่าพวกเราเกือบทุกคนรู้ว่าเราต้องการแป้ง น้ำ และเกลือเล็กน้อยเพื่อทำแป้งโด และที่กลิ้งแป้งเพื่อทำจาปาตี แต่มีเพียงไม่กี่คนเท่านั้นที่สามารถทำ chapatis ที่กินได้ มันเป็นกระบวนการง่ายๆ ที่ตายตัว แต่ก็ยังต้องใช้พรสวรรค์และการฝึกฝนอีกมากจึงจะทำได้ดี เช่นเดียวกับกรณีการเขียนโปรแกรม เราทุกคนรู้สูตร แต่มีเพียงไม่กี่คนที่พับแขนเสื้อของเราและทำให้มือของเราสกปรกและฝึกฝนตราบเท่าที่ต้องใช้เพื่อเชี่ยวชาญงานฝีมือนั้น

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

โดยสรุปแล้ว ฉันรู้สึกว่าทั้ง 3 ฝ่ายหลักในความร่วมมือครั้งนี้ต้องร่วมกันรับผิดชอบในความผิดในการรวบรวมรหัสหนี้ อีกครั้ง อย่านำงานชิ้นนี้เป็นชิ้นเล็กชิ้นน้อยสำหรับทุกสิ่งที่ผิดพลาดในอุตสาหกรรม มันเหมือนกับอุตสาหกรรมอื่น ๆ ในโลกที่มีส่วนแบ่งที่ยุติธรรมของความน่าสะพรึงกลัวและฮีโร่ แม้จะทำแบบนี้มา 10 ปี ฉันก็ยังไม่ทำอะไรกับชีวิตอีกเลย ฉันรักงานนี้ ฉันชอบที่จะเป็นบริษัทเล็กๆ ที่ทำงานในโครงการที่น่าตื่นเต้นจากลูกค้าทั่วโลก

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

ฉันจะปิดท้ายด้วยคำพูดสรุปนี้จาก Samuel Beckett:

samuel-beckett-quote