Tính khả thi của Nhóm phát triển không có vai trò * dành riêng * Người kiểm tra [đã đóng]


9

Gần đây tôi đã suy nghĩ rất nhiều về cách xây dựng một nhóm phát triển tinh gọn. Cuối cùng, tôi muốn mở ra ngôi nhà phần mềm nhỏ của riêng mình với một số ít người có cùng chí hướng. Mục tiêu sẽ không trở nên giàu có, mà là có một môi trường làm việc lành mạnh.

Cho đến nay, tôi đang xác định một nhóm nạc như sau:

  • Nhỏ;
  • Tự tổ chức;
  • Tất cả các thành viên phải có QA trong tâm trí;
  • Thành viên phải có khả năng thực hiện nhiều vai trò

Điểm cuối cùng là nơi tôi lo lắng một chút bởi vì, khi câu thần chú diễn ra ...

Các nhà phát triển làm cho người kiểm tra xấu.

Mặc dù tôi hiểu rằng, thông thường, các nhà phát triển "quá gần" với mã của họ hoặc mã của đồng nghiệp của họ để đưa ra các đánh giá chất lượng cao hơn, tôi không tin rằng họ là những người kiểm tra thực tế tồi. Ngược lại, tôi cho rằng phẩm chất của một nhà phát triển giỏi trùng lặp rất lớn với phẩm chất của một người thử nghiệm giỏi.

Giả sử điều này là chính xác, tôi đã nghĩ đến nhiều cách khác nhau để giải quyết vấn đề dev / người kiểm tra và tôi tin rằng tôi đã đưa ra một mô hình khả thi.

Mô hình của tôi yêu cầu:

  • Một ngôi nhà phần mềm nhỏ với hơn 2 dự án
  • Một cách tiếp cận Agile (lặp đi lặp lại) để phát triển và phân phối
  • 1 đội mỗi dự án
  • Tất cả các thành viên trong nhóm sẽ là Nhà phát triển phần mềm
    • Mô tả công việc của họ sẽ nêu rõ trách nhiệm Phát triển , Đảm bảo Chất lượng , Thử nghiệmGiao hàng là trách nhiệm

Nếu tất cả các điều kiện tiên quyết đã được đáp ứng, thì các dự án có thể được tổ chức theo kiểu sau (ví dụ này sẽ đề cập đến hai dự án, AB ):

  • Mỗi thành viên trong nhóm sẽ luân phiên giữa vai trò Nhà phát triển và vai trò Người kiểm tra
  • Nếu một thành viên trong nhóm là Nhà phát triển của dự án A , họ sẽ là Người kiểm tra dự án B
    • Các thành viên sẽ chỉ làm việc trên 1 dự án tại một thời điểm và do đó được dự kiến ​​sẽ đóng vai trò Dev hoặc Tester.
  • Một chu kỳ vai trò bao gồm 3 lần lặp là Dev và 2 lần lặp là Người kiểm tra (một lần nữa, trên hai dự án khác nhau)
  • Các nhóm dự án sẽ có 3 Dev và 2 Testers mọi lúc.
  • Chu kỳ vai trò thành viên nên lệch pha 1 lần lặp.
    • Điều này giảm thiểu sự đột ngột của những thay đổi của đội. Đối với mỗi lần lặp, 2 Dev và 1 Tester sẽ giữ nguyên như lần lặp trước.

Đưa ra những điều trên, tôi thấy những ưu và nhược điểm sau:

Ưu

  • Phân phối kiến ​​thức dự án trong toàn công ty.
  • Đảm bảo các thành viên trong nhóm không kiểm tra mã họ đã viết.
  • Chu kỳ vai trò ngoài pha có nghĩa là không có dự án nào có chuyển đổi thành viên 100%.
  • Vai trò xen kẽ phá vỡ sự đơn điệu của các dự án nhàm chán.

Nhược điểm

  • Lặp đi lặp lại của cả hai dự án được liên kết chặt chẽ. Nếu một dự án hủy bỏ một nửa vòng lặp và bắt đầu lại, thì hai dự án sẽ không đồng bộ. Điều này sẽ làm cho chu kỳ vai trò khó quản lý.
  • Bản lề về việc tuyển dụng Các nhà phát triển mở làm việc như Người thử nghiệm.

