Có điều gì giống như vai trò của nhóm tái cấu trúc / khả năng bảo trì của nhóm trong các công ty phần mềm không?


8

Vì vậy, tôi làm việc trong một công ty phát triển phần mềm nhúng, các nhóm khác tập trung vào phát triển cốt lõi phần mềm của các sản phẩm khác nhau và bộ phận của tôi (ở một vị trí địa lý khác) đặt tại nhà máy cũng phải đối phó với phát triển phần mềm. , nhưng trên tất cả các sản phẩm, để chúng tôi cũng có thể khắc phục mọi thứ nhanh hơn khi các dòng bị hỏng do sự cố phần mềm với sản phẩm.

Nói cách khác, chúng tôi là những người tổng quát trong khi các nhóm khác chuyên về từng sản phẩm.

Điều quan trọng là, rất khó để tham gia vào phát triển cốt lõi khi bạn được phân phối theo địa lý (vâng, tôi biết điều đó thực sự không khó, nhưng có thể có những rào cản văn hóa / chính trị ngoài ý muốn khi nói đến kỷ luật cộng tác từ xa ).

Vì vậy, tôi đã hiểu rằng, vì chúng tôi hiện đang dập lửa và hơi bị sử dụng / sử dụng phụ (mặc dù chúng tôi là một bộ phận mới, hoặc có thể đó là lý do), tôi nghĩ rằng một vai trò tốt cho chúng tôi có thể phát hiện các khu vực về cơ hội tái cấu trúc và tái cấu trúc mã và tất cả các triển khai khác có thể phải làm với việc quản lý khả năng bảo trì và mô đun hóa. Các nhóm khác không tập trung vào việc này vì họ không có thời gian và họ có thời hạn quyết liệt, làm hỏng chất lượng của mã (câu chuyện vĩnh cửu của các dự án phần mềm)

Vấn đề là tôi muốn nhóm / bộ phận của mình được ban quản lý và các nhóm khác công nhận vai trò này một cách chính thức và tôi gặp khó khăn khi đưa ra một định nghĩa / danh tính tốt cho nhóm của chúng tôi về vấn đề này.

Vì vậy, câu hỏi của tôi là: vai trò này đã tồn tại chưa?, Hay tôi là người đầu tiên tạo ra thứ gì đó như thế này?

Chỉnh sửa : Ý tôi là một nhóm thúc đẩy các sáng kiến ​​tái cấu trúc, không tự mình thực hiện tất cả các công việc tái cấu trúc. Giống như một cộng đồng nguồn mở cho một sản phẩm nguồn mở, bây giờ tôi nghĩ về nó.

Câu trả lời:


14

Tôi chưa bao giờ nghe nói về một điều như vậy tại bất kỳ công ty nào mà tôi đã làm việc hoặc phỏng vấn. Các công ty thường chỉ muốn trả tiền cho các tính năng mới hoặc thay đổi có những cải tiến có thể đo lường được cho người dùng cuối (như cải tiến hiệu suất). Mã tái cấu trúc không làm điều này theo cách có thể đo lường trực tiếp.

Điều tôi đã chứng kiến ​​tại các công ty hiểu và quan tâm đến chất lượng mã là các nhà phát triển được khuyến khích tái cấu trúc mã khi họ làm việc. Nếu bạn định thay đổi tập tin bằng mọi cách, bạn cũng có thể dọn sạch nó trong khi bạn ở đó. Thêm kiểm tra đơn vị, tái cấu trúc, chạy một công cụ phân tích tĩnh, v.v.

Điều này có hai mục đích. Đầu tiên, mã được tích cực cải thiện theo thời gian mà không ủy thác nhiệm vụ đó cho bất kỳ nhà phát triển nào. Thứ hai, thời gian chỉ dành để cải thiện mã cần phải thay đổi. Nếu bạn có các mô-đun mã sẽ không bao giờ được chạm vào nữa, sẽ không có nhiều ý nghĩa trong việc dành thời gian để duy trì chúng. Họ sẽ không cần nó. Tốt hơn là dành ít thời gian hơn bằng cách chỉ tái cấu trúc những mô-đun có khả năng thay đổi nhất trong tương lai.


