Kết hợp đúng kế hoạch và lập trình cho một dự án mới


10

Tôi sắp bắt đầu một dự án mới (một trò chơi, nhưng điều đó không quan trọng). Ý tưởng cơ bản là trong đầu tôi nhưng không phải tất cả các chi tiết.

Tôi không muốn bắt đầu lập trình mà không có kế hoạch, nhưng tôi nghiêm túc chống lại sự thôi thúc của mình chỉ làm điều đó. Tôi muốn một số kế hoạch trước đây để ngăn chặn tái cấu trúc toàn bộ ứng dụng chỉ vì một tính năng mới mà tôi có thể nghĩ là yêu cầu nó. Mặt khác, tôi không muốn lập kế hoạch nhiều tháng (thời gian rảnh) và bắt đầu điều đó bởi vì tôi có một chút sợ rằng tôi sẽ mất động lực trong thời gian này.

Những gì tôi đang tìm kiếm là một cách kết hợp cả hai mà không có cái nào thống trị cái kia. Tôi có nên nhận ra dự án theo cách của scrum? Tôi có nên tạo câu chuyện người dùng và sau đó nhận ra chúng? Tôi có nên làm việc theo tính năng? (Tôi có một số kinh nghiệm về scrum và cách "đặc tả mã" cổ điển.)

Cập nhật : Làm thế nào về việc bắt đầu với một "nhấp chuột giả" và thực hiện các chức năng sau này?

Câu trả lời:


5

Bạn đang đi đúng hướng. Không cần phải mất nhiều tháng để lập kế hoạch, nhưng bạn chắc chắn nên có một số loại kế hoạch.

Lập kế hoạch sẽ giúp bạn sắp xếp suy nghĩ của mình, xác định các công nghệ bạn có thể cần, làm rõ các điểm rắc rối và đưa ra lộ trình để làm việc từ đó bạn có thể chia thành các mục tiêu có thể đo lường được.

Ngoài ra, bạn có thể lập kế hoạch trong vài ngày chỉ để phát hiện ra rằng điều này là lãng phí thời gian của bạn. Có lẽ trong khi lập kế hoạch, bạn nhận ra rằng bạn đang rời khỏi giải đấu của mình hoặc những gì bạn đang cố gắng không thể được tiếp thị. Bây giờ tốt hơn là tìm ra điều đó để bạn có thể đầu tư lại thời gian của mình vào những ý tưởng khác mà bạn có, thay vì đi xuống con đường này chỉ để bị lạc trong rừng, được bao quanh bởi những dây leo mã và những chuỗi logic có thể vặn vẹo trong não bạn thành nút thắt.


Nền tảng nhắm mục tiêu là công việc hàng ngày của tôi, vì vậy tôi biết hầu hết các công nghệ tôi muốn sử dụng. Tôi đoán tôi sẽ sử dụng scrum đơn giản và một kế hoạch cơ bản. Vì vậy, tôi có thể bắt đầu bằng một số tồn đọng và thực hiện kế hoạch trên mỗi lần lặp.
WarrenFaith

Bạn cứ viết sai "lập kế hoạch" sai. Chỉ cần nghĩ rằng tôi chỉ ra rằng vì tôi không thể chỉnh sửa nhận xét của bạn :) Nhưng vâng, tôi nghĩ rằng scrum là một cách tiếp cận tuyệt vời vì nó duy trì tính linh hoạt và cho bạn cơ hội để quyết định xem nó có đáng để nỗ lực tiếp tục dự án hay không.
jmort253

Oo Trong tiếng Đức thì ngược lại: lập kế hoạch với một n và lập trình với hai m ...: D Cảm ơn!
WarrenFaith

@WarrenFaith - Xin lỗi! Đó là chủ nghĩa dân tộc của tôi sắp ra đời! Cảm ơn đã chỉ ra sai lầm của tôi;)
jmort253

11

Lập kế hoạch sản phẩm khả thi tối thiểu , và thực hiện điều đó. Sau đó lắng nghe người dùng của bạn và lập kế hoạch nâng cao logic tiếp theo và thực hiện điều đó. Nói lại.


3
.... và mỗi khi bạn có một ý tưởng cho một cái gì đó mà bạn nghĩ sẽ tuyệt vời, chỉ cần viết ra ý tưởng đó vào scrum-backlog nhưng không thực hiện cho đến khi sản phẩm khả thi tối thiểu được thực hiện.
k3b

câu hỏi chính vẫn là tôi nên lập kế hoạch sâu sắc như thế nào. Nếu bạn cũng có thể cho tôi lời khuyên đó, bạn đã nhận được câu trả lời.
WarrenFaith

1
@WarrenFaith: tính năng - >> câu chuyện - >> trường hợp thử nghiệm.
Steven A. Lowe

4

Cho dù bạn dành bao nhiêu thời gian để lập kế hoạch và thiết kế chương trình của mình, bạn vẫn luôn kết thúc việc viết lại các phần của chương trình. Nó giống như trọng lực, không thông minh từ chối sự tồn tại của nó.

