Bạn có tin rằng các Kỹ sư Phần mềm phải làm việc như các Kỹ sư Đảm bảo Chất lượng trong một khoảng thời gian không? [đóng cửa]


12

Tôi tin rằng đó là. Tại sao?

  1. Tôi đã gặp nhiều Kỹ sư phần mềm tin rằng họ bằng cách nào đó vượt trội so với các kỹ sư QA. Tôi nghĩ rằng nó có thể giúp dập tắt niềm tin này nếu họ làm công việc của một kỹ sư QA một thời gian và nhận ra rằng đó là một bộ kỹ năng độc đáo và có giá trị của riêng mình.

  2. Kỹ sư phần mềm càng giỏi trong việc kiểm tra các chương trình của riêng họ, thì mã của họ càng mất ít thời gian khi thực hiện phần còn lại của vòng đời phát triển phần mềm.

  3. Kỹ sư phần mềm càng dành nhiều thời gian suy nghĩ về cách chương trình có thể phá vỡ, họ càng thường xuyên xem xét các trường hợp này khi họ đang phát triển chúng, do đó giảm lỗi trong sản phẩm cuối cùng.

  4. Định nghĩa "hoàn thành" của Kỹ sư phần mềm luôn thú vị ... nếu họ dành thời gian làm kỹ sư QA, định nghĩa này sẽ phù hợp hơn với người thiết kế phần mềm.

Lưu ý Tôi đưa ra đề xuất ở trên với một khung thời gian nhỏ trong đầu vì tôi biết rằng có ai đó làm việc ở một vị trí không phải là vị trí họ được thuê chắc chắn là một công thức để mất nhà phát triển đó.

Tất cả các bạn nghĩ gì?


1
Công việc đầu tiên của tôi là QA. Tôi ghét nó, nhưng tôi phải THỰC SỰ hiểu tầm quan trọng của QA.
Công việc

Tôi không hoàn toàn đánh giá cao sự sáng tạo đằng sau QA cho đến khi tôi đọc cuốn Nghệ thuật kiểm thử phần mềm kinh điển của Glenford Myers .
Macneil

5
Tôi đã gặp nhiều Kỹ sư phần mềm tin rằng họ bằng cách nào đó vượt trội so với mọi người khác trên hành tinh ;-)
Steven A. Lowe

Quá đúng Steven.
Tu viện Macy

1
Thay vào đó, tôi khuyên bạn nên hỏi liệu các kỹ sư phần mềm có nên thực hiện một số nội dung QA hay không, thay vì nghĩ rằng một thực thể không xác định nào đó sẽ buộc họ phải làm.
David Thornley

Câu trả lời:


13

1. Tôi đã gặp nhiều Kỹ sư phần mềm tin rằng họ bằng cách nào đó vượt trội so với các kỹ sư QA. Tôi nghĩ rằng nó có thể giúp dập tắt niềm tin này nếu họ làm công việc của một kỹ sư QA một thời gian và nhận ra rằng đó là một bộ kỹ năng độc đáo và có giá trị của riêng mình.

Một kỹ thuật phần mềm tốt có một nền tảng về chất lượng, bao gồm kiểm tra, số liệu và thống kê. Bất cứ ai làm bất kỳ loại phát triển phần mềm nào cũng cần lưu ý (nếu không quen thuộc) duy trì mã nguồn chất lượng và sản xuất / duy trì các trường hợp thử nghiệm hiệu quả. Theo thời gian, tôi sẽ nghi ngờ rằng bất kỳ nhà phát triển phần mềm nào cũng sẽ hiểu được các khía cạnh khác nhau của chất lượng - chất lượng mã, tính di động, khả năng bảo trì, khả năng kiểm tra, khả năng sử dụng, độ tin cậy, hiệu quả và bảo mật.

Các kỹ sư phần mềm có thể tập trung vào một khía cạnh cụ thể của vòng đời - yêu cầu kỹ thuật, kiến ​​trúc và thiết kế, xây dựng, thử nghiệm và bảo trì. Tuy nhiên, bất kể trọng tâm của bạn (là công việc hay ở giai đoạn hiện tại của dự án), điều quan trọng là phải nhớ chất lượng.