1
Tôi muốn đồng ý với điều này, nhưng các nhà phát triển và doanh nhân đều nổi tiếng là những người dự đoán kém về những gì thực sự sẽ cần thay đổi, và một cá nhân hoặc nhóm chờ đợi lâu hơn trước khi tái cấu trúc mã kém (đặc biệt là mã với các bài kiểm tra hoặc tài liệu kém hoặc không tồn tại) , mã càng dễ gãy và bất kỳ mã phụ thuộc nào bắt đầu trở thành. Chắc chắn nó đã đến một điểm mà ngay cả những thay đổi nhỏ cũng có rủi ro cao do sự tích lũy của các vụ hack và sự phụ thuộc "chỉ một lần này" trong các lĩnh vực khác của hệ thống, và không ai nhớ phần nào của thiết kế là cố ý so với sự cố.
Aaronaught

1
@Aaronaught Tôi không nói rằng bất cứ ai cũng nên cố gắng dự đoán những gì sẽ cần thay đổi vào một thời điểm nào đó trong tương lai. Tôi đang nói rằng bạn viết các bài kiểm tra và cấu trúc lại những gì bạn biết bạn sẽ thay đổi vì một bản sửa lỗi hoặc tính năng mới yêu cầu nó. Những thứ thay đổi thường xuyên nhất sẽ tự nhiên được chú ý nhất.
Bill Lizard

Tôi xin lỗi nếu tôi đọc quá sâu giữa các dòng, nhưng bạn có nói rằng chúng ta không nên viết bài kiểm tra cho mã mới trừ khi và cho đến khi chức năng cần thay đổi? Đối với mã kế thừa có thể đó là một cách tiếp cận hợp lý để trì hoãn việc viết / tái cấu trúc kiểm tra cho đến khi cần thay đổi, nhưng đối với các dự án mới - tốt, đó là cách chúng trở thành mã kế thừa.
Aaronaught

1
@Aaronaught Không, tôi coi mã mới là một thay đổi đối với cơ sở mã. Nó chắc chắn phải được kiểm tra và tái cấu trúc trước khi được kiểm tra.
Bill the Lizard

Tôi hiểu rồi - vì vậy bạn đang xem xét điều này từ góc độ có một cơ sở mã hiện có (bán) lớn có thể hoặc không được làm sạch / kiểm tra. Điều đó công bằng. Tôi đồng ý rằng không có nhiều điểm trong việc phẫu thuật tái tạo lại mã được sản xuất trong nhiều tháng / năm. Nhưng nếu nhóm phát sinh đám cháy (từ của OP) thì điều đó ngụ ý rằng mã hiện tại không ổn định và / hoặc mã mới được viết là kém chất lượng, theo tôi sẽ biện minh cho việc xem xét và tái cấu trúc mã liên tục / thường xuyên cho mã mới đăng ký và có thể là khu vực kém ổn định nhất của ứng dụng ... phải không?
Aaronaught

7

Nếu một lập trình viên biết người khác sẽ tái cấu trúc mã của họ - anh ấy / cô ấy sẽ KHÔNG BAO GIỜ phải cấu trúc lại công việc của chính họ. Thiết lập một nhóm riêng để tái cấu trúc giống như biện minh cho mã chất lượng kém hiện có ở nơi đầu tiên. Nó giống như thừa nhận rằng sẽ có vấn đề và sau đó sửa đổi cấu trúc tổ chức của công ty bạn để phục vụ cho nó. Tôi ngưỡng mộ niềm đam mê của bạn đối với mã chất lượng, nhưng có lẽ trong trường hợp này tốt hơn là nói "không phải việc của tôi". Tái cấu trúc nên là một bởi người lập trình viết mã, chứ không phải bởi bên thứ 3 đã không viết nó.


