Cách hiệu quả nhất để xử lý các thất bại liên quan đến phát triển là gì? [đóng cửa]


49

Tất cả chúng ta đã ở đó:

  • Dự án của bạn thất bại hoặc đã bị hủy bỏ.
  • Mã bạn đã dành nhiều ngày làm việc đã bị nhóm của bạn từ chối.
  • Các mẫu thiết kế bạn giới thiệu cho nhóm tạo ra sự hỗn loạn.
  • Mọi người đều bỏ qua ý tưởng của bạn.

Câu hỏi của tôi là, cách hiệu quả nhất để lập trình viên xử lý các lỗi liên quan đến phát triển như thế này là gì?


Là một phần của Sáng kiến ​​dọn dẹp thẻ có cấu trúc đang diễn ra, câu hỏi này đang được thảo luận trên trang web thảo luận meta của chúng tôi .

Câu trả lời:


79

Dự án của bạn thất bại.

Phát triển phần mềm rất dễ bị lỗi dự án và tùy thuộc vào mức độ nghiêm trọng, việc này được quản lý xử lý tốt nhất.

Nhiều dự án đã thất bại và nhiều dự án nữa sẽ thất bại, vì vậy hãy ghi chú lại! Tìm hiểu lý do tại sao dự án của bạn thất bại để bạn không mắc lỗi tương tự vào lần tới. Bạn học được nhiều điều từ những thất bại của bạn hơn là từ những thành công của bạn.

Những gì bạn đã dành ngày mã hóa đã bị nhóm của bạn từ chối.

Lưu công việc của bạn (để sau). Có hai khả năng: (a) Thật tệ, và thực tế nhiều người đã trả lời theo cùng một cách là dấu hiệu của điều này (b) Đó thực sự là thiên tài, nhưng vượt xa những gì mọi người đã quen hoặc có thể hiểu. Mọi người thường không thích những gì họ không hiểu. Có lẽ tốt hơn để hiển thị nó khi thời gian là đúng HOẶC ở một nơi khác với một "Văn hóa" khác

Không ai lắng nghe ý kiến ​​của bạn trong công ty của bạn.

Đây có lẽ là một ý tưởng tồi, HOẶC văn hóa không phù hợp với suy nghĩ của bạn. Hoặc di chuyển đến một nơi hỗ trợ văn hóa của bạn hoặc đánh giá phê bình ý tưởng của bạn một lần nữa (một cách khách quan mà không có sự thiên vị của riêng bạn) -> ý tưởng của tôi có thực sự tốt không? <- Giết cái tôi của bạn

Các mẫu thiết kế bạn đã giới thiệu với lực lượng trong nhóm của bạn đã tạo ra một mớ hỗn độn.

Thành thật mà nói, bạn đã cố gắng hết sức nhưng nó không thành ra cách bạn lên kế hoạch. Có thể tốt hơn để bắt đầu lại hoặc học hỏi từ những sai lầm trong thiết kế như một đội và tiến về phía trước.


29

Họ không thất bại - họ là những kinh nghiệm

Bạn học hỏi và phát triển từ kinh nghiệm của mình bằng cách phản ánh về cách họ làm cho bạn cảm thấy và nếu bạn muốn nhiều hơn cảm giác đó.

Nếu đó là một trải nghiệm tồi tệ (như danh sách mà bạn cung cấp) thì cảm giác tồi tệ đi kèm có lẽ là điều bạn sẽ muốn tránh (giả sử bạn không quá dày đến nỗi bạn không quan tâm đến tác động của hành động của mình).

Nhìn chung, đừng quá tham gia vào việc so sánh bản thân với người khác, họ cũng gặp nhiều rắc rối khi làm việc như bạn .


1
Chỉ hai từ: Học tăng cường .
Chảo

-1: Cả hai đều là kinh nghiệm thất bại.
Thomas Eding