2. Kỹ sư phần mềm càng giỏi trong việc kiểm tra các chương trình của riêng họ, thì chi phí phát sinh mã của họ càng ít khi đi qua phần còn lại của vòng đời phát triển phần mềm.

Điều đó có thể đúng. Nhưng một số vấn đề được nhìn thấy tốt nhất sau này trong phát triển. Ví dụ, các vấn đề về hiệu suất và hiệu quả có thể không được nhìn thấy cho đến khi tích hợp. Có mã tốt, vững chắc và kiểm tra đơn vị hiệu quả chỉ là khởi đầu. Chất lượng cần phải bắt đầu với các yêu cầu, và làm theo tất cả các cách thông qua các hoạt động bảo trì.

3. Kỹ sư phần mềm càng dành nhiều thời gian suy nghĩ về cách chương trình có thể phá vỡ, họ càng thường xuyên xem xét các trường hợp này khi họ đang phát triển chúng, do đó giảm lỗi trong sản phẩm cuối.

Đó là một tuyên bố hoàn toàn đúng. Nhưng một lần nữa, các kỹ sư cũng yêu cầu xác minh rằng không có xung đột trong yêu cầu, các kiến ​​trúc sư để đảm bảo rằng thiết kế thực sự giải quyết các yêu cầu, v.v. Mọi người nên cố gắng chọc lỗ trong công việc của họ và sau đó làm việc với những người thích hợp để niêm phong chúng thật đẹp và chặt chẽ.

4. Định nghĩa "hoàn thành" của Kỹ sư phần mềm luôn thú vị ... nếu họ dành thời gian làm kỹ sư QA, định nghĩa này sẽ phù hợp hơn với người thiết kế phần mềm.

"Hoàn thành" chỉ có thể được đo theo yêu cầu. Hoặc là các yêu cầu được thỏa mãn và dự án hoàn thành, hoặc có những yêu cầu không đầy đủ và dự án không hoàn thành. Bất kỳ biện pháp hoàn thành khác là vô ích.


Cảm ơn Thomas, đó là một câu trả lời rất nhiều thông tin và chu đáo.
Tu viện Macy

6

Làm cho các lập trình viên chịu trách nhiệm về mã của họ và yêu cầu họ sửa các lỗi của riêng họ có thể xử lý việc này. Điều đó và mất tiền thưởng và / hoặc công việc.

Không phải trải nghiệm này sẽ không giúp ích gì, nhưng bạn có thể đi bao xa với dòng suy nghĩ này? Hỗ trợ kỹ thuật, Bán hàng, Người dùng Beta, cọ rửa nhà vệ sinh (đó sẽ là một trải nghiệm khiêm tốn).


Đúng Jeff, nhưng tôi nghĩ rằng cách tiếp cận đầu tiên không nhất thiết phải dạy họ các công cụ họ cần để trở thành lập trình viên hiệu quả / mạnh mẽ hơn. Nó không gây áp lực mặc dù, đó là tốt.
Tu viện Macy

Ngoài ra, một trong những tiêu cực của phương pháp này là mất một lập trình viên trong một khoảng thời gian, một tuần ... hai tuần, một tháng? Và tôi không nghĩ rằng nên để họ làm những công việc rất ít liên quan đến công việc hiện tại của họ ... (cọ rửa nhà vệ sinh: P)
Macy Abbey

6

"... phải làm việc như các kỹ sư QA ..."? Bạn làm cho nó âm thanh nghịch cảnh hoặc trừng phạt.

Tôi là một nhà phát triển phần mềm. Tôi coi đó là một phần công việc của mình để trở thành kỹ sư QA, mặc dù chúng tôi có bộ phận QA. Công việc của tôi là cung cấp phần mềm hoàn thành một số việc nhất định và để làm được điều đó tôi phải viết các bài kiểm tra đơn vị và đảm bảo phần mềm vượt qua chúng.