Tôi đã nhận được nhiều ý kiến ​​trái chiều khi thảo luận về phương pháp này với bạn bè và đồng nghiệp. Một số người tin rằng rất ít nhà phát triển muốn thay thế vai trò như thế này, trong khi những người khác nói với tôi rằng cá nhân họ rất thích thử nó.

Vì vậy, câu hỏi của tôi là: một mô hình như vậy có thể làm việc trong thực tế? Nếu không, nó có thể được điều chỉnh thành một mô hình làm việc không?

Lưu ý: Vì lợi ích của sự ngắn gọn, tôi chỉ tập trung vào vai trò Dev và Tester. Tôi sẽ mở rộng vai trò khác nếu cần.



Mặc dù có sự chồng chéo về việc Nhà phát triển có thể hoặc nên là người thử nghiệm hay không, tôi nghĩ mấu chốt của câu hỏi này là về vai trò ngoài giai đoạn 2 trên mô hình 2 dự án.
MetaFight

2
FWIW Ý kiến ​​cá nhân của tôi là bạn đang mạo hiểm khá nhiều với cách tiếp cận như vậy. Tôi là một người thử nghiệm cũ (và không phải là người tồi tệ nhất) và khi tôi từng tham gia một dự án nơi tôi có thể "xen kẽ" 2 vai trò đầu tiên tôi nghĩ wow, một cơ hội để tìm ra cách làm đúng. Sau khoảng nửa năm, tôi đã thay đổi quyết định và không bao giờ muốn thử điều đó nữa. Cả hai vai trò (dev và QA) đều yêu cầu tập trung 100% để thực hiện đúng, nhưng khi bạn xen kẽ, bạn mất tập trung và mất chất lượng hoặc năng suất hoặc cả hai. BTW nhận được thử nghiệm chuyên dụng trong dự án đó đã tạo ra ROI ấn tượng nhất mà tôi từng chứng kiến
gnat

2
@gnat, nhưng bạn chưa giải thích được tại sao Nhà phát triển không thể hoàn thành vai trò Người kiểm tra. Cấp cho người trong câu hỏi sẽ cần phải thực hiện nghiêm túc như một vai trò toàn thời gian, đó là lý do tại sao tôi đề nghị họ thay thế các dự án và chỉ làm việc trên một dự án tại một thời điểm. Tôi không mong đợi bất kỳ Nhà phát triển nào có thể làm điều này ... chỉ những người làm Người thử nghiệm giỏi họ đã chọn con đường đó.
MetaFight

2
Diễn giải những gì bạn muốn làm: "Tôi muốn mở một cuộc phẫu thuật y tế, thay vì thuê một vài bác sĩ gây mê, tôi sẽ thuê đủ bác sĩ phẫu thuật và xoay chúng thật kỹ vai trò đó". Đề xuất của bạn cho thấy sự thiếu hiểu biết (điển hình) về những gì một người thử nghiệm chuyên nghiệp cung cấp cho một nhóm. Bạn có thể làm điều đó, nhiều người làm, một số làm cho nó hoạt động. Những gì bạn sẽ không bao giờ biết là những gì bạn đang bỏ lỡ và những gì bạn có thể làm tốt hơn. Nhân tiện - Kiểm tra không phải là QA - chỉ một bài học mà một người kiểm tra chuyên nghiệp sẽ dạy cho bạn.
mattnz

Câu trả lời:


8

Tôi không đồng ý với

Nhà phát triển làm cho người kiểm tra xấu

Hầu hết các đội tôi đã làm việc trong thiên đường sự nghiệp của tôi không có bất kỳ hỗ trợ QA nào. Điều này bao gồm một vài tập đoàn lớn, toàn cầu liên quan đến các sản phẩm như hệ thống đăng nhập và đăng ký toàn cầu của họ. Trong một trường hợp khác, tôi có 30% doanh thu của công ty chạy qua một hộp trên bàn của tôi. (Những thực hành này không được khuyên dùng BTW;)) Các công ty này đã phụ thuộc vào các kỹ sư để đảm bảo mã của họ hoạt động chính xác. Và chúng tôi, được định hướng chi tiết, một chút bắt buộc và tự hào về công việc của mình, sẽ cố gắng hết sức để đảm bảo phần mềm của chúng tôi hoạt động chính xác.

