Nếu tôi không có ý tưởng hay để thực hiện một tính năng thì sao? [đóng cửa]


32

Tôi đang làm việc trên ứng dụng của riêng mình và tôi bị mắc kẹt. Tôi phải triển khai một tính năng nhưng tôi không thể tìm thấy một cách tiếp cận tốt để thực hiện tính năng này. Tôi đã suy nghĩ về nó trong một vài ngày, và không có suy nghĩ tốt nào xuất hiện. Tìm kiếm trên Internet không cho tôi cảm hứng.

Tôi cần phải tiếp tục, nhưng tôi muốn biết, điều gì là tốt nhất:

  • Suy nghĩ nhiều hơn, chờ đợi nhiều hơn và tiếp tục tìm kiếm cách tiếp cận tốt nhất
  • Dừng lãng phí thời gian và bắt đầu với thiết kế kém, bao gồm mọi thứ bằng các bài kiểm tra

Bạn nghĩ sao? Như tôi đã nói trước đây, tôi đang làm việc trên ứng dụng của riêng mình. Tôi không có bất kỳ thời hạn nào, nhưng tôi cũng muốn hoàn thành mã hóa ứng dụng càng sớm càng tốt.



12
@gnat: Những câu hỏi khác liên quan đến các tình huống mà người hỏi đã biết cách triển khai một số tính năng một cách sạch sẽ, nhưng có thể muốn hy sinh một thiết kế tốt để nuôi ong "nhanh và bẩn". Tuy nhiên, câu hỏi này mô tả một tình huống khác, đó là về cách giải quyết vấn đề nói chung khi bạn không tìm thấy một điểm tốt để bắt đầu, vì vậy IMHO không trùng lặp.
Doc Brown

lưu ý: nếu ứng dụng thành công, bạn sẽ không bao giờ "hoàn thành mã hóa" và các tính năng sẽ được thiết kế lại. Vì vậy, tôi sẽ đi với việc thực hiện nó theo cách tốt nhất mà tôi có thể bây giờ.
ren

Câu trả lời:


41

Ngoài việc nói chuyện với mọi người về nó (câu hỏi gợi ý bạn không có đồng nghiệp trong dự án), tôi thường thấy đó là một cách tiếp cận tốt để tập trung vào những điều tôi có thể làm.

Thông thường có một phần của mã mà tôi biết tôi phải viết bằng mọi cách. Những thứ tôi chưa biết cách viết, sau đó được thay thế bằng các cuống có thể trả về kết quả giả hoặc sử dụng một xấp xỉ đủ tốt để kiểm tra phần còn lại.

Điều này giúp bạn làm việc hiệu quả. Và đến lúc bạn cần thực hiện phần còn thiếu, bạn có giao diện. Và bạn đã viết rất nhiều mã xung quanh vấn đề, trong cùng một miền vấn đề, điều này thường giúp tôi tạo ra ý tưởng: bạn biết chính xác hơn những gì bạn cần để xuất và những đầu vào nào khác có sẵn nếu nó giúp giải quyết vấn đề . Ngoài ra, thường kết luận là phần còn thiếu không cần phải bao quát tất cả như suy nghĩ ban đầu.


6
Nhược điểm của việc viết mã rủi ro nhất, ít hiểu nhất cuối cùng là bạn có thể phát hiện ra rằng không thể giải quyết vấn đề hoặc chỉ có thể giải quyết nó với những thay đổi đáng kể đối với kiến ​​trúc của chương trình, dẫn đến rất nhiều nỗ lực lãng phí.
Rich Smith

1
Nhược điểm khác của phương pháp này đôi khi dẫn bạn đến, "Tôi có thể giải quyết vấn đề X. Tất cả những gì còn lại là làm Y." trong thực tế, Y không khả thi và giải pháp thực sự là Z.
Brian