Tôi hợp tác với bộ phận QA của chúng tôi. Mục tiêu của tôi là làm cho công việc của họ trở nên dễ dàng hơn, giống như công việc của họ là giúp tôi đáp ứng mục tiêu cung cấp phần mềm làm những gì cần thiết, từ đó giúp cuộc sống của tôi dễ dàng hơn. Tôi coi chúng là đôi mắt thứ hai của tôi và một phần của mạng lưới an toàn, giống như tôi làm các bài kiểm tra đơn vị của mình.

Tôi chọn phát triển phần mềm, và muốn phát triển phần mềm. Nếu một số người quản lý đến gặp tôi và nói với tôi rằng tôi không thể làm điều đó và phải làm QA, tôi sẽ nói với họ rằng họ cần tìm một nhà phát triển phần mềm mới VÀ một người QA vì tôi sẽ không làm việc ở đó. Tôi là hậu môn như có thể với mã của tôi nhưng quá trình sáng tạo và câu đố / thử thách lập trình là vô cùng quan trọng đối với tôi. Tôi thà quay trở lại lái xe nâng ngã ba nếu tôi không thể viết mã bởi vì ở trong môi trường công ty mà không có khả năng sáng tạo và bị thách thức theo cách tôi sẽ là địa ngục tuyệt đối với tôi.

Nói chung, các tùy chọn bạn trình bày nghe có vẻ rất bất lợi và khiến tôi tự hỏi liệu bạn đã có một số trải nghiệm thực sự tồi tệ với một số nhà phát triển khủng khiếp. Trong tâm trí của tôi, một nhà phát triển phải LUÔN LUÔN nhận thức được các vấn đề chất lượng và thử nghiệm và nên tự hào về công việc của họ mà họ không xem xét nó đã hoàn thành cho đến khi nó vượt qua các thử nghiệm nghiêm ngặt trong thử nghiệm đơn vị của họ như những gì bộ phận QA chính thức sẽ sử dụng. Nếu tôi có một người ngang hàng, hoặc là người dẫn đầu về công nghệ trong một nhóm và có một nhà phát triển thể hiện bất kỳ sự "thô lỗ" nào đối với QA, anh ta sẽ thấy tôi lôi anh ta ra để điều chỉnh thái độ. Nếu cả hai mặt của đồng xu phân phối phần mềm không thể hợp tác và hoạt động như một nhóm thì đó là một vấn đề văn hóa thực sự. Tôi sẽ không muốn làm việc ở đó và nhân sự, cùng với quản lý cấp trên, sẽ cần phải được theo dõi.


Xin chào Greg, tôi đã hỏi suy nghĩ câu hỏi của một kỹ sư phần mềm mới biết về lĩnh vực này và không hiểu giá trị của QA và người không có nhiều kinh nghiệm phát triển theo một bộ tiêu chí chấp nhận được xác định rõ. Lý do tôi chọn "phải" là vì như bạn đã nói, tôi không nghĩ nhiều kỹ sư phần mềm sẽ chọn làm kỹ sư đảm bảo chất lượng (là nhiệm vụ duy nhất của họ) vì họ rõ ràng chọn làm nhà phát triển phần mềm. Tôi chắc chắn đánh giá cao và chia sẻ quan điểm của bạn về thái độ và mối quan hệ của nhà phát triển phần mềm thực sự tốt với QA.
Tu viện Macy

Bạn có nghĩ rằng có một kỹ sư phần mềm mới làm việc như một kỹ sư QA sẽ giúp họ đạt đến điểm bạn đang có bây giờ không?
Tu viện Macy

1
Tuyệt đối không. Hãy chắc chắn rằng họ hiểu cách làm việc của các đội; Phát triển thái độ sở hữu các vấn đề; Văn hóa một bầu không khí cởi mở khuyến khích mọi người làm việc trong các nhóm đặc biệt để thảo luận và giải quyết vấn đề. Quá nhiều người và các công ty khuyến khích các kho kiến ​​thức và thái độ "chúng tôi chống lại tất cả chúng". Thành thật mà nói, "chúng tôi chống lại tất cả bọn họ" cần phải đi xa trong bức tường công ty vì điều đó làm tổn thương tất cả mọi người.
Tin Man