Ngoài ra, như một nhà phát triển tôi nhiều hơn so với thử nghiệm Xét nghiệm. Tôi thường xuyên kiểm tra đơn vị mã của mình tới 90% hoặc 100% nếu tôi không làm việc với Java.

Tôi thích làm việc với Người thử nghiệm vì họ đến từ một khía cạnh khác và nắm bắt những điều tôi không nghĩ tới. Nhưng tôi thực sự không tin tưởng vào họ để cung cấp hơn 30-50% phạm vi kiểm tra, trong khi tôi tự chịu trách nhiệm 100%. (BTW Đó không phải là một cú đánh vào họ - họ thường trải đều trên các dự án.)

Thay vì hỏi các kỹ sư trong các cuộc phỏng vấn nếu họ muốn làm QA, hãy hỏi: nếu một lỗi xuất hiện trong sản xuất, ai chịu trách nhiệm? Nếu tôi giới thiệu một lỗi và một khách hàng gặp phải nó, tôi cảm thấy tồi tệ và chịu trách nhiệm. Tôi không đổ lỗi cho các bạn QA. IMHO Đó là loại kỹ sư mà bạn muốn thuê (và làm việc với)

Phương pháp đảm bảo chất lượng của tôi là một) thử nghiệm đơn vị siêu tích cực (mặc dù tôi hoàn toàn không thể tự mình thực hiện đầy đủ Thử nghiệm dựa trên thử nghiệm), b) một quy trình đánh giá mã mạnh thực sự có ích, và c) tích hợp một sự không khoan dung và thiếu kiên nhẫn với khiếm khuyết vào văn hóa đội.

Tôi luôn nhận ra rằng những người cao cấp nhất là những người nghiêm túc và chú ý đến những vấn đề nhỏ nhất, bởi vì họ có thể chỉ ra một vấn đề lớn hơn. Nhưng chủ yếu họ là những người sẵn sàng dành thời gian để làm cho đúng.

Nhưng hầu hết các đội tôi đã làm việc, đặc biệt là cho các công ty nhỏ, chưa có thành phần QA chính thức.


6

Tôi đồng ý với câu trả lời của @Rob Y và muốn thêm một vài điểm:

  • Trong nhanh nhẹn, những người kiểm tra chuyên dụng trong một nhóm là một mô hình chống, bởi vì họ buộc các nhóm phải làm việc theo đường ống và vốn không hiệu quả. Bạn liên tục kết thúc với những câu chuyện "dev xong" nhưng không được kiểm tra. Người kiểm tra chuyên dụng sẽ ổn nếu họ làm việc bên ngoài nhóm (hoặc một nhóm riêng).

  • Dev làm cho người kiểm tra xấu ... và người kiểm tra làm người kiểm tra xấu. QA là khó. Trên thực tế, nó rất khó. Vấn đề của bạn có thể không phải là con người và vai trò. Vấn đề của bạn có thể là phần mềm của bạn đã vội vã. Một lần nữa, nhanh nhẹn, trách nhiệm của nhóm bạn là kiểm tra trước khi sản xuất (cho dù họ có QA chuyên dụng hay không).

  • QA là một phần của sự phát triển, như tái cấu trúc, kiến ​​trúc, v.v. Trách nhiệm của một nhóm phát triển là sản xuất phần mềm theo một tiêu chuẩn thực tế nhất định, được thống nhất. QAs sẽ không cải thiện tiêu chuẩn đó. Các nhà phát triển tốt hơn có thể sẽ.

  • Cung cấp: Ai nói rằng QAs tốt hơn các nhà phát triển tại QA-ing? Đó là điều mọi người nói nhưng ... [cần dẫn nguồn]. Tâm lý "hacker" cần thiết của QA là tâm lý nhà phát triển. Trên thực tế, về cơ bản tất cả các tin tặc là hoặc là nhà phát triển, không phải QA ...

  • Cung cấp 2: 99% công việc QA có thể (và, tôi dám nói, nên được ) tự động hóa thông qua các tập lệnh. Một nhóm tốt sẽ làm điều này và để làm điều này đúng cách, bạn cần ... nhà phát triển.


