Đối với tôi, nó giúp chia nhỏ một phần mềm lớn hơn thành nhiều phần nhỏ hơn. Và sau đó chia những khối đó thành những phần nhỏ hơn và cứ thế. Mỗi chương trình phần mềm là một tập hợp các mẩu logic nhỏ.
Hãy xem xét một blog, ví dụ. Bạn muốn có thể tạo và chỉnh sửa bài viết mà người khác có thể đọc. Ngay lập tức bạn có thể chia dự án thành các phần quản trị và công cộng. Tối thiểu, quản trị viên sẽ yêu cầu người dùng quản trị viên, trang đăng nhập và phần quản lý blog. Phần để quản lý blog có thể được chia thành giao diện CRUD (Tạo, Đọc, Cập nhật, Xóa). Tạo một bài đăng blog mới sẽ yêu cầu kiểm tra để đảm bảo người dùng quản trị viên có các đặc quyền, biểu mẫu, xác thực mẫu và khả năng lưu vào cơ sở dữ liệu. Và như thế.
Bạn càng phá vỡ một vấn đề hoặc một tính năng, nó càng trở nên dễ quản lý hơn. Đó là sự chia rẽ và chinh phục. Khi bạn đã có thể vạch ra phần mềm của mình như thế này, bạn có thể xem cách các phần mềm khác nhau tương tác với nhau. Bạn có thể lặp lại mã ở đâu? Những gì có thể được trừu tượng hóa? Đây phải là một quá trình lặp lại cả khi bạn lập kế hoạch và khi bạn tự viết mã.
Tôi khuyên bạn nên tìm hiểu bộ tính năng tối thiểu của bạn là gì để bắt đầu và thực hiện điều đó trước khi thêm các phần khác vào nó. Bạn sẽ muốn mã hóa phòng thủ để những thay đổi trong tương lai sẽ không quá khó khăn, nhưng đồng thời, bạn không muốn triển khai một nửa tính năng có thể không bao giờ được hoàn thành. Đó là một khó khăn để đi giữa linh hoạt và sẵn sàng tàn nhẫn giết chết những người thân yêu của bạn, để mượn một tài liệu tham khảo văn học. Làm tốt với hành động cân bằng cụ thể đó chỉ đến từ kinh nghiệm.
Và đó là những gì nó được đưa ra, như các câu trả lời khác đã đề cập: kinh nghiệm. Cách duy nhất để có được nó là chỉ bắt đầu. Đừng lo lắng quá nhiều về việc làm cho nó hoàn hảo ngay từ đầu. Đầu tiên làm cho mã hoạt động, sau đó làm cho nó đẹp, sau đó làm cho nó nhanh.
Ngoài ra, không giống như đoạn này, cuối cùng đừng giải quyết vấn đề bảo mật. Bạn nên có ý tưởng về cách phần mềm của bạn có thể bị xâm phạm, nhưng khi bắt đầu, không bao giờ tin tưởng bất kỳ đầu vào nào của người dùng.