2
@Macy Abbey, một chiến thuật cần xem xét có thể là để các nhà phát triển làm việc cùng với nhóm QA để phát triển các kịch bản thử nghiệm. Các bài kiểm tra đơn vị có thể được viết và thiết kế song song hoặc nhóm QA có thể thêm các bài kiểm tra của họ vào thư mục "kiểm tra" nơi nhà phát triển có các bài kiểm tra đơn vị. Một số người nghĩ rằng nên có sự tách biệt giữa dev và QA nhưng điều đó thúc đẩy sự cạnh tranh. Nếu cả hai nhóm sử dụng nhãn cầu và các thủ thuật kiểm tra cùng nhau, có lẽ họ có thể tìm ra các lỗi và các tính năng bị bỏ lỡ nhanh hơn.
Tin Man

@Greg Cảm ơn Greg, nghe có vẻ là một chiến thuật hay. Tôi tin rằng bạn đã thuyết phục tôi rằng một hỗn hợp các chiến thuật khác tốt hơn những gì tôi đề xuất ban đầu.
Tu viện Macy

5

Bắt các lập trình viên làm việc như các kỹ sư QA là một công thức để mất các nhà phát triển tốt nhất của bạn. Lập trình và QA yêu cầu các bộ kỹ năng và quy trình suy nghĩ khác nhau.

Tuy nhiên, điều quan trọng là các lập trình viên của bạn phải có kỹ năng kiểm tra và xác nhận công việc của chính họ trước khi chuyển nó cho nhóm QA. Các nhà phát triển và QA có quyền truy cập vào các công cụ, kiến ​​thức và kỹ năng khác nhau. Các nhà phát triển cần phải có kỹ năng bước qua mã của họ để tìm kiếm hành vi bất ngờ, kiểm tra đơn vị cho các điều kiện ràng buộc, nhấn mạnh mã luồng tìm kiếm các điều kiện chủng tộc, v.v. Kiểm tra từ góc độ nhà phát triển.

QA làm thử nghiệm của họ từ góc độ người dùng. Suy nghĩ giống như các loại người dùng khác nhau, phát minh ra các trường hợp cạnh lạ và làm cho các vấn đề mơ hồ có thể lặp lại là các kỹ năng QA.


1
Cảm ơn Ptolemy, tôi đưa ra gợi ý này với một khung thời gian nhỏ trong đầu vì tôi biết rằng có ai đó làm việc ở vị trí không phải là vị trí họ được thuê chắc chắn là một công thức để mất nhà phát triển đó.
Tu viện Macy

Không chỉ là họ không được làm việc ở vị trí mà họ được thuê, họ cũng không ở vị trí mà họ chọn là nghề nghiệp của họ và đi học. Đó là một cái tát lớn vào mặt đối với rất nhiều người đặt trái tim vào sự nghiệp của họ. Đối với những người chỉ coi một công việc là một mức lương thì sẽ ổn thôi.
Tin Man

@Greg: Những người trong đó được trả lương cũng sẽ không thích điều đó. Sơ yếu lý lịch của họ sẽ có giá trị hơn với X + 1 năm về công nghệ phần mềm so với X năm kỹ thuật phần mềm và một năm QA, ít nhất là sớm. Chưa kể bạn phải trả cho những người QA cũng như những người làm phần mềm của bạn, bởi vì không ai trong đó được trả lương sẽ sẵn sàng chấp nhận cắt giảm lương.
David Thornley

Er, giả sử bạn đang làm việc ở một nơi trả tiền cho dân gian QA lành nghề ít hơn các nhà phát triển. Tôi biết một số nơi làm, nhưng nó không phản ánh kinh nghiệm của tôi - khi tôi biết mức lương của mọi người, họ thường ngang bằng nhau.
thử nghiệm