Nhận xét về Cung cấp 2: tự động hóa thử nghiệm có thể được thực hiện bởi các nhà phát triển, nhưng không nhất thiết phải như vậy. Những người thử nghiệm biết cách viết mã (nhưng không ở cấp độ của một nhà phát triển chuyên nghiệp) có thể viết các kịch bản đủ tốt.
Mate Mrše

4

Ở một công việc trước đây, chúng tôi chỉ có các nhà phát triển và không có nhân viên QA. Kết quả là không có ai để đổ lỗi nếu một vấn đề được đưa vào sản xuất. Chúng tôi rất coi trọng trách nhiệm QA của mình và phụ thuộc rất nhiều vào các bộ kiểm tra tự động. Vì việc viết các bài kiểm tra tự động vẫn là mã hóa, nên việc các nhà phát triển thực hiện nó không phải là vấn đề lớn.

Điều quan trọng là làm cho nó trở thành một phần của văn hóa của đội và là một phần của mỗi dự án. Chúng tôi đã viết ra các kế hoạch kiểm tra (chỉ liệt kê ngắn gọn các bài kiểm tra mà chúng tôi dự định viết cho một dự án) và các nhà phát triển khác sẽ xem xét và đề xuất các trường hợp và kịch bản mà chúng tôi đã bỏ lỡ.

Nếu bạn nghiêm ngặt về nó, nó có thể hoạt động rất tốt. Nó đã làm cho chúng tôi - chúng tôi có thời gian hoạt động tuyệt vời và các khiếm khuyết thấp trong một dịch vụ web thương mại điện tử luôn hoạt động.


bài này khá khó đọc (tường văn bản). Bạn có phiền chỉnh sửa ing nó thành một hình dạng tốt hơn?
gnat

2
Xin lỗi, buổi sáng não đổ. Tôi đã phá vỡ nó bây giờ.
Rory Hunter

2

Trước tiên hãy cẩn thận - Tôi đã làm việc chuyên nghiệp với tư cách là kỹ sư QA và kỹ sư phần mềm.

Một mô hình như vậy có thể làm việc trong thực tế?

Mọi thứ đều có thể.

Mặc dù tôi hiểu rằng, thông thường, các nhà phát triển "quá gần" với mã của họ hoặc mã của đồng nghiệp của họ để đưa ra các đánh giá chất lượng cao hơn, tôi không tin rằng họ là những người kiểm tra thực tế tồi. Ngược lại, tôi cho rằng phẩm chất của một nhà phát triển giỏi trùng lặp rất lớn với phẩm chất của một người thử nghiệm giỏi.

Nó phụ thuộc vào loại thử nghiệm bạn cần. Nếu bạn cần thử nghiệm thủ công, đơn điệu, lặp đi lặp lại để đảm bảo rằng mọi màn hình hoặc thành phần thực sự đã được dịch sang Elbonian ... bạn sẽ gặp vấn đề.

Và theo kinh nghiệm của tôi, mọi dự án đều yêu cầu ít nhất một chút loại thử nghiệm này (ngay cả khi không phải mọi dự án đều thực hiện loại thử nghiệm đó). Vấn đề là bạn không nhận được loại thử nghiệm này từ những người không quen thuộc với các thực tiễn tốt nhất của QA. Quỷ thần, bạn thậm chí không nhận được nó từ những người biết thực hành tốt nhất, nhưng "tin tưởng" các nhà phát triển.

Là một người thử nghiệm, bạn không thể tin tưởng các nhà phát triển. Tôi đã mất vô số lỗi mà tôi thấy rằng "không thể gây ra bởi sự thay đổi đó" hoặc "hoạt động hoàn toàn tốt trên hộp dev của tôi".

Ngay cả khi bạn có thể tìm thấy các nhà phát triển có thể chịu đựng được việc không làm những gì họ thích làm trong 2 tuần trên 5 thì bạn cũng sẽ gặp phải mâu thuẫn cốt lõi này. Tệ hơn nữa, bạn đang dành thời gian và sức lực để đào tạo mọi người thành thạo hai công việc chứ không phải một. Các công ty có một thời gian đủ khó để tìm và đào tạo những người giỏi trong một công việc, chứ đừng nói đến hai.

Có thể bạn tuyệt vời theo một cách nào đó mà tôi chưa gặp phải - nhưng tôi nghi ngờ điều đó.