14
  • Giữ bình tĩnh - đừng hoảng sợ, nó sẽ không làm mọi thứ tốt hơn
  • Kiểm soát thiệt hại - lưu những gì vẫn có thể được lưu
  • Học hỏi từ những sai lầm của bạn - làm lại sai một lần nữa có lẽ sẽ không làm cho nó hoạt động
  • Hãy xem xét một khởi đầu mới - bắt đầu nỗ lực tiếp theo của bạn mà không có ba lô thất vọng và cảm giác tội lỗi
  • Nhìn vào những thất bại lớn hơn - so với chuyến bay đầu tiên của Ariane 5 , thất bại của bạn là không đáng kể
  • Tham khảo ý kiến ​​một nhà trị liệu tâm lý nếu bạn không thể xử lý nó một mình

11

Bạn xây dựng một cái gì đó.

Đối với tôi (tôi không nghĩ nó phù hợp với tất cả mọi người), xây dựng một cái gì đó (truyện tranh, tranh vẽ, trò chơi nhỏ, bất cứ thứ gì) giống như xây dựng một chút tự tin để trở lại chiến đấu với thất bại. Nó cũng có thể là một cách tốt để thể hiện sự tức giận hoặc cay đắng của bạn hoặc bất kỳ cảm giác nào liên quan đến sự thất bại, nhưng theo cách "xây dựng".

Điều đó làm việc cho tôi anyway.


6

Vâng, bạn đã hỏi :) Từng người một:

* Your project failed.

Điều đó hầu như không mới. Tất cả chúng ta đều thất bại một cách riêng tư, và tất cả chúng ta đều thất bại trong quan điểm đầy đủ về các đồng nghiệp của mình. Bất cứ ai đã trải qua giáo dục tiểu học và trung học đều có kinh nghiệm này.

Nếu tôi không thể phạm sai lầm và mong đợi việc làm ổn định, bạn nên xem xét việc gửi một bản ghi nhớ đến HR cho họ biết rằng con người sẽ bị cấm xem xét trong tương lai.

Một số thất bại liên tiếp có nghĩa là bạn có nhu cầu và thông số kỹ thuật không hợp lý hoặc bạn không học hỏi từ những sai lầm của mình. Hoặc là kịch bản cầu xin hành động ngay lập tức.

Có thể hình dung rằng nhiều người đăng nhập vào một cái gì đó chỉ để kiếm được việc làm, sau đó tìm ra một số cách để thực hiện các yêu cầu.

* What you have spent days coding was rejected by your team.

Điều đó xảy ra. Như những người khác lưu ý, lưu nó. Làm lại lần nữa. Đây là lý do tại sao chúng tôi gọi nó là công việc. Tôi nghĩ, trong trường hợp này, có lẽ bạn không liên quan đến nhóm rất nhiều trong những gì bạn đang làm.

Nó cũng có thể là các yêu cầu thay đổi ngày hôm qua, hoặc một giờ trước. Điều này nên là một ngoại lệ, không phải là một tiêu chuẩn, tuy nhiên. Đánh giá ngang hàng là tàn bạo như nó là hữu ích. Nếu mã của bạn liên tục bị loại bỏ là 'không đầy đủ' (hoặc đại loại như thế), bạn nên dành nhiều thời gian hơn để chọn bộ não và liên quan đến người khác. Tôi tin rằng câu hỏi này là sai lầm trong hầu hết các cài đặt nhóm, trừ khi 'nhóm' là bất cứ điều gì ngoài tự mô tả.

* Nobody listens to your ideas in your company.

Một lần nữa, điều này cần bối cảnh. Bạn đã ở đó được bao lâu? Làm thế nào nhiều tin tặc đồng bào của bạn tin tưởng vào khả năng của bạn? Bạn đã từng nghĩ rằng những ý tưởng dẫn đến nhiều công việc hơn cho nhiều người có thể mời BẤT K reason lý do nào để loại bỏ nó? Tôi đã từng bỏ qua một cái gì đó vì nó chưa sẵn sàng IPV6, nhưng nó đã sử dụng một ổ cắm tên miền đơn giản trên thiết bị loopback (độc quyền). Người chìm đắm chỉ đơn giản là không thể làm gì thêm.

Ngoài ra, làm thế nào để bạn nói rõ chính mình? Bạn có thể kết bạn và gây ảnh hưởng đến mọi người?

* The design pattern you introduced with force in your team created a mess.

