Tại sao chúng ta không thể làm gì?


9

Tôi làm việc trong một nhóm nhỏ, trong một công ty cỡ trung bình, hầu hết không tham gia phát triển phần mềm. Tôi là nhà phát triển mới nhất và ít kinh nghiệm nhất và không có kiến ​​thức chuyên môn hoặc học thuật về phần mềm trước khi bắt đầu, nhưng tôi khá hài lòng với sự tôn trọng đầu vào của tôi và rất biết ơn vì đã nghiêm túc trong giai đoạn đầu của sự nghiệp.

Tuy nhiên, tôi cảm thấy mình nên làm nhiều hơn với lượng thời gian phát sóng hào phóng này. Là một nhóm, chúng tôi dường như gặp khó khăn trong việc hoàn thành công việc. Tôi muốn có thể đề xuất một cái gì đó để cải thiện tình hình và tôi nghĩ rằng tôi sẽ được lắng nghe nếu đó là một ý tưởng tốt, nhưng tôi không biết phải đề xuất gì.

Những điều tôi có thể xác định là vấn đề bao gồm:

  • Đặc điểm kỹ thuật của các nhiệm vụ trong tay là thưa thớt. Điều này một phần vì quản lý là một nút cổ chai và chúng tôi không có tiền hoặc mọi người cam kết thực hiện các yêu cầu chi tiết nhiều như chúng tôi muốn. Điều đó cũng một phần vì phần mềm chúng tôi đang phát triển là nghiên cứu và phương pháp chính xác không rõ ràng cho đến khi phần mềm được trình diễn và sử dụng để xác định tính hiệu quả của nó.
  • Trưởng nhóm Dev rất thích cái mà anh ta gọi là 'nguyên mẫu' đến mức gần đây anh ta bắt đầu khăng khăng rằng mọi thứ đều là 'nguyên mẫu', mà phần còn lại của chúng tôi trông giống như viết mã xấu và đưa nó cho người điều hành để chơi. Không rõ những gì anh ấy mong đợi từ bài tập này trong nhiều trường hợp. Việc thực hiện 'thực tế' sau đó bị ảnh hưởng bởi vì ông nhấn mạnh rằng thực hành tốt mất quá nhiều thời gian từ việc tạo mẫu. Tôi thậm chí chưa bắt đầu có thể gỡ rối logic xoắn này và tôi không chắc mình muốn thử.
  • Các nhà điều hành dự kiến ​​sẽ cho chúng tôi biết tất cả mọi thứ về phương pháp mong muốn một cách chi tiết chính xác, và người ta tin tưởng tuyệt đối rằng những gì họ đưa ra là hoàn hảo về mặt lý thuyết. Điều này hầu như không bao giờ đúng, nhưng không có hành động nào được thực hiện để khắc phục tình trạng này. Không ai ở phía người mẫu nêu lên bất kỳ mối quan tâm nào theo cách có cấu trúc có khả năng được hành động, họ cũng không tìm kiếm hướng dẫn trong việc áp dụng các thực tiễn tốt nhất. Không có gì được thực hiện về sự thụ động của họ.
  • Tôi đã cố gắng thúc đẩy TDD trong đội trước đây, nhưng cảm thấy khó khăn vì nó mới đối với tôi và trong khi những người giám sát công việc của tôi sẵn sàng chịu đựng điều đó, không có sự nhiệt tình nào được đưa ra từ bất kỳ ai khác. Tôi không thể biện minh cho lượng thời gian tôi dành cho việc đắm mình và không hoàn thiện các tính năng, vì vậy ý ​​tưởng này - hiện tại - đã bị từ bỏ. Tôi lo ngại nó sẽ không được chọn lại, bởi vì không ai thích được nói về cách thực hiện công việc của họ.
  • Bây giờ chúng tôi có một máy chủ tích hợp liên tục, nhưng nó hầu như chỉ được sử dụng để chạy thử nghiệm hồi quy nhiều giờ. Nó đã bị bỏ ngỏ rằng nó cũng nên chạy các bài kiểm tra đơn vị và tích hợp toàn diện, nhưng hiện tại không ai viết chúng.
  • Mỗi lần tôi nêu vấn đề về chất lượng với nhà phát triển chính, tôi nhận được câu trả lời về tác dụng của 'Tính năng kiểm tra A rất đơn giản, tính năng B quan trọng hơn nhiều đối với người dùng nhưng quá khó để kiểm tra, do đó chúng tôi không nên kiểm tra tính năng A '. Một lần nữa, tôi đã không cố gắng gỡ rối logic này.

