มีการหลายคำถามที่มีคำตอบที่ดีเกี่ยวกับบทบาทของสถาปนิกซอฟต์แวร์ (SA) ในStackOverflowและโปรแกรมเมอร์ SE ฉันพยายามถามคำถามที่เน้นกว่าเล็กน้อย คำจำกัดความของ SA นั้นกว้างดังนั้นคำถามนี้จึงให้คำจำกัดความของ SA ดังนี้:
สถาปนิกซอฟต์แวร์แนะนำการออกแบบโดยรวมของโครงการมีส่วนร่วมกับความพยายามในการเขียนโค้ดดำเนินการตรวจสอบโค้ดและเลือกเทคโนโลยีที่จะใช้
ในคำอื่น ๆ ฉันไม่ได้พูดเกี่ยวกับส่วนที่เหลือของการบริหารจัดการและเสื้อกั๊กที่ SAs ประเภทคำ (บทกวีคำต่อไป) ยอด ถ้าฉันจะไล่ตามตำแหน่ง SA ทุกประเภทฉันไม่ต้องการออกห่างจากการเข้ารหัส ฉันอาจเสียสละเวลาเพื่อติดต่อกับลูกค้าและนักวิเคราะห์ธุรกิจ ฯลฯ แต่ฉันยังคงมีส่วนร่วมทางเทคนิคและฉันไม่เพียงแค่รู้ว่าเกิดอะไรขึ้นในการประชุม
เมื่อคำนึงถึงประเด็นเหล่านี้แล้ว SA ควรนำอะไรมาสู่ตาราง พวกเขาควรเข้ามาในความคิดของ "วางกฎหมาย" (เพื่อพูด) และบังคับใช้เครื่องมือบางอย่างเพื่อให้เหมาะสมกับ "ทาง" คือแนวทางการเข้ารหัสแหล่งควบคุมรูปแบบเอกสาร UML ฯลฯ ? หรือพวกเขาควรระบุทิศทางเริ่มต้นและกลยุทธ์แล้ววางกลับเข้ามาตามความจำเป็นเพื่อแก้ไขทิศทางของเรือ?
ขึ้นอยู่กับองค์กรซึ่งอาจไม่ทำงาน SA ที่อาศัย TFS ในการบังคับใช้ทุกสิ่งอาจต่อสู้เพื่อดำเนินการตามแผนของพวกเขากับนายจ้างที่ใช้ StarTeam เท่านั้น ในทำนองเดียวกัน SA จะต้องมีความยืดหยุ่นขึ้นอยู่กับระยะของโครงการ หากเป็นโครงการใหม่พวกเขามีทางเลือกมากขึ้นในขณะที่พวกเขาอาจมีน้อยกว่าสำหรับโครงการที่มีอยู่
นี่คือเรื่องราว SA บางอย่างที่ฉันพบว่าเป็นวิธีการแบ่งปันภูมิหลังด้วยความหวังว่าคำตอบสำหรับคำถามของฉันอาจทำให้เข้าใจถึงปัญหาเหล่านี้:
ฉันทำงานกับ SA ที่มีการตรวจสอบรหัสทุกบรรทัดของทีมอย่างแท้จริง SA จะทำเช่นนี้ไม่เพียง แต่โครงการของเรา แต่โครงการอื่น ๆ ในองค์กร (จินตนาการเวลาที่ใช้ในการนี้) ในตอนแรกมันมีประโยชน์ในการบังคับใช้มาตรฐานบางอย่าง แต่ต่อมามันกลายเป็นคนพิการ FxCop เป็นวิธี SA จะค้นหาปัญหา อย่าเข้าใจฉันผิดมันเป็นวิธีที่ดีในการสอนผู้พัฒนารุ่นเยาว์และบังคับให้พวกเขาคิดว่าผลที่ตามมาจากวิธีการที่พวกเขาเลือก แต่สำหรับนักพัฒนาระดับสูง
หนึ่งใน SA นั้นต่อต้านการใช้งานของห้องสมุดบางแห่งโดยอ้างว่ามันช้า สิ่งนี้ทำให้เราต้องเขียนโค้ดจำนวนมากเพื่อให้ได้สิ่งที่แตกต่างในขณะที่ห้องสมุดอื่นจะช่วยเราได้มาก กรอไปข้างหน้าสู่เดือนสุดท้ายของโครงการและลูกค้าก็บ่นเกี่ยวกับประสิทธิภาพ ทางออกเดียวคือเปลี่ยนฟังก์ชั่นบางอย่างเพื่อใช้วิธีการเพิกเฉยเดิมแม้จะมีคำเตือนจาก devs ก่อน จากจุดนั้นมีการโยนรหัสจำนวนมากและไม่สามารถใช้ซ้ำได้ซึ่งนำไปสู่การทำงานล่วงเวลาและความเครียด น่าเศร้าที่การประมาณการที่ใช้สำหรับโครงการนั้นเป็นไปตามแนวทางแบบเก่าซึ่งโครงการของฉันถูกห้ามไม่ให้ใช้ดังนั้นจึงไม่ใช่ตัวบ่งชี้ที่เหมาะสมสำหรับการประมาณ ฉันจะได้ยิน PM พูดว่า "เราเคยทำมาก่อน"
SA ที่จะบังคับใช้ DTO, DOs, BOs, เลเยอร์บริการและอื่น ๆ สำหรับโครงการทั้งหมด ผู้พัฒนารายใหม่ต้องเรียนรู้สถาปัตยกรรมนี้และ SA บังคับใช้แนวทางปฏิบัติอย่างเคร่งครัด มีการยกเว้นแนวทางการใช้งานเมื่อปฏิบัติตามหลักเกณฑ์ได้ยาก SA มีเหตุผลในแนวทางของพวกเขา คลาสสำหรับ DTOs และการดำเนินการ CRUD ทั้งหมดถูกสร้างขึ้นผ่าน CodeSmith และสกีมาฐานข้อมูลเป็นอีกแวกซ์ที่คล้ายกัน อย่างไรก็ตามเมื่อใช้การตั้งค่านี้ทุกที่ SA ไม่ได้เปิดรับเทคโนโลยีใหม่เช่น LINQ ไปยัง SQL หรือ Entity Framework
ฉันไม่ได้ใช้โพสต์นี้เป็นแพลตฟอร์มสำหรับการระบาย มีแง่บวกและลบกับประสบการณ์ของฉันกับเรื่องราว SA ที่กล่าวถึงข้างต้น คำถามของฉันเดือดลงไปที่:
- SA ควรนำอะไรมาที่โต๊ะ
- พวกเขาจะสร้างสมดุลในการตัดสินใจอย่างไร
- ควรเข้าใกล้งาน SA (ตามที่กำหนดไว้ก่อนหน้านี้) ด้วยความคิดที่ว่าพวกเขาจะต้องบังคับใช้กฎพื้นฐานบางอย่าง?
- มีอะไรให้พิจารณาอีกไหม?
ขอบคุณ! ฉันมั่นใจว่างานเหล่านี้จะขยายออกไปได้อย่างง่ายดายสำหรับผู้ที่มีประสบการณ์สูงหรือผู้นำทางด้านเทคนิคดังนั้นอย่าลังเลที่จะตอบคำถามด้วยความสามารถ