Do đó, tại sao lực lượng nên được tránh. Có thể nói chuyện không phải là điều kiện tiên quyết để có thể lắng nghe. Không có ý kiến ​​khác.


5

Oh boy, đó là rất nhiều nếu bạn thực sự có nghĩa là mọi thứ xảy ra với bạn!

CẢNH BÁO : Trong nhiều điểm dưới đây, bạn có thể cảm thấy như tôi chỉ trích bạn và rằng tôi muốn khiến bạn phải chịu trách nhiệm cho những hạnh phúc sai lầm và không xem xét các yếu tố bên ngoài. Tôi không. Chỉ là bạn không cung cấp nhiều chi tiết và tôi chỉ cung cấp danh sách kiểm tra các hành động cần thực hiện để đảm bảo mọi thứ không bị sai lệch. Tôi biết bản thân mình đã mắc rất nhiều lỗi (mọi người đều mắc phải) và chúng ta chỉ trở nên tốt hơn nếu chúng ta học hỏi từ họ. Và để học hỏi từ họ, chúng ta cần bắt đầu coi chúng là những sai lầm ngay từ đầu và chấp nhận trách nhiệm cho những gì đã sai về phía chúng ta. Chết tiệt, chấp nhận trách nhiệm cho những gì đã sai trong các bộ phận của người khác, bạn cũng có thể học hỏi từ đó.

Dự án của bạn thất bại

Bạn không thể làm gì nhiều để giảm thiểu nó ngay bây giờ.

Tuy nhiên, bạn có thể làm rất nhiều để tránh điều đó để tái sản xuất trong tương lai. Tôi khuyên bạn nên cố gắng cải thiện kỹ năng quản lý dự án và thời gian của bạn.

Một trong những cuốn sách có tỷ lệ tốt nhất ((lời khuyên hợp lệ) / trang) Tôi đã đọc về chủ đề này, trong khi có thể không phải là cuốn sách hay nhất, đó là Quản lý dự án cấp tiến của Rob Thomsett .

Bạn không thực sự chỉ định những gì dự án của bạn thất bại, nhưng tôi giả sử sự kết hợp của những thứ mang lại sự mất cân bằng trong tam giác chi phí / thời gian / Qualiy thông thường . Yếu tố quan trọng nhất trong mắt tôi là dẫn dắt dự án và sự phát triển trong khi luôn luôn liên lạc với cả các tác nhân kỹ thuật (nhà phát triển và người thử nghiệm) mà cả các bên liên quan của bạn. Quá nhiều dự án thất bại vì họ không lắng nghe các nhà tài trợ hoặc các bên liên quan và không thúc đẩy họ tham gia vào quá trình này.

Nếu họ không tham gia, bạn không thể biết họ muốn gì. Nếu bạn không thể biết họ muốn gì, bạn không thể cung cấp nó. Nếu bạn không cung cấp nó, họ sẽ không vui. Đó là một thất bại. Hơn nữa, nếu bạn không liên quan đến các bên liên quan, họ sẽ bị ngắt kết nối với thực tế của công nghệ phần mềm, nghĩa là họ không hiểu vấn đề của bạn. Nếu họ thường xuyên liên lạc với bạn, họ sẽ hiểu rõ hơn về những gì bạn phải giải quyết. Họ sẽ dễ hiểu hơn khi bạn nói với họ rằng tính năng "cười" nhỏ sẽ mất vài tháng. Họ có thể tin tưởng vào kế hoạch của bạn tốt hơn bởi vì họ đã giúp xây dựng nó. Một dự án không thể thành công chỉ với "thông số kỹ thuật ở đầu, dev, thử nghiệm, giao hàng ở cuối". Nó chỉ không bao giờ làm. Bạn có thể cung cấp những gì được yêu cầu trong thông số kỹ thuật,

Quan trọng nhất là, làm một hồi tưởng , và đảm bảo nó là ít bản ngã và không phải là một trò chơi đổ lỗi. Chỉ cần xác định vấn đề.

Những gì bạn đã dành nhiều ngày mã hóa đã bị nhóm của bạn từ chối