.... phew. Khi tôi nói nó như thế, nó trông tệ hơn tôi nghĩ. Tôi cho rằng, hóa ra, đây là tiếng kêu cứu.


5
Làm thế nào tốt là công ty đẩy ra phần mềm mà khách hàng sử dụng và thích? Nói cách khác, nhóm có nhận được kết quả tốt hay không, mặc dù thực tế là bạn không tin rằng quy trình này là sao?
Robert Harvey

@Robert Harvey - Thật khó để tôi đánh giá. Các sản phẩm cực kỳ thích hợp và chúng tôi (nhà phát triển) nhận được các thông điệp hỗn hợp. Một mặt, khách hàng mới ở các thị trường đột phá đang đập phá sản phẩm nhiều hơn chúng tôi dự kiến ​​ban đầu và tìm ra lỗi do đó, điều mà họ dường như không bận tâm vì chúng tôi giải thích lý do và khắc phục chúng nhanh chóng. Mặt khác, một số khách hàng tổ chức lớn không tin tưởng và chúng tôi bắt đầu thất bại vì liên tục sửa đổi mô hình. Nhóm phần mềm là một trong số ít ngay cả trong công ty hiện tại, vì vậy chúng tôi có vẻ tốt vào lúc này .
Tom W

1
Tôi sẽ thu hút càng nhiều phản hồi càng tốt từ khách hàng để có cách đồng ý về một "mô hình" làm việc cơ bản, và cố gắng và củng cố điều đó một chút. Nó thực sự có thể gây khó chịu cho khách hàng về một mô hình để thay đổi, nhưng nếu đây là phần mềm mới, tiên tiến, nó đi cùng với lãnh thổ.
Robert Harvey

Câu hỏi hay. Tôi đã nhận thấy rằng ngay cả với một đối tượng tiếp nhận, thay đổi thực sự là khó khăn, trừ khi bạn có thể thấy nó hoạt động trong thực tế. Lời khuyên của tôi là hãy thử các cách tiếp cận để tăng năng suất của bạn trước, và sau đó trình diễn những điều này cho nhóm. Với thực tế, bạn có thể nhận được sự phát triển TDD nhanh hơn so với viết / gỡ lỗi / lặp lại.
Mike B

Câu trả lời:


19

Hãy để tôi chơi người ủng hộ của quỷ trong giây lát:

Đặc điểm kỹ thuật của các nhiệm vụ trong tay còn thưa thớt ... Người dẫn đầu rất thích những gì anh ta gọi là 'nguyên mẫu'

Các nhà phát triển chì rất thích tạo mẫu thông số kỹ thuật còn thưa thớt. Đây có lẽ là một điều tốt; đây là cách các cửa hàng lặp đi lặp lại làm việc

Các nhà điều hành dự kiến ​​sẽ cho chúng tôi biết mọi thứ về phương pháp mong muốn một cách chi tiết

Điều này sẽ không làm việc trong một cửa hàng lặp đi lặp lại. Bản chất của phát triển lặp là các yêu cầu thường không đầy đủ. Lặp đi lặp lại là những gì cần thiết để đưa ra các yêu cầu.

Tôi đã cố gắng đẩy TDD trong đội trước đây, nhưng cảm thấy khó khăn vì nó mới đối với tôi

Điều này cũng không hoạt động; bạn cần hiểu công nghệ trước khi bạn có thể truyền giáo nó. Hơn nữa, trong một cửa hàng lặp đi lặp lại với các yêu cầu ít ỏi, TDD có thể quá nhiều chi phí. Tốt hơn là khuyến khích bảo hiểm thử nghiệm đơn vị đầy đủ.

Bây giờ chúng tôi có một máy chủ tích hợp liên tục, nhưng nó hầu như chỉ được sử dụng để chạy thử nghiệm hồi quy nhiều giờ.

Điều đó có thể thích hợp trong một cửa hàng nhỏ, lặp đi lặp lại.

