ก่อนอื่นฉันตระหนักว่าคำถามนี้อาจจะค่อนข้างยาวและคลุมเครือและฉันต้องขออภัยในเรื่องนี้ นี่อาจเป็นปัญหาพื้นฐานที่มีชื่อสั้น ๆ สำหรับใครก็ตามที่ "ได้รับ" แต่เมื่อฉันพบว่าตัวเองขาดในเรื่องนี้โปรดอดทนกับฉันในการอธิบายปัญหา
ฉันได้ทำโปรแกรมด้วยวิธีนี้หรืออื่น ๆ ตั้งแต่ฉันอายุประมาณ 11 ปี นั่นหมายความว่าฉันมักจะสอนตัวเองทุกอย่างตั้งแต่เริ่มต้น ฉันได้รับการศึกษาด้านเทคนิค แต่ไม่เคร่งครัดในสาขาวิทยาการคอมพิวเตอร์ (ฉันจบการศึกษาระดับปริญญาโทด้านโทนิควิศวกรรม) แน่นอนว่าเรามีหลักสูตรการเขียนโปรแกรม แต่ส่วนใหญ่เป็นสิ่งพื้นฐานสำหรับฉันและฉันไม่ได้เรียนรู้สิ่งใหม่มาก ฉันยังคงให้ความรู้แก่ตัวเองตลอดทางเพื่อความสุขของมันและรู้อยู่เสมอว่าฉันจะมีอาชีพในการเขียนโปรแกรม แต่ทุกโครงการของฉันมีขนาดเล็กมากในเวลานั้น ฉันไม่มีปัญหาในการรักษาพวกเขาในใจของฉันและรักษาพวกเขา
ตอนนี้ฉันพบว่าตัวเองเป็นผู้นำในทีม แต่ไม่ได้อยู่ในสภาพแวดล้อมขององค์กร - ฉันทำงานให้กับมหาวิทยาลัยในการพัฒนาซอฟต์แวร์ทางวิทยาศาสตร์ (ใน C ++) สำหรับการใช้งานด้านวิศวกรรม ทันใดนั้นโครงการก็กำลังโต (ค่อนข้างใหญ่) และฉันก็มีปัญหาในการใช้เวลาส่วนใหญ่ ฉันเสียเวลาและความพยายามอย่างมากในสองสิ่งส่วนใหญ่:
- เมื่อฉันต้องกลับไปที่ส่วนของรหัสที่ฉันไม่ได้ทำงานเป็นระยะเวลาหนึ่งฉันมีปัญหาในการจำได้ว่ามันทำงานอย่างไร ฉันใช้เวลามากมายในการตรวจสอบไฟล์ส่วนหัวสำหรับชั้นเรียนที่เกี่ยวข้องและอ่านความคิดเห็นที่ฉันวางไว้ระหว่างทางในไฟล์ต้นฉบับ ฉันหวังว่าจะมี "แผนผัง" บางรูปแบบที่ฉันสามารถเหลือบและดึงภาพกลับคืนได้ง่ายขึ้น
- เมื่อฉันแนะนำการเปลี่ยนแปลงบางครั้งฉันรู้ว่าครึ่งทางที่สิ่งที่ฉันพยายามทำจะทำลายสิ่งอื่น (หรือแย่กว่านั้นมันแสดงให้เห็นที่รันไทม์เป็นเรื่องประหลาดใจเท่านั้น) ฉันย้อนกลับและเริ่มทำมันแตกต่างกันเพียงเพื่อจะพบว่าฉันละเลยอิทธิพลขององค์ประกอบอื่น ๆ ฉันหวังว่าจะมี "แผนภาพสถาปัตยกรรม" ที่ฉันสามารถดูว่าสิ่งต่าง ๆ เกิดขึ้นได้อย่างไรสิ่งที่ฉันพยายามทำจะมีผลกับส่วนประกอบอื่น ๆ และวิธีที่ฉันจะวางแผนรายละเอียดก่อนที่จะเริ่มดำเนินการเปลี่ยนแปลง
คนส่วนใหญ่ที่ฉันทำงานด้วยมีเรื่องราวคล้ายกันกับฉัน - การวางแนวด้านเทคนิคที่แข็งแกร่งและบางครั้งก็มีทักษะที่ยอดเยี่ยม แต่ไม่มีวิธีจัดการงานของพวกเขา อย่างไรก็ตามโครงการของพวกเขามักจะมีขนาดเล็กกว่าเหมืองมากดังนั้นพวกเขาจึงรับมืออย่างใด อย่างไรก็ตามสิ่งที่มีความหมายสำหรับฉันคือฉันเป็นของตัวเองและไม่มีใครที่จะเรียนรู้การปฏิบัติที่ดีจาก
ฉันเข้าเรียนหลักสูตรระดับสูงกว่าปริญญาตรีในการจัดการด้านไอทีและในขณะที่ฉันพบว่ามันค่อนข้างน่าพอใจมันเป็นเป้าหมายหลักที่ไม่ใช่โปรแกรมเมอร์การสอนเกี่ยวกับวิธีการจัดการโครงการการประมาณงบประมาณ / กำหนดเวลาสถาปัตยกรรมองค์กร ฯลฯ - ไม่ใช่การออกแบบซอฟต์แวร์และการวางแผน ไม่เป็นไรฉันกำลังพยายามเรียนรู้สิ่งนั้นด้วย แน่นอนว่ามีการแนะนำเครื่องมือบางอย่าง (เช่น UML) และประเภทของการพัฒนาซอฟต์แวร์ (เรียงซ้อนซ้ำแล้วซ้ำอีกเปรียว ... ) แต่เห็นได้ชัดว่าไม่ได้อยู่ในรายละเอียดที่ดีและฉันตัดสินใจยากว่าจะเลือกใช้อย่างไร ( และขอบเขต)
ฉันได้อ่านคำถามและคำตอบมากมายเกี่ยวกับการออกแบบซอฟต์แวร์บน SO - มีหลายอย่างเกี่ยวกับการทำโดยใช้เครื่องมือหรือวิธีการเฉพาะนั้นและถ้าฉันมั่นใจว่าเอกสาร UML จะแก้ปัญหาของฉันได้ - ฉันจะหยิบมันขึ้นมาและ เริ่มใช้มัน แต่บางคนสาบานโดยที่คนอื่นบอกว่ามันไร้ประโยชน์ ฉันกำลังมองหาคำตอบในระดับที่สูงขึ้นของสิ่งที่เป็นนามธรรม - มีวิธีที่จะแก้ปัญหาทั้งสองที่ฉันมีอยู่และคุณจะทำอย่างไร? ฉันควรเรียนรู้สิ่งใดที่จะสามารถทำได้โดยอาจไม่ผูกพันกับเครื่องมือหนึ่งอย่างใดอย่างหนึ่ง สิ่งเหล่านี้มาและมีสไตล์เป็นครั้งคราวและฉันคาดหวังว่าการบังคับใช้จะแตกต่างกันไปตามประเภทของโครงการ
ขอบคุณมากสำหรับการอ่านฉันไม่สามารถพูดในสิ่งที่ฉันหมายถึงสั้น ๆ (ขาดประสบการณ์การออกแบบซอฟต์แวร์และคำศัพท์)