"Tái cấu trúc nên là một bởi lập trình viên viết mã chứ không phải bởi bên thứ 3 đã không viết nó." ... Vì vậy, bạn không bao giờ có thể cải thiện mã mà bạn đã không viết?
sjakubowski

Anh ấy nói hoàn toàn ngược lại. Giả sử bạn biết người khác sẽ sửa mã của bạn hiệu quả hơn sau khi bạn viết mã. Bạn sẽ đảm bảo nó tốt, hay chỉ có thể qua được?
Shawn D.

Tôi đã thấy rất nhiều người trong các tổ chức hoạt động theo cách này. Ngoại trừ họ làm điều đó vì những gì được khen thưởng (bạn cam kết bao nhiêu mã). "Ồ tôi sẽ gửi mã tào lao này và những người thử nghiệm sẽ tìm thấy tất cả các lỗi. Cuối cùng, tôi nhận được nhiều danh tiếng hơn vì đã thực hiện tất cả các sửa lỗi !! Hoàn toàn phá hủy năng suất.
Ben DeMott

@sjakubowski: anh ấy rõ ràng có nghĩa là bạn không bao giờ nên dựa vào bên thứ ba để cải thiện mã của mình (điều đó không cấm cải thiện mã từ người khác)
Doc Brown

4

Chúa không, đừng làm điều này. nghĩ về việc ở vị trí khác - bạn viết mã, bạn cam kết, bạn làm một số công việc khác, sau đó bạn được yêu cầu thực hiện một số lỗi trên mã của mình, vì vậy bạn nhận thấy nó đã được cập nhật, hãy kiểm tra và thấy rằng nó có không giống với những gì bạn đã viết ban đầu.

Bạn cũng mất rất nhiều khả năng truy nguyên trong SCM - tất cả những phương thức được di chuyển và đổi tên có nghĩa là mã bạn kết thúc không có dấu vết trực tiếp với bản gốc, nó thường xuất hiện quá nhiều để sử dụng các khác biệt.

Vì vậy, tất cả những gì bạn đang làm là chọc tức mọi người rằng bạn quét vào và nhấp vào một vài công cụ tái cấu trúc trong IDE của bạn, sau đó nói với các lập trình viên khác rằng bạn đã cải thiện nó cho họ. Kiểu như Slashdot nơi bạn thỉnh thoảng khiến mọi người trả lời những câu trả lời mỉa mai cho bài đăng của bạn với "ở đó, đã sửa nó cho bạn". Nó có thể ổn nếu nó hài hước trên /., Sẽ không phải là nếu bạn đã làm điều đó với mã của tôi - Tôi sẽ nói với bạn rằng đó là của riêng bạn từ đó trở đi và bạn có thể thực hiện bảo trì nó.

Bây giờ, nếu bạn đang thực hiện công việc thực sự về mã, thì khác, nhưng việc tái cấu trúc cho riêng nó, ngay cả theo hướng dẫn "bảo trì" sẽ chỉ gây khó chịu cho những người khác và điều đó sẽ tăng gấp đôi cho "muốn nhóm / bộ phận của tôi được công nhận bởi ban quản lý và các nhóm khác với vai trò này một cách chính thức "- bạn có thể nói" điều động chính trị "không? Bạn có thể tưởng tượng những gì các bộ phận khác sẽ nói khi mã của họ gặp sự cố trên trang web của khách hàng? "Thật tốt khi chúng tôi chạm vào nó lần cuối, nó phải là bộ phận tái cấu trúc đã phá vỡ nó, họ đã chạm vào nó lần cuối."

Những gì bạn có thể thử là thuyết phục ban quản lý rằng các phần khác nhau của phần mềm cần được chú ý nhiều hơn, đưa các phần kém lên và xem liệu họ có dành thời gian để cải thiện phần mềm không. Trong khi điều này xảy ra, bạn có thể đề nghị bạn lấy một số nhóm cốt lõi khác khối lượng công việc khác để thêm các tính năng cho sản phẩm cốt lõi. Tôi nghi ngờ bạn sẽ cố gắng triển khai lại chức năng cốt lõi cho họ, nhưng bạn sẽ tăng khả năng của bộ phận để thêm các tính năng có thể được đẩy trở lại vào nhóm cốt lõi, sau đó bạn sẽ chịu trách nhiệm nhiều hơn.