Mỗi lần tôi nêu vấn đề về chất lượng với nhà phát triển chính, tôi nhận được câu trả lời về tác dụng của 'Tính năng kiểm tra A rất đơn giản, tính năng B quan trọng hơn nhiều đối với người dùng nhưng quá khó để kiểm tra, do đó chúng tôi không nên kiểm tra tính năng Một '

Có vẻ như cửa hàng của bạn có một số hạn chế thời gian khá chặt chẽ; Dù muốn hay không, bạn bị ràng buộc bởi những ràng buộc đó.

Có vẻ như bạn đến từ một phần của ngành công nghiệp phần mềm, coi trọng việc thực hiện "đúng cách" hơn là đưa mọi thứ ra thị trường trước. Không có gì sai với điều đó (thực tế là đáng ngưỡng mộ), ngoại trừ việc người đầu tiên đưa ra thị trường với một phần mềm lỗi thường là người chiến thắng. Thật không công bằng, nhưng đó là như thế.


Tôi nghĩ rằng bạn sẽ cần phải tiếp cận nó từ quan điểm "nợ kỹ thuật". Mọi công ty đều ước tính thời gian; giả sử của bạn đã khá tốt rồi, hãy bắt đầu xây dựng khoản thặng dư 10% đến 20% vào ước tính thời gian của bạn để tái cấu trúc và đào tạo, và làm cho nó gắn bó.
Robert Harvey

Tiếp tục; Phát triển lặp là tên của trò chơi, bạn đã hiểu đúng. Rắc rối là, việc lặp đi lặp lại trước khi nó thực sự kết thúc bởi vì chúng ta nhận được những thông tin mơ hồ từ những người điều hành về việc liệu những gì chúng ta đã mã hóa có thực sự chính xác hay không. Không ai có thể xác định bất kỳ lỗi nào, vì vậy những gì chúng tôi đã thực hiện tàu. Sáu tháng sau hóa ra là sai. Tôi muốn thích để có thể chỉ ra rằng làm mô hình cần phải được đưa ra tiêu chí vững chắc hơn để thử nghiệm chống lại, nhưng sau đó một lần nữa, không phải là nó của họ công việc để nói như vậy?
Tom W

2
@Tom: Miễn là bạn không nhấn mạnh vào các thông số kỹ thuật có thể kiểm tra được từ các nhà điều hành, họ luôn có thể nói với nhóm của bạn rằng họ đã hiểu sai. Nếu họ chịu trách nhiệm cho bạn về việc tạo ra kết quả từ mô hình của họ, bạn phải chịu trách nhiệm cho họ về việc cung cấp cho bạn thông số kỹ thuật có thể kiểm tra để bạn có thể tuyên bố thành công. Mọi đặc điểm kỹ thuật nên được tích hợp trong đó một số loại thử nghiệm "đi, không đi", để bạn và khách hàng (hoặc người điều hành) có thể đồng ý với nhau rằng thử nghiệm đã được thông qua mà không bị giải thích.
Robert Harvey

Khá đúng. Thật không may, bạn có thể bắt buộc tôi phải thừa nhận điều mà tôi không muốn - rằng chúng tôi thiếu năng lực. Nói chung là rõ ràng, nhưng đặc biệt là với các bộ điều biến. Đối với một số khía cạnh, chúng tôi nhấn mạnh vào thông số kỹ thuật của công ty, sau đó nó vẫn kết thúc sai. Họ là những nhà khoa học, và nói từ kinh nghiệm, các nhà khoa học có xu hướng coi mã như một thí nghiệm - sửa lỗi khi bạn thực hiện. Đối với doanh nghiệp, điều này chỉ đơn giản là không đủ tốt và đó là vấn đề chuyên nghiệp được mong đợi để nhận ra điều này.
Tom W

