คุณควรนำอะไรมาไว้ในตารางในฐานะสถาปนิกซอฟต์แวร์ [ปิด]


20

มีการหลายคำถามที่มีคำตอบที่ดีเกี่ยวกับบทบาทของสถาปนิกซอฟต์แวร์ (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 ที่กล่าวถึงข้างต้น คำถามของฉันเดือดลงไปที่:

  1. SA ควรนำอะไรมาที่โต๊ะ
  2. พวกเขาจะสร้างสมดุลในการตัดสินใจอย่างไร
  3. ควรเข้าใกล้งาน SA (ตามที่กำหนดไว้ก่อนหน้านี้) ด้วยความคิดที่ว่าพวกเขาจะต้องบังคับใช้กฎพื้นฐานบางอย่าง?
  4. มีอะไรให้พิจารณาอีกไหม?

ขอบคุณ! ฉันมั่นใจว่างานเหล่านี้จะขยายออกไปได้อย่างง่ายดายสำหรับผู้ที่มีประสบการณ์สูงหรือผู้นำทางด้านเทคนิคดังนั้นอย่าลังเลที่จะตอบคำถามด้วยความสามารถ


หาก SA ใช้ FXCop ทำไมจะทำให้หมดอำนาจ? ไม่ควรใช้เวลาสองสามนาทีในการตรวจสอบแม้แต่แอปพลิเคชันที่ใหญ่ที่สุดกับ FXCop
Robert Harvey

กระสุนนัดที่สองดูเหมือนว่า SA ทำผิด แต่ดูเหมือนว่าจะไม่ดี ถ้าเขาทำเพียงพอพวกนั้น บริษัท จะหา SA ใหม่
Robert Harvey

กระสุนนัดที่สามดูเหมือนว่า SA เป็นมนุษย์อวกาศสถาปัตยกรรม หรือมันเป็นปีศาจที่เขารู้ ไม่ว่าในกรณีใดสถาปัตยกรรมแบบสม่ำเสมออาจเป็นสิ่งที่ดีหากมีการใช้อย่างเหมาะสม
Robert Harvey

@ Robert ขออภัยถ้าฉันไม่ชัดเจน การทบทวนรหัสอย่างต่อเนื่องเพื่อให้เป็นไปตามสไตล์ของ SA นั้นคือการทำให้หมดอำนาจไม่ใช่ FxCop ต่อ se แนวทางบางส่วนของเขาขัดแย้งกับ Microsoft ดังนั้นคุณต้องเรียนรู้วิธีการของเขา พวกเขาแตกต่างกันเล็กน้อย แต่มีจู้จี้จุกจิกและประสิทธิภาพการผลิตที่ถูกฆ่าตายมาก ฉันเห็นด้วยกับคุณในจุดที่สองมันเป็นการตัดสินใจที่ไม่ดีและเราไม่สมบูรณ์แบบ สัญลักษณ์แสดงหัวข้อย่อยที่สามเป็นสิ่งที่ดีและไม่ดี เขาพอใจกับมัน แต่มันก็ป้องกันไม่ให้ devs ทำงานกับเทคโนโลยีใหม่ ๆ
Ahmad Mageed

SA ควรนำอะไรมาที่โต๊ะ วิสกี้หนึ่งแก้วปืนและกระสุนสองนัด
Adam Crossland

คำตอบ:


23

สถาปนิกระบบควร:

  1. ระบุสถาปัตยกรรมระดับสูง
  2. มีส่วนร่วมในการตรวจสอบรหัส
  3. อนุมัติเทคโนโลยีที่ใช้
  4. ช่วยเหลือผู้พัฒนาในการเขียนโปรแกรม
  5. บำรุงรักษาและตรวจสอบตารางการพัฒนา
  6. ผลิตสิ่งประดิษฐ์ SA เช่นไดอะแกรม UML แผนภูมิแกนต์และสิ่งที่คล้ายกัน

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

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

เช่นเดียวกับมนุษย์ทุกคน SA สามารถทำผิดพลาดได้ คนดีเรียนรู้จากความผิดพลาดเหล่านั้นและกลายเป็น SA ที่ดีขึ้น


5. ควรเป็นผู้จัดการโครงการหรือไม่
BЈовић

8

ฉันไม่เคยพบเจอกับสถาปนิกที่มีประโยชน์ส่วนใหญ่เป็นเพราะพวกเขาไม่ได้ใช้งานได้จริง

สำหรับฉันปัญหาที่ใหญ่ที่สุดที่ฉันเคยเห็นคือ:

  • ตาบอดยึดมั่นในกระบวนการเพื่อประโยชน์ของกระบวนการ
  • ตาบอดกับเทคโนโลยีก่อนที่จะรู้ปัญหา
  • การสร้างและการบังคับใช้กฎโดยไม่มีเหตุผลที่ดี
  • rewrite from scratch ความคิด

"สถาปนิก" ที่ดีที่สุดที่ฉันเคยทำงานด้วยมาที่โต๊ะ:

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

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


-1 คุณไม่เคยทำงานกับสถาปนิกที่ดีอย่างเห็นได้ชัด สถาปนิกที่ฉันทำงานด้วยไม่ทำคะแนนสี่ข้อแรก
สตีเฟ่น

7

1 SA ควรนำอะไรไปที่โต๊ะ

  • ผิวหนังหนา
  • ทักษะการเจรจาต่อรองที่ดี
  • มีความเข้าใจที่ดีเกี่ยวกับซอฟต์แวร์ระดับต่างๆ (จากความดีงามของ AJAX ไปจนถึง I / O เครือข่ายระดับต่ำ) คุณไม่จำเป็นต้องมีความเชี่ยวชาญ แต่คุณจะต้องทำการตัดสินใจที่สำคัญเกี่ยวกับซอฟต์แวร์ที่ควรใช้ในเลเยอร์ใด
  • ความเต็มใจที่จะทำให้มือสกปรกในรหัสการออกแบบกระดาษสีขาวก็ไม่ได้ตัด
  • การส่งเสริมฝีมือของซอฟต์แวร์ - เป็นเชียร์ลีดเดอร์ในการทำสิ่งที่ถูกต้องทุกครั้งที่ทำได้และวิธีที่ดีที่สุดจะมีข้อ จำกัด ในกรณีอื่น ๆ ดังนั้นสิ่งต่าง ๆ เช่นการควบคุมแหล่งที่มา, TDD, สร้างและ CI, การเข้ารหัส DOJOs, การตรวจสอบโค้ด, ระบบติดตามปัญหาที่ดี ฯลฯ

2 พวกเขาสามารถสร้างสมดุลในการตัดสินใจได้อย่างไร

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

3 ควรเข้าใกล้งาน SA (ตามที่กำหนดไว้ก่อนหน้านี้) ด้วยความคิดที่ว่าพวกเขาจะต้องบังคับใช้กฎพื้นฐานบางอย่าง?

  • ใช่สิ่งต่าง ๆ เช่นการควบคุมเวอร์ชันและระบบการสร้างนั้นค่อนข้างสำคัญและนักพัฒนาจำเป็นต้องใช้สิ่งเหล่านี้ อย่างไรก็ตามมันเป็นการดีที่สุดที่จะทำให้พวกเขาเป็นส่วนหนึ่งของการแก้ปัญหา

มีอีกมากที่ฉันคิดว่าจะมีคำตอบที่ดีจริงๆมาถึงสำหรับคนนี้


+1 สำหรับคะแนนของคุณ พวกเขาแสดงให้เห็นถึงสิ่งที่จำเป็นมากและดำเนินต่อไปในทีมเล็กดีทีมรวม
talonx

3

1. SA ควรนำอะไรมาที่โต๊ะ

"พวกเขาควรจะเข้ามาในความคิดของ 'วางกฎหมาย' ... หรือพวกเขาควรระบุทิศทางเริ่มต้นและกลยุทธ์แล้ววางกลับและกระโดดตามที่จำเป็นเพื่อแก้ไขทิศทางของเรือ?"

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

เท่าที่เทคโนโลยี: ทำงานกับสิ่งที่คุณมีถ้า บริษัท ใช้ StarTeam นั่นคือสิ่งที่คุณใช้ การแต่งงานกับผลิตภัณฑ์ / กระบวนการ / กระบวนการใดโดยเฉพาะจะไม่ทำอะไรให้คุณเลย

2. พวกเขาสามารถสร้างสมดุลในการตัดสินใจได้อย่างไร?

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

3. ควรเข้าใกล้งาน SA (ตามที่กำหนดไว้ก่อนหน้านี้) ด้วยความคิดที่ว่าพวกเขาจะต้องบังคับใช้กฎพื้นฐานบางอย่าง?

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

4. มีอะไรให้พิจารณาอีกไหม?

  • ในการอ้างอิงถึงตัวอย่างที่สองของคุณ: ดูเหมือนว่าทีมโครงการได้พึ่งพาระบบย่อยภายในองค์กรอย่างแน่นหนา อาคารคู่ที่หลวมไม่ได้มีไว้สำหรับรหัสของบุคคลที่สามเท่านั้น การสร้างสิ่งที่เป็นนามธรรมสำหรับระบบย่อยนั้นอาจอนุญาตให้เปลี่ยนได้ง่ายขึ้นโดยใช้ไลบรารีนั้นหากโซลูชันภายในล้มเหลว นี่เป็นวิธีแก้ปัญหาแบบลอจิคัลสำหรับสถาปนิกซอฟต์แวร์เพียงอย่างเดียว แต่ยังเป็นรูปแบบของ Project Manager ที่มีความกังวลเกี่ยวกับการแสดงออกของทีม
  • ตามตัวอย่างที่สามของคุณ: ไม่ใช่ความคิดที่ดีที่จะมีสถาปัตยกรรมหรือกระบวนการที่รู้จักกันดีในการผลิตซอฟต์แวร์ (แม้ว่าเป็นที่ยอมรับว่าคุณได้พูดว่า 'ทุกโครงการ') นี่คือสิ่งที่ทำงาน ด้วยที่กล่าวว่าจะต้องมีโอกาสที่สามารถพยายามใช้เทคนิคใหม่เพื่อดูว่าพวกเขานำมูลค่าเพิ่มเติม ซอฟต์แวร์ในบ้านเท่านั้นหรือโครงการขนาดเล็กที่สามารถใช้เทคโนโลยีเหล่านี้เป็นสถานที่ที่เหมาะ โปรดทราบว่าความรับผิดชอบนั้นอยู่ในกลุ่มผู้พัฒนาเพื่อให้การสาธิตและการโต้แย้งที่วิจัยและโน้มน้าวใจสำหรับการนำเทคโนโลยีมาใช้ และคาดว่าจะไม่สามารถรู้ SA ทุก ORM การแข่งขันและจุดแข็งและจุดอ่อนของมันเมื่อเทียบกับคนอื่น ๆ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.