Tôi đã ở trong tình huống đó. Một lần nữa, bạn không thể làm gì nhiều để giảm thiểu điều đó ngoại trừ:

  • Giữ nó trong SCM cho sau này.
  • Có thể cố gắng đẩy các bit và mảnh nhỏ dần dần vào cơ sở mã chính thay vì tái cấu trúc lớn.

Nhưng có một số điều bạn có thể làm một lần nữa để ngăn chặn tình huống này:

  • Tại sao nó lại xảy ra? Lý do của sự từ chối là gì?
  • Hầu hết thời gian tôi thấy điều này xảy ra (và đó cũng là trường hợp của tôi), điều đó có nghĩa là nhà phát triển đã đi một mình hoặc ở chế độ mã hóa con bò và sản xuất những thứ không bao giờ được yêu cầu. Mã không xuất phát từ yêu cầu kinh doanh có thể lạ mắt và "tốt hơn", nhưng thường lãng phí thời gian và tiền bạc. Thêm vào đó, nó sẽ có giá cao hơn nữa nếu bạn tích hợp nó vì nó sẽ cần thử nghiệm lại. Hãy suy nghĩ như những người giao dịch với bạn tiền: bạn cũng phải hiệu quả ở cấp độ đó.
  • Chất lượng của phần mềm được sản xuất có thỏa mãn không? Nó có tuân thủ các tiêu chuẩn và quy ước trong hoạt động tại công ty của bạn không?
  • Bạn đã định kỳ (và thường xuyên!) Báo cáo cho người quản lý trực tiếp về điều này? Bạn có thỉnh thoảng trao đổi với các nhà phát triển khác của nhóm không? Nếu không, họ không biết gì về nó, sẽ là một chi phí lớn thời gian để họ đánh giá và xem xét nó ngay bây giờ. Nó KHÔNG tài khoản đến cùng một lúc cuối cùng. Giống như luôn cố gắng dọn dẹp căn hộ cho thuê của bạn và sau đó chỉ cố gắng dọn dẹp khi bạn chuyển đi: Đó là một công việc nhảm nhí, mệt mỏi, khó hơn so với thường xuyên và sẽ không được thực hiện thường xuyên đúng.
  • Bạn đã sản xuất thử nghiệm sản xuất? Bài kiểm tra đơn vị? Kiểm tra tích hợp?
  • Mã của bạn đã được kiểm tra vào SCM thường xuyên chưa? Có phải trong một ngành khác? Nó cần một nhánh khác hay nó có thể được thực hiện trong thân cây? Tắt mã cam kết thường là một dấu hiệu xấu. Rõ ràng đôi khi bạn bị cám dỗ để làm điều đó, nhưng bạn chỉ tự bắn vào chân mình.

Không ai lắng nghe ý kiến ​​của bạn trong công ty của bạn

Chà, có 2 lựa chọn ở đây, và chúng ta sẽ xem xét cả hai:

  • Ý tưởng của bạn là xấu.
  • Ý tưởng của bạn là tốt.

Chúng ta hãy bắt đầu cho rằng họ xấu (một lần nữa, tự phản ánh về điều đó và chấp nhận ý tưởng của bạn chỉ đơn giản là xấu có thể khó khăn, tôi biết). Bạn làm gì để thay đổi điều đó?

  • Tại sao bạn nảy ra ý tưởng? Là gì lý do ? Có một nhu cầu thực sự cho những gì ý tưởng của bạn cố gắng mang đến bàn?
  • Làm thế nào bạn nảy ra ý tưởng? Bạn đã tự làm điều đó? Bạn đã chia sẻ? Động não? Kế hoạch? Nguyên mẫu? (thực hiện những việc này theo đúng thứ tự. Nếu thất bại trên đường đi, sau đó loại bỏ ý tưởng, đừng tiếp tục. Hoặc ít nhất là không theo lịch trình làm việc của bạn.)

Ý tưởng chỉ là ý tưởng. Nếu bạn chỉ đề xuất chúng là ý tưởng và chúng bị từ chối, tôi không hiểu tại sao bạn lại cảm thấy tồi tệ về nó. Tuy nhiên, nếu bạn hành động theo chúng mà không thông báo cho bất kỳ ai và THÌ chỉ gửi ý tưởng của bạn và họ bị từ chối, rõ ràng tôi cảm thấy thất vọng vào thời điểm đó lãng phí. Và quản lý của bạn làm để!