Người ta phải nhận ra rằng tái cấu trúc là một phần bình thường của sự phát triển và đó chỉ là vấn đề quyết định khi bạn thực hiện nó. Đợi lâu và bạn kết thúc với một lượng lớn mì spaghetti, cầu xin viết lại hoàn chỉnh. Không vui.

Đề nghị của tôi là lập kế hoạch một chút nhưng bắt đầu mã hóa càng sớm càng tốt và tái cấu trúc, tái cấu trúc, tái cấu trúc để giữ mã theo hình dạng. Nguyên tắc DRY (không lặp lại chính mình) là một chỉ số tuyệt vời cho điều đó.


Cảm ơn vì đã trả lời. Tôi biết rằng tái cấu trúc không có gì bất thường nhưng tôi không muốn ngăn chặn tái cấu trúc do bỏ lỡ kế hoạch.
WarrenFaith

@Warren - không lập kế hoạch không ngăn chặn tái cấu trúc. Bạn có thể mã hóa giải pháp trên máy tính hoặc cố gắng mã hóa nó trong đầu hoặc trên giấy. Tôi nghĩ rằng cả hai đều không hiệu quả. Bắt đầu viết mã, biết bạn sẽ thay đổi nó sau.
kevin cline

@kevin cline: Ok, hãy tạo sự khác biệt giữa tái cấu trúc mã hiện có cho tính năng mới hoặc cải tiến và viết lại gần như toàn bộ ứng dụng cho một tính năng mới. Tôi có thể sống với người thứ nhất, không thực sự với người thứ hai ..
WarrenFaith

@WarrenFaith: Miễn là mã chặt chẽ và có hình dạng, bạn sẽ có thể tránh viết lại. Chỉ có thời gian tôi thấy viết lại là khi hệ thống trở thành một quả bóng lớn (không tái cấu trúc), hoặc thay đổi kỹ thuật cơ bản (thay đổi nền tảng).
Martin Wickman

3

Khi tôi ở vị trí này, đôi khi tôi sử dụng TDD (phát triển theo hướng kiểm tra) và bắt đầu lên kế hoạch cho một số thử nghiệm cho phần phức tạp nhất của hệ thống mà tôi đang phát triển. Ngoài ra, tôi có thể kết hợp một số mã giả cấp cao, một lần nữa cho các khu vực phức tạp nhất. Tôi thấy quá trình này mang lại cho tôi một kế hoạch hành động lỏng lẻo và giúp tôi xác định khu vực nào có khả năng gây tốn thời gian nhất.

Đối với tôi phương pháp này hoạt động vì nó sống ở đâu đó giữa mã hóa và lập kế hoạch. Khi bạn có ý tưởng thử nghiệm và / hoặc mã giả, bạn có thể làm việc qua từng phần logic và triển khai mã. Trước tiên tôi thường giải quyết phần khó nhất của một giải pháp được đề xuất, bởi vì phần khó nhất là tính năng cốt lõi của ứng dụng và bạn luôn có thể trì hoãn mọi tiếng chuông và còi.

Vì bạn nhận xét rằng hầu hết các mã nằm trong đầu bạn và bạn đã sẵn sàng lao vào và lập trình, sử dụng phương pháp này có thể giúp bạn tập trung vào từng phần mà toàn bộ tâm trí của bạn không bị hệ thống che mờ.

Để tóm tắt ngắn gọn hơn, trước tiên, người ta có thể nói "giải quyết phần khó nhất, phân chia và chinh phục, bằng mã giả và / hoặc kế hoạch TDD"!


Tôi không phải là một fan hâm mộ của TDD nhưng dù sao cũng cảm ơn!
WarrenFaith

Tôi không nhất thiết phải nói sử dụng TDD, quan điểm của tôi là nó là thứ tôi sử dụng làm cấu trúc để "lập kế hoạch" cho mã của mình. Bằng cách đó, tôi sẽ không nhảy thẳng vào việc viết mã của mình và tôi không mất nhiều thời gian để viết các tài liệu / kế hoạch dự án hàng loạt quá xa so với mã hóa thực tế. Đó là về việc tìm kiếm phương tiện hạnh phúc. Bạn có thể đạt được điều tương tự về nguyên tắc với bút và giấy. Tôi cũng nên chỉ ra rằng tôi không viết một bài kiểm tra cho MỌI THỨ - chỉ những khu vực phức tạp hơn.
BradB

3

Chỉ cần cố gắng để làm cho mã mô-đun. Bất cứ điều gì khác mà bạn có kế hoạch có khả năng bị ném ra trong lần lặp lại tiếp theo.


2

Tôi sẽ khuyên bạn nên viết ý tưởng của bạn xuống ít nhất. Tùy thuộc vào quy mô của dự án, rất nhiều kế hoạch chính thức có thể không được yêu cầu. Tuy nhiên, nếu nó rất lớn, bạn có thể muốn tự cứu mình và dành một vài ngày để lên kế hoạch chuyên sâu hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.