@RichSmith, Brian: Nó xảy ra, mặc dù hiếm khi bạn hỏi tôi. Sau đó, nó có thể cung cấp cho bạn để hiểu rõ hơn về lý do tại sao phần còn thiếu rất khó, giúp cải thiện ước tính của bạn. Và tôi sẽ không đề nghị đưa vào các tuần làm việc dựa trên sự phân chia trách nhiệm đầu cơ và tùy tiện.
jv-Jan de Vaan

Mặc dù đó có phải là nhược điểm hay không. thời gian của bạn đã được dành tốt hơn không khám phá vấn đề ở tất cả? hoặc do bạn ngồi xung quanh đoán những gì sẽ làm việc? Tôi nghĩ rằng đó là cách thực hành tốt để viết các nguyên mẫu nhanh, thử công cụ và để thất bại nhanh. đó là cách duy nhất để biết chắc chắn và tích lũy kinh nghiệm cho các tình huống tương tự trong tương lai
sara

14

Nếu tìm kiếm thất bại, bạn luôn có thể thực hiện bằng cách sử dụng ý tưởng đầu tiên (không nhất thiết là tốt nhất) mà bạn có, sau đó cấu trúc lại nó sau khi bạn tìm thấy phương pháp phù hợp.

Đây là cách tiếp cận đúng đắn, vì ngay cả khi bạn tìm thấy thứ gì đó có vẻ như là một ý tưởng tốt, nó có thể trở nên tồi tệ sau này. Hoặc nó có thể tốt vào thời điểm đó, nhưng sau đó bạn tìm thấy một cái gì đó tốt hơn nhiều. Sau đó, bạn sẽ vẫn phải cấu trúc lại.

Khi làm điều này, hãy đảm bảo thiết kế và thực hiện theo cách dễ dàng để tái cấu trúc. Nếu bạn làm đúng cách, bạn sẽ chỉ phải thay đổi phần có vấn đề và không bắt đầu lại từ đầu.


1
Nó dường như được giả định trong bài viết này, nhưng tôi muốn thêm rằng nó rất quan trọng là bạn viết mã của mình theo cách dễ dàng để tái lập yếu tố.
c_maker

@c_maker Vâng, tất nhiên rồi. Mặt khác, không có nghĩa gì để viết lại mọi thứ sau này từ đầu. Tôi sẽ thêm nó vào câu trả lời. cảm ơn
BЈовић 12/12/13

10

Còn hỏi người khác thì sao? Ví dụ: bạn có thể mô tả vấn đề của mình ở đây hoặc, nếu đó là vấn đề triển khai hơn, trên stackoverflow.com và hỏi ý tưởng. Đôi khi nó sẽ giúp bạn nếu bạn bắt đầu viết ra vấn đề, ngay cả khi bạn không nhận được câu trả lời hay.


Nếu đó là Giao diện người dùng có vấn đề, thì cũng có ux.stackexchange.com
Rob Church

nếu bạn hỏi về SO thì câu trả lời sẽ có bản quyền theo Creative Commons và tùy thuộc vào dự án, mã đó có thể không sử dụng được.
smcg

2
Tư vấn có thể có bản quyền? Chắc chắn tác giả sẽ sử dụng nó như một hướng dẫn, không phải sao chép / dán?
grizwako

@smcg: chủ đề đã được thảo luận ở đây: meta.stackexchange.com/questions/12527/iêu - Nhưng thành thật mà nói, nếu điều đó thực sự trở thành một vấn đề, tôi nghĩ người ta có thể phá vỡ điều này bằng cách GrizzLy đề xuất.
Doc Brown

@DocBrown IANAL vì vậy tôi không thể nói chắc chắn rằng điều đó có giữ được không, nhưng đôi khi thật tốt khi nhầm lẫn về mặt thận trọng.
smcg

2