Giả sử ý tưởng của bạn là tốt:

  • Bài thuyết trình của bạn có tốt không?
  • Cách của bạn để cung cấp các bài thuyết trình tốt? (Tôi là một nhà phát triển, tôi biết những gì tôi đang nói về: Chúng tôi đang gắt gỏng, kiêu ngạo , pedantic PITAs người luôn luôn đúng và với ai đó là khó có thể làm việc với vì thường của cái tôi không cân xứng của chúng tôi ).
  • Bạn có một kế hoạch để thực hiện nó? Bạn đã nghĩ về chi phí và thời gian? Bạn có nghĩ làm thế nào nó có lợi cho người dùng / khách hàng? Bạn có nghĩ làm thế nào nó ảnh hưởng đến doanh số bán hàng? Bạn có nghĩ làm thế nào để thực hiện ý tưởng đó có thể ảnh hưởng đến các dự án và ưu tiên khác? Bạn sẽ nói với tôi, "tại sao tôi phải làm tất cả những việc này, chúng là công việc của người quản lý của tôi và đội ngũ tiếp thị hoặc bán hàng?!" Ngoại trừ ngay bây giờ, bạn đang cố gắng thực hiện một phần của tất cả các công việc của họ.

Mẫu thiết kế mà bạn giới thiệu có lực trong nhóm của bạn đã tạo ra một mớ hỗn độn

  • Tại sao bạn lại giới thiệu mẫu?
  • Nếu nó tạo ra một mớ hỗn độn, thì có lẽ nó cũng vậy:
    • không phải là mô hình đúng,
    • không được thực hiện đúng
    • không được tích hợp đúng.
  • Làm thế nào bạn giới thiệu nó? Làm thế nào chính xác để bạn xác định trạng thái "lộn xộn"?
    • mã ít đọc hơn?
    • ít bảo trì?
    • bản dựng bị hỏng?
    • Có nhiều loại "mớ hỗn độn" khác nhau. Biết những gì mà lộn xộn có thể giúp để biết những gì thất bại trong đó là, và nếu đó là lỗi của các mẫu thiết kế của.

Ngoài ra, tôi có một chút ngạc nhiên bởi chính cách tiếp cận. Bạn đã phải thực sự thúc đẩy cho một mẫu thiết kế được giới thiệu? Điều đó có vẻ khá kỳ lạ. Một mẫu đã có sẵn hoặc bạn cần cấu trúc lại một phần giải pháp của mình theo mẫu. Bạn không đẩy nó như bạn việc thông qua một khuôn khổ hay công nghệ sẽ (như người đẩy thực sự khó khăn để có XML ở khắp mọi nơi, và bây giờ như mọi người bắt đầu đẩy để có thể viết HTML5 trên bìa sản phẩm của họ bằng chữ sáng lớn).

Tại sao bạn phải đẩy? Tại sao có sự kháng cự? Có lẽ nó đã được biện minh.

Bạn có thể cung cấp cho bạn các ví dụ rằng mẫu cụ thể này sẽ giúp cải thiện cơ sở mã của bạn theo những cách quan trọng (ví dụ: bằng cách kết hợp nó với một ví dụ về Tái cấu trúc cho Mẫu ).


Hoàn toàn không có ghi chú ngoài chủ đề nhưng đó là điều tôi nghĩ đến đầu tiên khi đọc tiêu đề của câu hỏi vì tôi nghĩ nó liên quan đến lỗi phần mềm ... Tôi có một phần mềm đã triển khai lớp BlackHole để quản lý một loại ngoại lệ rất đặc biệt ở một trong những các thành phần. Nó có vẻ như (và thực sự là) một hack rõ ràng kỳ lạ và bẩn thỉu, nhưng bản thân việc đặt tên rất tuyệt vời, tất cả chúng tôi đều đánh giá cao nó là một cách khá tuyệt vời để xử lý một thất bại! :)


@Rachel: cảm ơn bạn đã chỉnh sửa để phù hợp với nỗ lực META-SO của bạn. Tôi đã không nhận thấy câu hỏi đã được đặt lại từ đó.
haylem

