ฉันจะเริ่มต้นด้วยการพูดว่าแนวคิดที่ดีของทีม "สถาปัตยกรรม" ที่แยกจากกันคือการดูถูกวิธีการพัฒนาซอฟต์แวร์ที่ดี ทีมสถาปัตยกรรมในสภาพแวดล้อมขององค์กรมีแนวโน้มที่จะเป็นสุดยอดของหอคอยงาช้างหลอกทางปัญญาวัวที่เลวร้ายที่สุด * * * * * * * *ศิลปินที่สามารถพบได้ในหมู่สระว่ายน้ำของนักพัฒนา
องค์กรอื่น ๆ ปฏิบัติต่อกลุ่มสถาปัตยกรรมเช่นรางวัลทางการเมืองและการให้เหตุผลเพื่อเงินเดือนที่มากสำหรับสมาชิกอาวุโสส่วนใหญ่โดยไม่คำนึงถึงคุณธรรมความรู้หรือทักษะ ส่วนใหญ่ประกอบด้วยทั้งสองประเภท
นักพัฒนาทุกคนสามารถและควรเป็นสถาปนิกและควรมีส่วนร่วมในการออกแบบระดับสูงของ บริษัท ความคิดที่ว่ากลุ่มเดียวมีการควบคุมเผด็จการอย่างสมบูรณ์ในทุกแง่มุมของการออกแบบซอฟต์แวร์และจะต้องส่งมอบให้กับนักพัฒนาที่ไม่ได้มีส่วนร่วมในการออกแบบไม่เข้าใจเหตุผลที่อยู่เบื้องหลังตัวเลือกการออกแบบและอาจเข้าใจข้อบกพร่องที่สำคัญ ในการออกแบบให้มีความสะดวกสบายและใกล้เคียงกับการใช้งานจริงและรหัสที่มีอยู่นั้นมีข้อบกพร่องอย่างสมบูรณ์จากแกนหลักของมันและจะส่งผลอย่างต่อเนื่องในหนึ่งในสามสถานการณ์:
นักพัฒนาไม่เข้าใจการออกแบบหรือปฏิเสธทันทีเนื่องจากความเป็นจริงของการนำไปใช้งานในปัจจุบันและท้ายที่สุดกำหนดการออกแบบที่ไม่มีเอกสารของตนเองและนำไปใช้แทน สถานการณ์เป็นเอกสารการออกแบบอย่างเป็นทางการที่ไม่สะท้อนการใช้งานซอฟต์แวร์
นักพัฒนาติดตามการออกแบบที่อาจหรือไม่อาจคำนึงถึงความต้องการในปัจจุบันหรือแง่มุมที่ไม่ซ้ำกันของเรื่องราวของผู้ใช้ในการพิจารณาส่งผลให้การใช้งานที่มีคุณภาพและน่าสงสาร
นักพัฒนาอัจฉริยะที่เข้าใจเอกสารการออกแบบและสามารถนำไปใช้ได้อย่างรวดเร็วเบื่อหน่ายโดยไม่ต้องมีส่วนร่วมในการอภิปรายการออกแบบ พวกเขาอาจถูกแยกออกจากการเข้าร่วมในกลุ่มสถาปัตยกรรมเนื่องจากปัญหาทางการเมืองหรือระดับอาวุโสดังนั้นพวกเขาจึงกลายเป็นหงุดหงิดเบื่อและออกจากทุ่งหญ้าสีเขียว สิ่งนี้ส่งผลกระทบในทางลบต่อโครงการส่งผลให้สมองไหลทำให้วงจรซอฟต์แวร์คุณภาพไม่ดีดำเนินต่อไป
วิธีที่ดีที่สุดเพียงวิธีเดียวในการลดปัญหานี้คือเปลี่ยนกลุ่มสถาปัตยกรรมและอาจวางไว้ในตำแหน่งผู้นำด้านเทคโนโลยี บทบาทของกลุ่มสถาปัตยกรรมควรเป็น "การต่อสู้ของผู้นำทางเทคโนโลยี" ไม่มากก็น้อยหากคุณต้องการ พวกเขาไม่ควรพบกันบ่อยนักและหารือเฉพาะประเด็นทางเทคนิคระดับสูงสุดเช่น คิดว่าการถกเถียงเรื่องการโยกย้ายจาก Java ไปยัง Scala, การละทิ้ง Oracle สำหรับ MySQL, อาจจะเขียนไลบรารียูทิลิตี้ทั่วไปที่กำหนดประเภทของกระบวนการออกแบบมากกว่าอีกกระบวนการหนึ่งโดยเปลี่ยนจาก StarUML เป็น Altova UML
การออกแบบซอฟต์แวร์ที่แท้จริงและแท้จริงจะเป็นกระบวนการของชุมชนที่เกี่ยวข้องกับนักพัฒนาซอฟต์แวร์ทั้งหมดโดยมีทิศทางระดับสูงมากของกลุ่มสถาปัตยกรรม