Những gì bạn đang mô tả không giống như tái cấu trúc. Tái cấu trúc có nghĩa là thực hiện các cải tiến thiết kế nhỏ, lặp đi lặp lại trong khi duy trì hành vi hiện có, sẽ được xác nhận bởi một bộ các thử nghiệm có sẵn. Nếu bạn không thể theo dõi những thay đổi này trở lại để đăng ký, thì bạn đang sử dụng SCM kém hoặc nhà phát triển không kiểm tra thường xuyên. Các nhà phát triển làm việc với mã của nhau (bao gồm cả tái cấu trúc) là một phần thiết yếu của quy trình; nếu điều này "chọc giận mọi người" thì có gì đó không đúng với quy trình của bạn (hoặc nhóm của bạn).
Aaronaught

Trên thực tế, nó có vẻ như là một nhóm rối loạn chức năng nếu các nhà phát triển nghĩ rằng một số người cụ thể "sở hữu" một phần mã và bỏ qua các yêu cầu thay đổi cho người đó thay vì chỉ thực hiện nó. Các trò chơi "khoai tây nóng" không tạo ra mã tốt, hoặc các đội tốt.
Aaronaught

Hãy xem xét anh chàng này muốn cả nhóm không làm gì khác ngoài việc tái cấu trúc, điều đó cho tôi thấy họ muốn có một cuộc sống thực sự dễ dàng, hoặc sẽ thực hiện những sửa đổi lớn.
gbjbaanb

Toàn bộ đội của anh ta đã không làm gì ngoài việc dập lửa, như đã nêu trong câu hỏi. Điều đó cho tôi thấy rằng mã được kiểm tra bởi các nhóm khác (hoặc ít nhất là một số nhóm khác) có chất lượng kém đặc biệt và khách quan. Tái cấu trúc và sửa lỗi hầu như không phải là một cuộc sống dễ dàng và các sửa đổi lớn sẽ xuất hiện là những gì được yêu cầu. Tại sao bạn nghĩ rằng người ban đầu viết mã - và một nhóm phát triển - sở hữu mã đó vĩnh viễn? Mọi người đều sở hữu và phải đối phó với tất cả các mã, đó là cách nó hoạt động trong thế giới của các chuyên gia.
Aaronaught

Đó là một điều chủ quan dựa trên mong muốn của anh ấy để có được nhiều sản phẩm cốt lõi. Để một vệ tinh tự ý quyết định làm việc trên lõi không phải là cách trang phục chuyên nghiệp hoạt động. Vì vậy, anh ấy phải sửa lỗi .. đó dường như là công việc của anh ấy, anh ấy là đội hỗ trợ / khách hàng chứ không phải nhóm phát triển. Bên cạnh đó, anh ấy nói rằng nhóm của anh ấy "không sử dụng / sử dụng phụ", điều này cho tôi biết mã cốt lõi không tệ đến thế. Quyền sở hữu sản phẩm là một điều hiệu quả, họ không phải là người duy nhất làm việc với nó, nhưng nó giúp đưa nhà phát triển mới vào nhóm làm việc cuối cùng với sản phẩm đó nếu có thể.
gbjbaanb

2

Nó phụ thuộc vào những gì bạn thực sự có nghĩa là bằng cách tái cấu trúc và bảo trì - cả về lý thuyết và thực tế.

Chúng tôi đã từng có một nhóm dành riêng cho việc dọn mã và sửa lỗi. Nó đã không hoạt động tốt như vậy, bởi vì, không ngạc nhiên, các nhà phát triển giỏi không muốn dành toàn bộ thời gian của họ để làm sạch mã và sửa lỗi.