3

Bước 1: Bạn có thể tức giận!

Đầu tiên, việc buồn bã hoặc tức giận khi gặp thất bại là điều dễ hiểu. Nếu đưa ra lời khuyên cho ai đó trong tình huống như vậy, rất có thể họ sẽ không muốn nghe "Chỉ cần vượt qua nó và tiếp tục" hoặc "Chỉ nghĩ đó là một cơ hội học tập".

Trong thực tế, tôi nghĩ rằng nó có thể khỏe mạnh và hữu ích để buồn bã và trút sự thất vọng của bạn, miễn là bạn làm điều đó một cách riêng tư hoặc với một người bạn. Mọi người có nhiều cách khác nhau để làm điều đó, nhưng tôi nghĩ một trong những cách hiệu quả nhất là viết một lá thư giả mạo tức giận (Quan trọng! Đừng gửi thư này cho bất cứ ai ). Giải thích cảm xúc của bạn, chẳng hạn như tại sao bạn cảm thấy rằng bất cứ điều gì xảy ra là không chính đáng.

Bước 2: Dành chút thời gian để bình tĩnh.

Hãy chắc chắn rằng bạn đã bày tỏ mọi thứ mà bạn cảm thấy, và sau khi trút giận, bạn chỉ cần dành chút thời gian để bình tĩnh lại. Có lẽ bạn chỉ cần một vài phút, hoặc có lẽ một vài giờ.

Bước 3: Xem lại những gì đã xảy ra ở bước 1

Tại thời điểm này, bạn sẽ hy vọng có thể suy nghĩ khách quan hơn về tình huống này. Nếu bạn đã viết một lá thư, sau đó đọc nó cho chính mình. Nếu bạn tâm sự với ai đó, thì hãy cố gắng nhớ những gì bạn nói. Nếu bạn chỉ tưởng tượng hét vào mặt ai đó, thì hãy xem lại điều đó.

Tôi thường viết một lá thư khi tôi tức giận và sau khi tôi bình tĩnh lại, tôi sẽ làm việc để tinh chỉnh bức thư để truyền đạt rõ ràng hơn những gì ban đầu tôi đang cố nói cho đến khi tôi hài lòng rằng ai đó đọc nó sẽ hiểu tôi là gì cảm giác lúc đó

Vấn đề là cố gắng khách quan để chọn ra điểm của bạn là gì. Họ có ý nghĩa? Có lẽ họ cần làm rõ hoặc chi tiết hơn. Họ là vô căn cứ? Nếu bạn khách quan đặt mình vào vị trí của người khác, bạn có hiểu những điểm bạn đã làm không? Bạn có đồng ý với những điểm đó không? Bạn có thể sử dụng cơ hội này để đánh giá chính mình. Bạn đã làm gì tốt? Một số điều mà bạn có thể đã làm tốt hơn là gì?

Bước 4: Quyết định một quá trình hành động

Có điều gì đó có thể được thực hiện để khắc phục tình hình hoặc ít nhất là cải thiện nó? Dành một chút thời gian để xem xét nếu thực tế có bất cứ điều gì có thể được thực hiện để khắc phục hoặc cải thiện tình hình. Thường thì không, nhưng đôi khi có.

Nếu bạn có lỗi vì điều gì đó, thì đó có thể đơn giản như một lời xin lỗi chính thức với ai đó, giải thích rõ ràng những gì đã sai, những gì bạn đã làm, tại sao bạn làm điều đó và bạn sẽ làm gì để khắc phục hoặc ngăn chặn nó xảy ra tương lai.

Tiếp theo, hãy xem xét những gì bạn có thể làm để cải thiện tương lai. Bạn có thể làm gì để ngăn điều tương tự xảy ra lần nữa? Quyết định những gì bạn muốn đạt được và sử dụng những gì bạn đã học được từ bước 3 để tạo ra một kế hoạch cho chính mình.

Nếu vẫn thất bại, hãy thử khởi động lại:

        try
        {
            // ...
        }
        catch (OhNoes111Exception)
        {
            // reboot fixes everything!
            System.Diagnostics.Process.Start("ShutDown", "/r");
        }
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.