Có lẽ mô hình của tôi cần một vai trò Sr QA để xem xét các phương pháp tiếp cận được đề xuất của những người thử nghiệm dev của tôi và đề xuất các phương pháp thực hành tốt nhất. Ồ, và hầu hết mọi người không thấy tôi tuyệt vời, nhưng mẹ tôi thì :) và điều đó đủ tốt cho tôi!
MetaFight

Tôi đang chuyển một số vai trò QA của chúng tôi thành Chủ sở hữu sản phẩm. Có vẻ như bạn không được chủ sở hữu sản phẩm chấp nhận các câu chuyện của người dùng hoặc đánh giá nước rút. Cả hai điều này sẽ bắt được rất nhiều vấn đề mà nhóm phát triển có thể đã bỏ lỡ. Tuy nhiên, trước đó, nếu bạn không thể tin tưởng các nhà phát triển để tạo ra chất lượng, bạn cần tìm các nhà phát triển khác nhau. Đó là kết luận của tôi - theo kinh nghiệm của tôi - bạn không thể đào tạo ra chất lượng kém từ một nhà phát triển tồi. Tôi đã làm việc với nhiều nhà phát triển "hoàn thành công việc" và đây là đầu ra bạn nhận được từ họ. Một nhóm scrum tốt đòi hỏi các nhà phát triển tốt.
David Anderson

0

Tôi nghĩ rằng nó có thể làm việc, nhưng có một vài điều tôi sẽ đảm bảo bạn làm.

  1. Hãy rất thẳng thắn về vai trò kép đối với các ứng cử viên. Nó không dành cho tất cả mọi người vì nhiều lý do. Nếu bạn có quá nhiều người không thích nó, bạn sẽ gặp thất bại và doanh thu.
  2. Có một kế hoạch mà bạn có thể đánh giá cách tốt nhất để kết hợp điều này với nhóm. Mặc dù tôi muốn tập trung vào một nhiệm vụ / dự án tại một thời điểm, tôi không chắc chắn tôi sẽ không muốn lập trình trong một khoảng thời gian rất dài. Có lẽ thử nghiệm là một kỳ nghỉ tốt đẹp từ lập trình. Không phải là nó dễ dàng hơn, chỉ cần sử dụng một số tế bào não khác nhau để thay đổi. Hãy chuẩn bị để thử nó theo những cách khác nhau trước khi bạn quyết định điều gì là tốt nhất.

Đồng bộ hóa các dự án dường như không phải là một giải pháp thực tế. Nếu ai đó là người thử nghiệm trong một dự án, họ có thể là ứng cử viên tốt nhất để thay thế một lập trình viên và ngược lại.

Kế hoạch này không để các đội tự tổ chức đủ. Một chiến lược có lẽ sẽ không phù hợp với tất cả các đội và tất cả các dự án.


Vai trò Tester trong trường hợp này có thể sẽ liên quan đến kiểm tra thủ công tự động. Tôi hy vọng các nhà phát triển sẽ viết các bài kiểm tra đơn vị và tích hợp, nhưng Người kiểm tra cũng sẽ làm như vậy. Sự phân chia chính xác của văn bản kiểm tra mã hóa hy vọng sẽ đạt được trạng thái cân bằng tự nhiên sau một vài lần lặp.
MetaFight

Nó thực sự không nên là một trường hợp cho dù các ứng cử viên có sẵn sàng đóng vai trò kép hay không. Nếu bạn muốn điều hành một công ty thành công, bạn nên đặt những người mà họ nổi trội. Tại sao lại đưa anh chàng vào thử nghiệm, người có thể tự mình thiết kế và mã hóa 2 hệ thống đáng tin cậy trong đó phải mất một nhóm 4 hoặc 5 để thực hiện một hệ thống duy nhất trong cùng một lúc? Tương tự như vậy, kiểm tra có các kỹ năng riêng để có thể làm tốt. Những tiến bộ lớn nhất trong nền văn minh của loài người xảy ra khi con người bắt đầu chuyên môn hóa. Tại sao điều hành một công ty phần mềm sẽ khác với mẹ thiên nhiên đã được chứng minh là hoạt động tốt nhất?
Dunk
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.