Những gì bạn đang nói là kỹ thuật phần mềm nhiều hơn là lập trình. Đó là một chút kiến trúc, một chút "thực tiễn tốt nhất" và "các mẫu thiết kế", một chút làm việc với những người khác. Mặc dù có những cuốn sách có thể giúp đỡ, nhưng phần lớn đến từ kinh nghiệm. Không ai bắt đầu viết, nói, Microsoft Word.
Hãy nghĩ về một chương trình lớn, "thực sự" mà bạn muốn viết. Bây giờ hãy nghĩ về các phần khác nhau mà bạn cần xây dựng để làm cho nó hoạt động theo cách bạn muốn. Ví dụ, trong trò chơi góc nhìn thứ nhất hiện đại, bạn sẽ cần một công cụ đồ họa 3D, AI không phải người chơi, mô-đun âm nhạc / âm thanh, công cụ vật lý và mô-đun cấp cao nhất để thực thi các quy tắc của trò chơi (biết "bản đồ", cách các nhân vật khác nhau tương tác, v.v.). Và sau đó là tác phẩm nghệ thuật và thiết kế nhân vật và âm nhạc, không ai trong số đó là mã mà là cần thiết để trò chơi được hoàn thành.
Bây giờ: Cái nào trong số này bạn sẽ tự xây dựng và bạn sẽ nhận được ở nơi nào khác? Hầu hết các dự án phần mềm lớn không được lập trình từ đầu. Có lẽ bạn sẽ sử dụng một công cụ 3D và mô-đun âm nhạc / âm thanh sẵn có và chỉ lập trình những thứ làm cho trò chơi của bạn trở nên độc đáo. OK, vì vậy bạn phải tìm ra mô-đun bên thứ ba nào bạn sẽ sử dụng, sẽ liên quan đến các yếu tố như chi phí, ngôn ngữ họ làm việc với, tính năng nào họ có, cách thiết kế API của họ (nghĩa là hoàn thành nó như thế nào là, nó phù hợp với phong cách lập trình cá nhân của bạn như thế nào, v.v.). Có thể bạn sẽ viết "bằng chứng về khái niệm" hoặc các chương trình thử nghiệm bằng cách sử dụng một hoặc hai ứng cử viên cho các mô-đun của bên thứ ba khác nhau để đảm bảo họ sẽ làm tất cả những điều bạn cần và dễ dàng cho bạn sử dụng.
Ngoài ra, ngay cả mã bạn muốn tự viết có thể là một công việc quá lớn để bạn một mình hoàn thành trong khung thời gian bạn có trong đầu. Bạn cần bao nhiêu lập trình viên khác làm việc trong dự án? Làm thế nào bạn sẽ chia công việc? Làm thế nào các mô-đun khác nhau sẽ được thiết kế để tất cả chúng phù hợp với nhau mặc dù chúng được viết bởi những người khác nhau? Làm thế nào tất cả các bạn sẽ làm việc trên cùng một mã nguồn mà không xóa sạch các thay đổi của nhau (câu trả lời: kiểm soát phiên bản, cực kỳ hữu ích khi bạn làm việc một mình nhưng không thể thiếu khi làm việc với người khác).
Khi bạn đã tìm ra mô-đun nào bạn muốn viết trong nhà, bạn thực hiện quy trình tương tự. Chỉ ra các phần của mỗi mô-đun, làm thế nào chúng nên khớp với nhau, và bạn sẽ tự viết và những gì bạn sẽ nhận được ở nơi khác. Tiếp tục phá vỡ mọi thứ cho đến khi mỗi mảnh đủ nhỏ để bạn giữ trong tâm trí, để bạn nói, "vâng, tôi có thể viết điều đó!" Và sau đó làm như vậy. Khi bạn làm, bạn sẽ gặp những trở ngại không lường trước được trong cách các phần khác nhau của chương trình của bạn khớp với nhau. Đây sẽ là những bực bội, nhưng chúng là cơ hội để bạn tìm hiểu thêm về nghề của bạn, và nên được xem theo cách đó.
Ban đầu, bạn sẽ chỉ có thể giữ các phần rất nhỏ trong chương trình của mình - giả sử, các chức năng riêng lẻ - trong tâm trí của bạn, và do đó bạn sẽ phải chia nhỏ mọi thứ trước khi bắt đầu viết mã. Khi bạn có được kinh nghiệm, bạn sẽ suy nghĩ về các chức năng thay vì cần phải suy nghĩ về các chức năng và bắt đầu suy nghĩ về các đối tượng. Và sau đó bạn sẽ suy nghĩ trong các đối tượng và suy nghĩ về các mô-đun lớn hơn. Cuối cùng, bạn sẽ suy nghĩ theo các mô-đun và suy nghĩ về các chương trình thực, lớn, thực.
Và sau đó bạn sẽ khám phá ra rằng bạn vẫn còn nhiều điều phải học ... nhưng cứ thế. Nếu, là một lập trình viên, bạn không bao giờ ngừng học hỏi, bạn đã lỗi thời và sẽ được thay thế bằng một mô hình mới hơn.
Dù sao, đừng sợ, và đừng lo lắng nếu điều này nghe có vẻ ... khủng khiếp hoặc không thể và rốt cuộc bạn không thực sự muốn trở thành một lập trình viên. Nó không dành cho tất cả mọi người. Tôi yêu âm nhạc và món tráng miệng, và tôi có thể chơi phím một chút và nấu một số món ăn, nhưng tôi không sẵn sàng dành thời gian để trở thành một nhạc sĩ tuyệt vời hoặc một đầu bếp bậc thầy.
Nếu hóa ra bạn không muốn trở thành một lập trình viên viết các ứng dụng lớn, thực, trên máy tính để bàn, thì có nhiều loại công việc lập trình khác. Bạn có thể trở thành một lập trình viên nhúng, ví dụ. Có những thách thức nhất định, thú vị liên quan đến việc viết các chương trình nhúng và bạn đang thực hiện công việc hữu ích, nhưng thông thường các chương trình này nhỏ hơn các ứng dụng trên máy tính để bàn. Hoặc bạn có thể viết các ứng dụng web. Trên Web, thật dễ dàng để gắn các bit chức năng lại với nhau, vì vậy bạn có thể viết (ví dụ) một hệ thống nhận xét Web và nó sẽ hữu ích ngay cả khi đó không phải là toàn bộ ứng dụng Web. Thật dễ dàng để cải thiện dần các công cụ trên Web, vì vậy bạn có thể bắt đầu với (giả sử) một ứng dụng thư Web cơ bản và theo thời gian, phát triển nó thành một cái gì đó như Gmail. (Nhưng đừng làm vậy, vì sau đó bạn sẽ cạnh tranh với Gmail.)
Nếu bạn không muốn trở thành một lập trình viên, nhưng vẫn muốn làm việc với máy tính, có thể bạn có thể đi vào CNTT hoặc một số lĩnh vực kỹ thuật khác. Trong những trường hợp này, việc biết lập trình nhiều như bạn đã làm là rất hữu ích, bởi vì các đồng nghiệp của bạn thậm chí có thể không có nhiều như vậy. Hoặc, bạn biết đấy, trở thành một nhạc sĩ nếu điều đó hấp dẫn, bởi vì (giống như hầu hết các lĩnh vực) nó liên quan đến máy tính ngày nay. Viết các chương trình nhỏ điều khiển các tệp âm thanh hoặc MIDI theo nhiều cách thông minh khác nhau, do đó giúp bạn trở thành một nhạc sĩ giỏi hơn. Bạn sẽ thấy rằng bất kỳ kỹ năng lập trình nào bạn có thể được áp dụng trong nhiều lĩnh vực để giúp bạn hoàn thành công việc tốt hơn.