1
Trong những năm đầu làm lập trình viên, mức lương của bạn phụ thuộc rất nhiều vào số năm kinh nghiệm lập trình bạn có. Vì vậy, có 2 năm C # và 1 năm QA đưa bạn vào mức lương 2 năm C # thay vì mức lương 3 năm C #.
Michael Shaw

3

Không nhất thiết - cả lập trình viên và người kiểm tra đều được yêu cầu phải có các kỹ năng khác nhau. Chỉ vì bạn là một lập trình viên giỏi không có nghĩa là bạn có thể là một người thử nghiệm giỏi (nhiều người không hiểu điều đó, nhưng là một lập trình viên không tự động đủ điều kiện để bạn trở thành một người thử nghiệm).

Một người thử nghiệm tuyệt vời cần phải có những kỹ năng thực sự quỷ quái, có thể làm những việc mà phần mềm không được thiết kế để làm, nhưng có thể mong đợi người dùng làm trong thế giới thực. Điều đó đòi hỏi kỹ năng, sự kiên nhẫn, khả năng nhìn thấy những gì có thể sai ở đâu, sự hiểu biết về tâm lý của người dùng và rất nhiều yếu tố khác.

Lưu ý rằng tôi sử dụng các từ lập trình viên và người kiểm thử - nhưng nếu bạn là một kỹ sư phần mềm và chưa quyết định bạn muốn trở thành một lập trình viên hay người kiểm thử, thì nó bao gồm cả hai điều này và do đó, bạn nên có kinh nghiệm trong cả hai trong vài năm đầu đời trước khi đưa ra quyết định.

Điều đó không có nghĩa là bạn lấy một lập trình viên có kinh nghiệm và khiến anh ta kiểm tra một lúc chỉ để khiến anh ta hiểu các kỹ sư QA làm việc chăm chỉ như thế nào.


Roopesh thực sự, mặc dù tôi nghĩ chắc chắn có một giao điểm giữa hai bộ kỹ năng, khi làm việc như một QA trong một khoảng thời gian nhỏ sẽ tăng tốc độ mà ai đó cải thiện kỹ năng kiểm tra của họ.
Tu viện Macy

1

Dưới đây là một số vấn đề tiềm ẩn tôi thấy với đề xuất của bạn:

1) Nếu bạn đề xuất rằng bạn sẽ đưa các kỹ sư phần mềm mới vào lĩnh vực QA trong một thời gian ngắn, điều này sẽ không có tác dụng ngược? - họ có thể cho rằng QA là việc bạn làm khi bạn là người mới và bạn không hiểu bạn đang làm gì - sau tất cả, đó là cách nó hoạt động với họ.

2) Trở thành một người thử nghiệm rất tệ trong một thời gian sẽ không nhất thiết phải dạy họ bất cứ điều gì có giá trị. Nhưng nó có thể khiến họ không thể tin được sau này, bởi vì họ sẽ cho rằng họ biết tất cả về thử nghiệm bây giờ, bởi vì họ đã dành 6 tuần trong một bộ phận kiểm tra một lần.

3) Cho rằng rõ ràng là họ sẽ chỉ ở đó trong một thời gian ngắn và bộ phận QA sẽ biết điều này, cũng có khả năng họ sẽ chỉ được giao những nhiệm vụ tương đối dễ dàng, không cần sự giám sát hoặc hiểu biết, nhưng khiến họ bận rộn . Điều này sẽ chỉ củng cố 1 và 2.

4) Nếu bạn muốn tránh 1, 2 và 3, bạn sẽ thuyết phục bộ phận kiểm tra của mình như thế nào để đầu tư một lượng năng lượng khổng lồ vào việc giảng dạy và giám sát một người thậm chí không quan tâm đến việc kiểm tra? (Tôi có thể nói với bạn, phải mất một lượng thời gian và năng lượng đáng sợ để làm việc với ai đó, hãy nhớ, đã không được chọn vì khả năng thử nghiệm của họ . Bạn sẽ không cung cấp tài nguyên bổ sung cho nhóm thử nghiệm trong vài tuần, bạn Tôi đang yêu cầu họ mất một trong những người có kinh nghiệm nhất trong vài tuần, trong khi họ dạy người mới của bạn).