Một số tổ chức chọn để có một nhóm "công nghệ phần mềm" chuyên dụng, họ sẽ có xu hướng dành nhiều thời gian cho việc xem xét mã và cố vấn cho các nhà phát triển ít cấp cao hơn về các thực tiễn tốt. Tuy nhiên, đây không phải là một nhóm kỹ thuật thực sự trừ khi nó tham gia nhiều vào các kế hoạch dự án, kiến ​​trúc, kế hoạch thử nghiệm, quy trình phát hành, v.v. Điều quan trọng là phải có cách tiếp cận toàn diện này, và tốt nhất là đào tạo về phần mềm hoặc kỹ thuật khác, mặt khác, nó có xu hướng chuyển sang "dọn dẹp" ở trên.

Điểm mấu chốt, các nhà phát triển không tạo ra người điều khiển tốt trong một đoạn đường dài. Và ngay cả khi bạn có một nhóm kỹ thuật thực thụ, cách tiếp cận đó có xu hướng hoạt động tốt hơn với các nhóm chức năng chéo, nếu không, các nhóm khác có thể bắt đầu phớt lờ hoặc thậm chí phẫn nộ nỗ lực, xem nó như một tháp ngà.

Đừng có một phòng đầy các nhà phát triển không làm gì ngoài việc tái cấu trúc và nghiên cứu lại. Nó sẽ không kết thúc tốt đẹp.


1

Thông thường khi mọi người thực hiện tái cấu trúc, mọi người đều sử dụng tái cấu trúc cơ hội . Vì vậy, tôi không nghĩ rằng bạn sẽ tìm thấy một tên chung cho một thực hành không phổ biến như vậy.

Nhưng trong tình huống bất thường của bạn, mặc dù có tất cả mọi người tái cấu trúc có thể là lý tưởng, nhưng có vẻ như nó sẽ có ý nghĩa để thử nó.

Tuy nhiên, những vấn đề chính trị tương tự hiện đang ngăn cản mọi người tái cấu trúc mã của riêng họ rất có thể sẽ khiến bạn thất vọng (đó có lẽ là một phần lý do tại sao không có tên cho những gì bạn đang nghĩ đến). Các đội khác sẽ ổn khi bạn "cải thiện" mã của họ chứ? Điều gì xảy ra khi lần đầu tiên bạn giới thiệu một lỗi trong quá trình thực hiện một công việc quản lý nào đó không được coi là có giá trị ngay từ đầu? Điều gì xảy ra khi một nhóm khác không thích thiết kế mới của bạn?

Bạn không thể đảm bảo rằng bạn sẽ không bao giờ tốn một đội khác một thời gian. Và hầu như bất kỳ đối số nào cho thấy bạn sẽ có hiệu ứng tích cực ròng cũng có thể được áp dụng để cho phép họ tự cấu trúc lại.

Có thể những gì bạn đang đề xuất sẽ được chấp nhận nhưng vẫn không cho phép mọi người tái cấu trúc khác - nhưng cách duy nhất tôi có thể hình dung điều này xảy ra là nếu mọi người về cơ bản đồng ý rằng tái cấu trúc là một điều tốt giúp tiết kiệm thời gian trong thời gian dài nhưng mất thời gian ngắn hạn và nhóm của bạn là người duy nhất có đủ thời gian rảnh trong thời gian ngắn. Và nếu các đội khác tin tưởng bạn thực hiện tái cấu trúc và sẵn sàng đối phó với bất kỳ vấn đề nào mà nó gây ra cho họ.


1