Không có gì sai khi xử lý mã như một thử nghiệm; đó là một phần của quá trình lặp lại. Nhưng cuối cùng, bạn phải tìm hiểu "mã này chấp nhận các đầu vào này và dự kiến ​​sẽ tạo ra đầu ra này." Đó là những gì bài kiểm tra đơn vị dành cho; chúng tạo thành một phần của đặc tả. Tôi có thể thấy lý do tại sao bạn muốn làm TDD; nó buộc các thông số kỹ thuật vào mã ... Nhưng bạn cần sự hỗ trợ từ văn hóa doanh nghiệp để thực hiện công việc đó và TDD có một không khí "tôn giáo" về nó. Không phải mọi thứ đều có thể kiểm chứng theo cách này, vì vậy cuối cùng, bạn có thể phải sống với một mức độ khó chịu nhất định.
Robert Harvey

2

Tôi sẽ tập trung vào việc tạo mẫu ở đây

vấn đề chính với các nguyên mẫu là chúng có nghĩa là bằng chứng của khái niệm

tuy nhiên nếu bạn không thể xây dựng thêm trên nguyên mẫu và cần xây dựng lại sản phẩm cuối cùng từ đầu, bạn có thể không xây dựng nguyên mẫu và bạn đã lãng phí thời gian để xây dựng nó

Lời khuyên của tôi cho nhóm của bạn là có được một số chất lượng và tính linh hoạt trong các nguyên mẫu đó. Tôi biết lần đầu tiên không thể tạo ra những thứ hoàn hảo nhưng cố gắng duy trì khả năng mở rộng cho các yêu cầu trong tương lai


Đó là những gì tôi đã cố gắng để giao tiếp một thời gian. Khi nó xảy ra, các nguyên mẫu thường có giá trị và dạy chúng ta những bài học thiết yếu về bản chất của vấn đề. Tuy nhiên, liệu những bài học đó có được học hay không, và chất lượng thực hiện phụ thuộc vào nhà phát triển khôi phục kiến ​​thức thu được từ não của họ, thay vì sử dụng nguyên mẫu để viết thông số kỹ thuật. Nhà phát triển chính nói điều sau sẽ xảy ra, sau đó không tuân theo việc đảm bảo rằng điều đó xảy ra.
Tom W

khi anh ta nói rằng anh ta muốn một nguyên mẫu, điều anh ta muốn nói là anh ta muốn một phiên bản hoạt động tối thiểu, và càng nhanh càng tốt. Đây sẽ là nền tảng cho phiên bản cuối cùng. Vấn đề với cách tiếp cận là các nhà phát triển cơ sở (nói chung) có thể viết mã tốt hoặc có thể viết mã nhanh, nhưng hiếm khi có thể làm cả hai cùng một lúc.
Kevin

2
Fred Brooks đã nói "Viết một thứ để vứt đi, dù sao bạn cũng sẽ như vậy", điều đó đúng như ngày nay cách đây 40 năm.
mattnz

1

Đây là những câu trả lời tốt. Tôi chỉ có thể thêm rằng "cố gắng giao tiếp" tốt nhất là một đề xuất của iffy. Những thay đổi trong cách tổ chức hoạt động không diễn ra nhanh chóng. Khi nó xảy ra, nó thường giống như thủy triều, nơi động lượng xây dựng từ bên dưới và từ bên trên. Vì vậy, bạn sẽ hạnh phúc hơn nếu bạn giữ kỳ vọng của mình ở mức thấp và chờ cơ hội để nói mọi thứ sẽ được thực hiện như thế nào hoặc mong muốn được làm việc với một tổ chức khác.


1

Bạn đã xác định được ai đó ở công ty "hiểu rồi" nếu vậy, hãy bám lấy anh chàng này và học hỏi càng nhiều càng tốt từ anh ta. Nếu không, hãy dành thời gian của bạn, bắt đầu tự học và phát triển (tham gia dự án Nguồn mở hoặc bắt đầu dự án của riêng bạn) và tìm một nơi có thể thúc đẩy sự phát triển của bạn.

Điều tồi tệ nhất có thể xảy ra là bạn ở lại đó và học cách làm mọi thứ sai cách. Vâng, cần phải có một số chủ nghĩa thực dụng, nhưng một đội ngũ thực sự có kỹ năng có thể làm mọi thứ đúng cách và vẫn đúng giờ với một sản phẩm chất lượng. Có vẻ như nhóm hiện tại của bạn không có những gì nó cần và bạn nên bắt đầu tìm kiếm một nhóm mới.


"Bạn đã xác định được ai đó ở công ty" hiểu rồi "" LOL
Kenzo
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.