Một vài ý tưởng:

  • Brainstorm
    Viết mọi ý tưởng ngu ngốc bạn có (trên giấy hoặc bảng trắng). Bỏ qua những cái mà bạn chắc chắn sẽ không hoạt động. Viết tiếp đi. Bao gồm các giải pháp cho các vấn đề thực tế có liên quan. Ví dụ, trộn sơn, hoặc đặt một cái đinh vào tường, hoặc thay dầu của bạn có giải quyết được một sự mô phỏng trong thế giới thực không?
  • Yêu cầu trợ giúp
    Google nó, hỏi ở đây, hỏi bạn bè đam mê của bạn, vv
  • Giải quyết vấn đề liên quan
    Bạn không thể giải quyết các vấn đề, nhưng bạn có thể giải quyết một đơn giản hơn nhiều? Hoặc một phức tạp như nhau, liên quan? Làm vậy đi. Sau đó thực hiện các thay đổi nhỏ, riêng lẻ để đưa giải pháp của bạn đến gần hơn với giải pháp mong muốn.
  • Chỉ cần bắt đầu viết từ bên ngoài bất
    kể giao diện của bạn là dịch vụ web, trang web, biểu mẫu gốc, máy ảnh, bàn phím, màn hình hay bất cứ thứ gì , có giao diện. Viết một vài dòng mã / mã giả để làm cho giao diện hoạt động. Sử dụng các phương pháp ma thuật chưa tồn tại. Đệ quy làm tương tự cho mỗi phương pháp ma thuật không tồn tại. Tối ưu hóa sau.

2

Không có gì sai khi đi với giải pháp xấu. Thường thì bạn không biết đủ về miền vấn đề tại thời điểm đó. Đi cùng với một giải pháp tồi cho phép bạn tiếp tục và tìm hiểu thêm về vấn đề. Sau đó, bạn vẫn có thể quay lại và cấu trúc lại giải pháp đầu tiên của bạn.


1

Tôi luôn cố gắng và xem xét nó từ góc độ người dùng cuối. Rất dễ dàng để nghĩ ra một ý tưởng "tuyệt vời" như một nhà phát triển mà bạn có thể dành nhiều năm làm việc trên đó thực sự bổ sung rất ít vào ứng dụng của bạn.

Lý tưởng nhất là bạn muốn vạch ra tất cả các tính năng trong ứng dụng của mình và ưu tiên chúng theo lợi ích cho người dùng cuối, cá nhân tôi sử dụng MOSCoW , mặc dù bạn giữ phương pháp ưu tiên của mình giống nhau trong suốt quá trình có thể đơn giản như 1 - 5.

Sau đó, nếu bạn vẫn thấy rằng tính năng này là một phần thiết yếu của ứng dụng của bạn thì như mọi người đã nói, hãy hỏi! Tôi không nghĩ rằng tôi đã từng gặp phải một vấn đề mà cuối cùng đã không được giải quyết bởi một đồng nghiệp hoặc những người tốt bụng trên Stackoverflow.


Thật tuyệt, vì tôi đến từ Moscow :)
user21974 11/12/13

Có bạn đi một dấu hiệu của nó!
Mrk Fldig

1

Ý kiến ​​của tôi là: không bao giờ viết mã mà chỉ hoạt động! Nó sẽ rất khó để tái cấu trúc trong tương lai.

Đó là một cách tiếp cận thực sự phổ biến cho các nhà phát triển (và tất nhiên là PM hoặc ông chủ). Tôi đã nghe rất nhiều thời gian "chỉ làm cho nó hoạt động" hoặc "Tôi sẽ sửa chữa sau" (sau này khi ??? không bao giờ!) Nhưng, tôi nghĩ rằng chất lượng không phải là thứ bạn không thể có được ở giữa dự án.

Đề nghị của tôi là, ngừng suy nghĩ về vấn đề của bạn trong một thời gian .... làm điều gì đó khác, và đôi khi, các giải pháp tự đưa ra.

Btw, yêu cầu đồng nghiệp hoàn toàn là một cách tuyệt vời để giải quyết rắc rối của bạ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.