Có một nhóm chỉ tập trung vào tái cấu trúc và duy trì và thực hiện nó với chi phí của các nhóm phát triển khác là nguy hiểm cho tổ chức của bạn. Cần phải có một cam kết từ quản lý cấp trên, người kiểm tra và tất cả các nhóm phát triển để cải thiện chất lượng mã thông qua tái cấu trúc để cải thiện khả năng bảo trì và giảm thiểu lỗi. Trách nhiệm của mọi người là cải thiện mã. Khi tái cấu trúc cần phải được thực hiện, sau đó nó nên được đưa vào lịch phát hành cùng với các tính năng mới. Các nhà quản lý cần được giáo dục và hiểu rằng việc dành thời gian để cải thiện mã sẽ được đền đáp trong thời gian dài, bởi vì nợ kỹ thuật là thứ sẽ khiến sản phẩm bị đình trệ nếu không được thanh toán như một phần của quá trình phát triển đang diễn ra. Nếu tất cả những gì bạn đang làm là liên tục chống lại các đám cháy từ việc sửa lỗi liên tục,

Nhóm của bạn nghe có vẻ giống như một nhóm nhân viên kiến ​​trúc / phần mềm chuyên phát triển kiến ​​trúc thế hệ tiếp theo sẽ dễ bảo trì hơn. Nhóm của bạn có lẽ nên tập trung vào cách chứng minh rằng tái cấu trúc trả tiền cho các loại "tóc nhọn", khuyến khích các nhà phát triển với các phương pháp và quy trình mới và giáo dục các bên liên quan chính trong quản lý để áp dụng chất lượng mã tốt hơn và khiến họ "mua vào" đến quá trình. Hãy đưa ra một kế hoạch để di chuyển các sản phẩm sang một kiến ​​trúc tốt hơn nếu có bất cứ điều gì bằng cách đặt một nền tảng đơn giản trước tiên. Hãy học những bài học đau đớn mà mọi người đã học được từ việc hỗ trợ các sản phẩm của bạn và đưa ra một kế hoạch để giảm bớt nỗi đau đó trong tương lai.


0

Nó khá phổ biến. Tôi đã làm việc tại một công ty phần mềm nơi đây là chuẩn mực. Bạn đã có các nhóm dành riêng để thực hiện chức năng mới. Sau đó, có một đội bảo trì đã sửa lỗi gây ra sự cố cho khách hàng. Nhóm bảo trì thuộc chi nhánh tư vấn / hỗ trợ của tổ chức.

Trong trường hợp đó, có những lợi ích cho các nhà phát triển, cụ thể là họ làm việc chặt chẽ hơn với khách hàng, thậm chí dành thời gian trên trang web. Các nhóm sản phẩm đang thực hiện phát triển mới hoàn toàn không tương tác với khách hàng (một tình huống đáng ghét imo).

Nó có vẻ phổ biến hơn trong các công ty phần mềm và các nhà cung cấp thuê ngoài mà trong việc cung cấp nhà. Tôi đang ở trong lĩnh vực tài chính và tôi chỉ có thể nghĩ về một ngân hàng đã sử dụng cấu trúc này trong quá khứ. Điều đó nói rằng, thông thường là các đội chiến thuật có thể xử lý các loại vấn đề đó như là một phần của bài đăng của họ. Nó không hoàn toàn giống nhau, nhưng tương tự.

Nếu nhóm của bạn đang bị sử dụng kém, bạn cần cẩn thận một chút. Việc sử dụng dưới mức có thể được dịch thành "chi phí không cần thiết" khá dễ dàng, vì vậy nhóm X của bạn có thể trở thành một nhóm X-1 khá nhanh chóng.

Một cách tiếp cận thích hợp hơn có thể là dành thêm một chút thời gian cho các bản sửa lỗi và kết hợp một số thời gian tái cấu trúc không thành công vào thời gian sửa lỗi.

Nó phụ thuộc vào cách công ty của bạn làm việc mặc dù. Điều thú vị là bạn không thực sự biết, vì vậy nếu bạn có một nhóm trưởng, sẽ đáng để thảo luận với họ. Nếu họ không biết, hãy để họ nói chuyện với người tiếp theo trong chuỗi (hãy tham gia vào đó, đừng bỏ qua). Nếu họ không biết liệu điều đó có phù hợp với những gì quản lý mong đợi hay không, bạn có thể rơi vào danh mục chi phí hơn là danh mục tài sả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.