สิ่งที่คุณกำลังพูดถึงคือวิศวกรรมซอฟต์แวร์มากกว่าการเขียนโปรแกรม มันเป็นสถาปัตยกรรมนิดหน่อย "แนวปฏิบัติที่ดีที่สุด" และ "รูปแบบการออกแบบ" เล็กน้อยทำงานร่วมกับผู้อื่นได้เล็กน้อย ในขณะที่มีหนังสือที่สามารถช่วยได้ แต่ส่วนใหญ่มาจากประสบการณ์ ไม่มีใครเริ่มเขียนพูด Microsoft Word
คิดเกี่ยวกับโปรแกรม "ของจริง" ขนาดใหญ่ที่คุณต้องการเขียน ตอนนี้คิดเกี่ยวกับชิ้นส่วนต่าง ๆ ที่คุณต้องสร้างเพื่อให้มันทำงานในแบบที่คุณต้องการ ตัวอย่างเช่นในเกมคนแรกที่ทันสมัยคุณจะต้องมีเอ็นจิ้นกราฟิก 3D, AI ที่ไม่ใช่ผู้เล่นที่เป็นตัวละคร, โมดูลเพลง / เสียง, เอ็นจิ้นฟิสิกส์และโมดูลระดับบนสุดที่บังคับใช้กฎของเกม (รู้ "แผนที่" วิธีการที่ตัวละครต่าง ๆ โต้ตอบ ฯลฯ ) จากนั้นก็มีงานศิลปะและการออกแบบตัวละครและดนตรีซึ่งไม่มีรหัส แต่เป็นสิ่งที่จำเป็นสำหรับเกมที่จะเสร็จสมบูรณ์
ตอนนี้: คุณจะสร้างตัวเองแบบไหนและตัวไหนจะไปที่อื่น โครงการซอฟต์แวร์ขนาดใหญ่ส่วนใหญ่ไม่ได้ตั้งโปรแกรมตั้งแต่เริ่มต้น บางทีคุณอาจใช้เอนจิ้น 3 มิติและโมดูลเพลง / เสียงและโปรแกรมเฉพาะสิ่งที่ทำให้เกมของคุณไม่เหมือนใคร ตกลงดังนั้นคุณต้องเข้าใจว่าคุณจะใช้โมดูลของบุคคลที่สามซึ่งจะเกี่ยวข้องกับปัจจัยต่างๆเช่นค่าใช้จ่ายภาษาใดที่พวกเขาทำงานด้วยคุณสมบัติที่พวกเขามีวิธีการออกแบบ API ของพวกเขา (นั่นคือวิธีการทำให้เสร็จสมบูรณ์ มันเหมาะกับสไตล์การเขียนโปรแกรมส่วนตัวของคุณอย่างไร) บางทีคุณอาจจะเขียน "หลักฐานของแนวคิด" หรือโปรแกรมทดสอบโดยใช้หนึ่งหรือสองผู้สมัครสำหรับโมดูลบุคคลที่สามที่หลากหลายเพื่อให้แน่ใจว่าพวกเขาจะทำทุกสิ่งที่คุณต้องการและเป็นเรื่องง่ายสำหรับคุณที่จะใช้
นอกจากนี้แม้แต่รหัสที่คุณต้องการเขียนด้วยตัวเองอาจเป็นงานที่ใหญ่เกินไปสำหรับคุณคนเดียวที่จะทำให้เสร็จภายในกรอบเวลาที่คุณมีอยู่ในใจ คุณต้องการโปรแกรมเมอร์จำนวนกี่คนที่ทำงานในโครงการนี้ คุณจะแยกงานอย่างไร? โมดูลต่าง ๆ จะได้รับการออกแบบอย่างไรเพื่อให้เข้ากันได้ดีแม้จะเขียนโดยคนอื่น คุณจะทำงานกับซอร์สโค้ดเดียวกันได้อย่างไรโดยไม่ลบล้างการเปลี่ยนแปลงของกันและกัน (คำตอบ: การควบคุมเวอร์ชันซึ่งมีประโยชน์อย่างยิ่งเมื่อคุณทำงานเดี่ยว แต่ขาดไม่ได้เมื่อทำงานกับผู้อื่น)
เมื่อคุณทราบว่าโมดูลใดที่คุณต้องการเขียนภายใน บริษัท คุณจะทำกระบวนการเดียวกัน คิดชิ้นส่วนของแต่ละโมดูลว่าควรประกอบเข้าด้วยกันอย่างไรและคุณจะเขียนเองอย่างไรและจะไปที่ใด ทำสิ่งต่าง ๆ ต่อไปเรื่อย ๆ จนกระทั่งแต่ละชิ้นมีขนาดเล็กพอที่คุณจะเก็บไว้ในใจเพื่อให้คุณพูดว่า "ใช่ฉันสามารถเขียนมันได้!" แล้วทำเช่นนั้น ในขณะที่คุณทำเช่นนั้นคุณจะพบกับอุปสรรคที่ไม่คาดคิดในการที่ชิ้นส่วนต่าง ๆ ของโปรแกรมเข้าด้วยกัน สิ่งเหล่านี้จะทำให้คุณหงุดหงิด แต่มันเป็นโอกาสสำหรับคุณที่จะเรียนรู้เพิ่มเติมเกี่ยวกับงานฝีมือของคุณและควรได้รับการดูด้วยวิธีนั้น
เริ่มแรกคุณจะสามารถเก็บโปรแกรมเล็ก ๆ ของคุณเท่านั้น - พูดฟังก์ชั่นส่วนบุคคล - ในใจของคุณและดังนั้นคุณจะต้องทำลายสิ่งต่าง ๆ ลงก่อนที่จะเริ่มการเข้ารหัส เมื่อคุณได้รับประสบการณ์คุณจะคิดในฟังก์ชั่นมากกว่าที่จะต้องคิดเกี่ยวกับฟังก์ชั่นและเริ่มคิดเกี่ยวกับวัตถุ แล้วคุณจะคิดในวัตถุและความคิดเกี่ยวกับโมดูลขนาดใหญ่ ในที่สุดคุณจะคิดในโมดูลและคิดเกี่ยวกับโปรแกรมทั้งหมดจริงใหญ่
แล้วคุณจะค้นพบว่าคุณยังมีอะไรอีกมากมายให้เรียนรู้ ... แต่มันก็เป็นไป ถ้าในฐานะโปรแกรมเมอร์คุณหยุดเรียนรู้คุณล้าสมัยและจะถูกแทนที่ด้วยโมเดลที่ใหม่กว่า
อย่างไรก็ตามไม่ต้องกลัวและไม่ต้องกังวลหากเสียงนี้ ... น่ากลัวหรือเป็นไปไม่ได้และคุณไม่ต้องการเป็นโปรแกรมเมอร์จริงๆ มันไม่ได้สำหรับทุกคน ฉันรักดนตรีและของหวานและฉันสามารถเล่นกุญแจได้เล็กน้อยและปรุงอาหารบางอย่าง แต่ฉันไม่เต็มใจที่จะใส่เวลาในการเป็นนักดนตรีที่ยอดเยี่ยมหรือเป็นพ่อครัวมืออาชีพ
หากปรากฎว่าคุณไม่ต้องการเป็นโปรแกรมเมอร์ที่เขียนแอปพลิเคชันเดสก์ท็อปขนาดใหญ่ที่แท้จริงและมีงานด้านการเขียนโปรแกรมประเภทอื่น ตัวอย่างเช่นคุณอาจเป็นโปรแกรมเมอร์ที่ฝังตัว มีความท้าทายที่ชัดเจนและน่าสนใจที่เกี่ยวข้องกับการเขียนโปรแกรมฝังตัวและคุณกำลังทำงานที่มีประโยชน์ แต่โดยทั่วไปแล้วโปรแกรมนั้นค่อนข้างเล็กกว่าแอปพลิเคชันเดสก์ท็อป หรือคุณสามารถเขียนเว็บแอปพลิเคชัน บนเว็บนั้นเป็นเรื่องง่ายที่จะรวมฟังก์ชั่นเล็ก ๆ น้อย ๆ เข้าด้วยกันดังนั้นคุณสามารถเขียน (เช่น) ระบบแสดงความคิดเห็นบนเว็บและมันจะมีประโยชน์แม้ว่ามันจะไม่ใช่เว็บแอปพลิเคชั่นทั้งหมด มันเป็นเรื่องง่ายที่จะปรับปรุงเนื้อหาบนเว็บเพิ่มขึ้นเช่นกันดังนั้นคุณจึงสามารถเริ่มต้นด้วย (พูด) ไคลเอ็นต์เว็บเมลพื้นฐานและเมื่อเวลาผ่านไปมันก็กลายเป็น Gmail อย่างเช่น (แต่อย่าทำอย่างนั้นเพราะคุณจะแข่งขันกับ Gmail)
หากคุณไม่ต้องการเป็นโปรแกรมเมอร์เลย แต่ก็ยังต้องการทำงานกับคอมพิวเตอร์อยู่อาจเป็นไปได้ที่คุณจะเข้าไปทำงานด้านไอทีหรืองานด้านเทคนิคอื่น ๆ ในกรณีเหล่านี้การรู้ว่าการเขียนโปรแกรมมากเท่าที่คุณทำมีประโยชน์มากเพราะเพื่อนของคุณอาจไม่ได้มีอะไรมากมาย หรือคุณรู้ไหมว่ากลายเป็นนักดนตรีถ้าสิ่งนั้นดึงดูดเพราะ (เช่นสาขาส่วนใหญ่) มันเกี่ยวข้องกับคอมพิวเตอร์ทุกวันนี้ เขียนโปรแกรมเล็ก ๆ น้อย ๆ ที่จัดการไฟล์เสียงหรือ MIDI ด้วยวิธีที่ชาญฉลาดหลายแบบทำให้คุณเป็นนักดนตรีที่ดีขึ้น คุณจะพบว่าทักษะการเขียนโปรแกรมใด ๆ ก็ตามที่คุณสามารถนำไปใช้ในหลายสาขาเพื่อทำให้คุณดีขึ้นในงานของคุณ