Đã nói tất cả, tôi nghĩ mục tiêu chung của bạn - để tăng sự hiểu biết về kiểm thử của các kỹ sư phần mềm mới - thực sự tuyệt vời. Tôi nghĩ rằng đề xuất của Greg có nhiều khả năng đạt được điều đó hơn - khiến các nhóm dev & QA của bạn cộng tác chặt chẽ với nhau và làm việc để phá vỡ mọi rào cản giữa các đội. (Tôi hiện đang làm việc trong một công ty nơi những người thử nghiệm và lập trình viên ở cùng một đội - điều đó thực sự rất tuyệt và tôi không bao giờ muốn quay lại làm việc trong các nhóm riêng biệt.)

Nếu bạn vẫn muốn các lập trình viên tham gia vào QA - đây là một gợi ý: dẫn dắt bằng ví dụ. Tự đi trước. Có lẽ biến nó thành thứ gì đó mà các thành viên trong nhóm của bạn sẽ làm khi họ đã tốt và muốn có thêm lợi thế, bằng cách dành một chút thời gian mỗi tuần với các đội khác chuyên về các lĩnh vực chồng chéo - kiểm tra, DBA, v.v. Nếu bạn trình bày nó như thế, sau đó bạn sẽ có nhiều cơ hội thành công hơn.


0

Tôi đã sắp xếp một con đường sự nghiệp giống như những gì bạn thường thấy. Tôi bắt đầu làm phần mềm hỗ trợ cho vật lý thách thức khoa học, rồi cuối cùng làm việc trong giao điểm của kiến ​​trúc, lập trình và thuật toán cho một công ty máy tính. Sau đó, tôi đã tối ưu hóa hiệu suất của một mã kỹ thuật chính trong vài năm, nhưng ngay cả công việc đó cũng hết. Bây giờ, khi tôi sắp đến tuổi nghỉ hưu, tôi đang làm QA với cùng một mã. Đó là sự kết hợp của thử thách và sự quyết liệt. Chúng tôi có một anh chàng mới thực sự sắc sảo làm việc 100% trong việc sửa lỗi và tôi dành rất nhiều thời gian để làm việc với anh ta. Đó là một vị trí đầy thách thức, và bạn có thể học được rất nhiều khi làm điều đó. Tại thời điểm này, mối quan tâm chính của tôi đối với sự phát triển chuyên nghiệp là dành cho hai cậu bé sinh đôi của tôi, là sinh viên năm nhất đại học. Vì vậy, tôi có hứng thú mới trong việc học (hoặc học lại) những thứ sẽ phù hợp với nghề nghiệp của họ, đặc biệt là toán ứng dụng. Bây giờ tôi có một quan điểm khác về những điều mà tôi quan tâm với QA / xác nhận, trong những thế kỷ trước đó là tốc độ, tốc độ, tốc độ bằng mọi giá.


Giai thoại này dường như không chứa bất kỳ câu trả lời nào cho câu hỏi.
Andrew Medico

-2

Kiểm thử phần mềm là quá trình phá hủy hơn là mang tính xây dựng. Nhưng lập trình viên nghĩ về việc xây dựng sản phẩm của họ để đảm bảo sản phẩm hoàn thành đúng thời hạn và với ngân sách. Nếu nhà phát triển phần mềm nghĩ rằng phá hủy sản phẩm của chính họ thì ai sẽ là người bên cạnh xây dựng sản phẩm. Vì vậy, mỗi phần của chu trình phát triển phần mềm phải được thực hiện bởi những người được chỉ định trong từng phần của chu kỳ phát triển. Nếu bạn tham gia vào hai lĩnh vực trở lên thì chắc chắn bạn sẽ không bao giờ hoàn hảo với bất kỳ ai trong số họ, vì vậy hãy làm một điều hoặc là lập trình viên hoặc QA hoặc bất kỳ tùy chọn nào khác và hoàn hảo về điều đó.

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.