Làm thế nào để chuyển đổi một lập trình sao chép / dán / spaghetti để nhìn thấy ánh sáng?


35

Câu hỏi này được lấy cảm hứng từ câu hỏi này . Trong khi câu hỏi khác được coi là cục bộ, tôi tin rằng vấn đề tiềm ẩn là một điều cực kỳ phổ biến trong ngành công nghiệp của chúng tôi. Tôi biết có một số nhà phát triển, những người sẽ đọc nó và nghĩ rằng tôi đang tạo ra thứ này và sau đó họ có thể trả lời cách mọi người quan tâm đến công việc của họ và muốn tìm hiểu, nhưng chỉ nhìn vào các bài đăng khác của Lập trình viên SE ( trường hợp cụ thể ), Tôi biết điều đó không đúng.

Vì vậy, giả sử bạn có ai đó trong nhóm của mình (hoặc có thể là đa số), quy trình vận hành tiêu chuẩn là sao chép / dán và ai tin rằng mọi thứ đều có thể được giải quyết nếu bạn chỉ thêm đủ các lệnh gọi và biến. Người này chưa bao giờ nghe về TDD, DRY hoặc RẮN và ngoài 40 giờ làm việc khi họ bận làm việc, họ không bao giờ đọc một cuốn sách phương pháp / phương pháp / thiết kế duy nhất.

Trước đây tôi (và những người khác) đã từng hỏi, làm thế nào để bạn dạy cho 3M . Nhưng bây giờ tôi nghĩ đó không phải là câu hỏi đúng. Câu hỏi thực sự là làm thế nào để bạn tiếp cận một người / nhóm như vậy và khiến họ tò mò về cách làm việc tốt hơn? Làm thế nào để bạn truyền cảm hứng cho họ để học? Không có điều đó, dường như tất cả các bài giảng, các cuộc họp, bài giảng, các cuộc thảo luận đều vô ích nếu họ hoàn toàn hạnh phúc khi trở lại bàn làm việc và làm những việc họ luôn làm.

Tôi làm việc với một nhóm người như vậy. Họ thực sự là những cá nhân khá sáng dạ, nhưng tôi ghét khi tôi nghe, "Tôi đã viết mã xong, chỉ cần cấu trúc lại và chia thành nhiều lớp để làm cho DXM hạnh phúc". Họ không tái cấu trúc để mã sạch hơn, dễ đọc hơn, có thể duy trì được, nhưng chỉ vì nếu không họ sẽ bị mắng. Tôi biết họ có khả năng học hỏi, dường như thiếu động lực chung.

Khi tôi phân phối công việc, nó thường có ít lỗi hơn và công việc tôi sở hữu không bao giờ trở thành quái vật 5000 dòng của một lớp. Những người khác sẽ đưa ra nhận xét như "mã của bạn sạch hơn và dễ đọc hơn nội dung của chúng tôi", vì vậy họ thấy sự khác biệt. Nhưng đồng thời, tôi cảm thấy như họ tin rằng họ được trả tiền trong 40 giờ bất kể họ làm gì, vì vậy họ thực sự không phiền nếu họ dành trọn 3 ngày trong QA để tìm kiếm một lỗi không nên được giới thiệu nơi đầu tiên Hoặc họ mất một tuần để sửa đổi một lớp vì có quá nhiều phụ thuộc mà cuối cùng họ chạm vào. Mặc dù, "có lẽ lớp đó nên được viết khác đi" dường như không bao giờ bật lên.

Có thể làm bất cứ điều gì trong những tình huống này? Có ai thành công chưa? Hoặc là tốt nhất để cô lập tư duy như vậy cho các phần không quan trọng của dự án và giảm thiểu thiệt hại?

LƯU Ý: Khi tôi nói "thiếu động lực". Tôi không nghĩ rằng nó thiếu động lực để làm việc hoặc làm một công việc tốt bởi vì họ chỉ đơn giản là ngừng quan tâm. Hầu hết các nhóm của chúng tôi thực sự hoàn toàn ngược lại. Họ chắc chắn quan tâm đến sản phẩm. Chúng tôi có những người sẽ làm việc đêm và cuối tuần. Phần tôi đang cố gắng vượt qua là với những thói quen và kỹ năng được cải thiện, họ thực sự sẽ không phải làm việc nhiều. Tôi đoán rằng điều "40 giờ" làm cho bài đăng này nghe có vẻ hơi tiêu cực.


Đây là đất nước nào?

3
@ ThorbjørnRavnAndersen - Hoa Kỳ. bây giờ bạn phải viết một phản hồi vì tôi rất tò mò rằng thông tin đó đã ảnh hưởng đến nó như thế nào :) Tôi luôn luôn mặc dù chúng ta đều là con người và loại công cụ này là phổ biến. Và không, câu hỏi này không liên quan gì đến gia công phần mềm.
DXM

8
Sự khác biệt về văn hóa giữa các quốc gia có thể là đáng kể và bất kỳ nỗ lực nào để đưa ra sự thay đổi đều phải tính đến điều này. Những gì hoạt động trong một nền văn hóa rất có thể sẽ không hoạt động trong một nền văn hóa khác. Trong trường hợp của bạn, tôi tin rằng cách tốt nhất là quản lý chính thức nâng cao những gì được chấp nhận.

Câu trả lời:


18

Bạn tìm cho mình lý do: "Tôi biết họ có khả năng học hỏi, dường như là thiếu động lực chung."

Có những người đam mê công việc của họ. Và có những người khác, đôi khi đủ năng lực, đang làm việc chỉ vì tiền . Họ biết công cụ của họ, nhưng họ không thích công việc của họ. Họ sẽ không dành thêm thời gian để thực hiện tái cấu trúc bổ sung để làm cho mã có thể đọc được hoặc giải quyết vấn đề hấp dẫn khi một bản hack nhanh và xấu có thể thực hiện công việc.

Hiện tượng này tồn tại trong mọi công việc. Chỉ là một số công việc không thú vị lắm (bạn có thấy một kế toán yêu thích công việc của mình và mơ về nó khi còn nhỏ không?), Nhưng trong lập trình, có rất nhiều người thực sự yêu thích những gì họ đang làm (nếu không Lập trình viên.SE sẽ khá trống rỗng). Điều này có nghĩa là với tư cách là những nhà phát triển đam mê, nói chuyện hàng ngày với các nhà phát triển đam mê khác, chúng ta có nhiều cơ hội hơn để ngạc nhiên khi thấy một người làm lập trình chỉ vì tiền.

Chúng ta có thể làm gì? Không quá nhiều. Trong mọi trường hợp, điều đó không phải với bạn, mà là với nguồn nhân lực để chọn những người thực sự có động lực¹. Và sa thải những người không.

Bạn có thể cố gắng tự động viên đồng nghiệp của mình, nhưng điều đó cực kỳ khó khăn. Nếu bạn cho họ đọc sách, họ sẽ trả lại chúng chưa mở một vài tuần sau đó. Nếu bạn cho họ một lời khuyên, họ sẽ không lắng nghe, vì họ không quan tâm².

Bạn có thể:

  • Thuyết phục sếp của bạn thiết lập một số quy tắc nghiêm ngặt trong công ty của bạn: hướng dẫn về phong cách , v.v ... Điều này sẽ không thúc đẩy những người đó làm việc tốt hơn, nhưng ít nhất họ sẽ không thể cam kết mã nguồn không phù hợp với yêu cầu .

  • Làm việc theo yêu cầu, đặc biệt là yêu cầu phi chức năng . Điều gì về một yêu cầu cho biết rằng một dự án cụ thể phải chứa ít hơn 5.000 dòng mã IL (không, tôi không nói về LỘC vô nghĩa ) ³? Điều gì về yêu cầu để có được kết quả cụ thể ở độ phức tạp chu kỳ hoặc khớp nối lớp ?

  • Tăng số giờ bạn dành cho công ty của bạn để thực hiện đánh giá mã . Chỉ định nội dung được đánh giá: nếu bạn có danh sách kiểm tra, hãy thêm các điểm liên quan đến tái cấu trúc, khả năng đọc, nhận xét rõ ràng và hữu ích, v.v. Nếu bạn không có danh sách kiểm tra, bạn phải.

  • Sử dụng [thêm] lập trình cặp . Nó có thể giúp cải thiện chất lượng mã và thúc đẩy các đồng nghiệp ít động lực hơn.

  • Sử dụng hệ thống bù tương tự như những gì được sử dụng tại Fog Creek.


Đó là những gì các cuộc phỏng vấn nói về: trước khi tuyển dụng bạn, nguồn nhân lực không chỉ là tài sản kỹ thuật của bạn, mà còn là động lực của bạn . Đáng buồn thay, một số công ty quên đi phần thứ hai của cuộc phỏng vấn này và thuê những người không thích lập trình quá nhiều. Hạnh phúc, trong hầu hết các trường hợp, công việc trong các công ty đó không bao giờ thú vị, và thử nghiệm Joel hiếm khi vượt quá 2.

² Họ thực sự không quan tâm, ngay cả khi họ kiếm được ít tiền hơn. Tôi khá thân với một trong những khách hàng của mình (tôi là một freelancer) tin rằng công việc của anh ấy là phát triển trang web cho chính khách hàng của mình. Ông cũng có một nhà thiết kế. Tôi đã nói với họ nhiều lần về những cách họ có thể tăng năng suất lên 2 hoặc nhiều hơn. Nếu họ chỉ thuê một người có năng lực, họ sẽ tăng doanh thu của họ ít nhất là 3. Nhưng họ có đủ tiền và không quan tâm đến chất lượng hoặc chi phí cho những khách hàng không biết gì, so với ai đó làm việc hiệu quả.

Ý tôi là số dòng mã IL mà bạn thấy trong Mã số liệu trong Visual Studio , số liệu thực sự có nghĩa là gì đó. Các thực LỘC không quan trọng và bạn không cần phải đo lường nó; đó là một trong những số liệu ngu ngốc nhất Thực thi các dòng mã IL có nghĩa là các nhà phát triển sẽ buộc phải thực sự cấu trúc lại mã, và không chỉ thu gọn mười dòng mã trong một dòng không thể đọc được.


3
Tôi không đồng ý: Động lực làm việc và động lực học tập là hai điều hoàn toàn riêng biệt. Ví dụ, một số người yêu thích công việc và công việc của họ, nhưng họ có thể nghĩ "RẮN" chỉ là một từ thông dụng nhảm nhí hay "TDD" là một khái niệm tháp ngà không được sử dụng trong thế giới thực.
nikie

5
@maple_shaft đã đúng: Một số người làm việc 70 giờ một tuần và sản xuất số lượng mã spaghetti tồi tệ nhất mà không có bất kỳ thử nghiệm nào (họ không có thời gian cho những điều vô nghĩa như vậy!). Mặc dù đam mê và không ngừng nâng cao kỹ năng, nhưng về nhà sau 40 giờ, vì họ biết rằng dù sao họ cũng không thể làm việc hiệu quả hơn thế. Đừng trộn lẫn hai thứ lên!
nikie

13
Không không không. Sẵn sàng được khai thác bởi một chủ nhân! = Khả năng tạo mã chất lượng. Có quá nhiều thứ "ở lại đến 2 giờ sáng để hoàn thành công việc" vô nghĩa xảy ra trong ngành của chúng tôi mà không có sự kết hợp của chúng tôi với Nhà phát triển lý tưởng huyền thoại. Nếu BẠN thích làm việc 80 giờ một tuần, hãy tiếp thêm sức mạnh cho bạn. Tôi có những thứ quan trọng đối với tôi ngoài công việc. Để kết luận tôi xấu về những gì tôi làm vì điều đó là tốt nhất. Không có ngành công nghiệp nào khác tránh xa những gì chúng ta có được, và chúng ta phải thay đổi điều đó, nếu nó sẽ thay đổi.
Dan Ray

6
Phải làm việc đến 2 giờ sáng để làm việc trong một dự án là một cách rất hiệu quả để giết chết mọi tình yêu đối với dự án nói trên, đặc biệt là đối với những người có nghĩa vụ gia đình.

2
Tôi nghĩ rằng tất cả các điểm được thực hiện ở đây là hợp lệ, nhưng một số bạn có thể đã hiểu nhầm MainMa. Anh ấy không bao giờ nói làm việc đến 2 giờ sáng vì bạn bị ép buộc do thời hạn. Thay vào đó, anh chỉ đơn giản là đề cập đến những người bị cuốn vào sự phấn khích khi thấy một cái gì đó làm việc mà đôi khi, họ thà làm nó còn hơn là đi ngủ. Tôi có thể liên quan đến điều này. Đối với tôi một ví dụ cực đoan là một nhiệm vụ tôi đang thực hiện để thêm hỗ trợ đường hầm vào thư viện phát video của chúng tôi. Ước tính là 5 ngày, nhưng với kiến ​​trúc đường ống mới của chúng tôi, mọi thứ kết hợp với nhau rất tốt, tôi bắt đầu vào chiều thứ sáu ...
DXM

12

"Tôi đã viết mã xong, chỉ cần cấu trúc lại và chia thành nhiều lớp để làm cho DXM hạnh phúc".

Dòng suy nghĩ đó đúng là có một căn bệnh ung thư đối với bất kỳ đội nào và sẽ giết chết động lực của toàn đội nếu không được chăm sóc ngay lập tức. Tất nhiên tôi đang đề cập đến thực tế là bằng thâm niên và / hoặc bằng khen, bạn tình cờ ở vị trí của cơ quan kỹ thuật, cho bạn sức mạnh để giúp ảnh hưởng và mang lại những thông lệ tốt cho nhóm của bạn.

Đây là tất cả tốt và tốt, tuy nhiên nếu nhóm của bạn được bán rõ ràng trên các quy trình này, họ sẽ không đưa bạn ra những tuyên bố như thế này cho thấy rõ sự thiếu tôn trọng quy trình và thiếu tôn trọng bạn. Họ vẫn xem những thực tiễn tốt nhất này là một trở ngại do bạn gây ra và không phải là một quá trình thuộc sở hữu của nhóm mà nhóm của bạn sẽ bảo vệ công trạng của chính mình.

Bạn đề cập trong các ý kiến ​​trước đây rằng các thành viên khác trong nhóm thực sự tuân theo các thực tiễn và tiêu chuẩn này và áp dụng chúng một cách chính xác. Tập trung chú ý đầu tiên vào việc hỗ trợ từ họ, hỏi họ những gì hoạt động, những gì không hoạt động, những gì họ thích và những gì họ muốn thấy đã thay đổi. Nếu bạn làm điều này và xem trọng ý kiến ​​của họ, họ sẽ cảm thấy rất khác về các tiêu chuẩn như thể họ là một quyết định của cộng đồng thay vì một thủ tục được trao cho họ từ cấp trên.

Bạn tăng cường hỗ trợ cho các thực tiễn và tiêu chuẩn tốt nhất bằng cách chỉ ra cho nhóm cách họ đã cải thiện quy trình phát triển phần mềm hoặc chất lượng của phần mềm.

Giữ một cuộc bỏ phiếu về các vấn đề để thảo luận và ghi lại kết quả, lý tưởng là mọi quyết định nên được nhất trí vì tính hợp pháp nhưng nếu bạn đang đối phó với những người cản trở đường lối cứng rắn thì điều này có thể là không thể và chỉ có thể trì hoãn mọi vấn đề. Sử dụng một phiếu bầu đa số trong tình huống này. Nếu đa số chống lại các tiêu chuẩn và thực tiễn đề xuất của bạn thì bạn đã mất phòng rồi, chỉ cần từ bỏ nó vào thời điểm đó.

Họ sẽ sở hữu những tiêu chuẩn và quy trình đó và sẽ thực thi chúng để bạn không phải làm vậy. Là một nhà lãnh đạo công nghệ, bạn không cần phải tuyên bố sắc lệnh và nghị định, đó là một cách kém để trở thành một nhà lãnh đạo.

Một khi nhóm cảm thấy như thể họ sở hữu các quy trình thì các thành viên của nhóm bắt đầu gắn nhãn bạn với các quy trình nhất định và các thực tiễn tốt nhất sẽ là bất hợp pháp khi nghĩ như vậy. Nhóm của bạn sẽ giúp điều chỉnh thái độ này ở những người khác.


1
+1 để nhấn mạnh vào việc tập trung vào các mối quan hệ hơn là các nguyên tắc
sunwukung

5

Câu hỏi hay! Tôi nghĩ câu trả lời phụ thuộc vào lý do tại sao mọi người không muốn cải thiện kỹ năng của họ. Câu trả lời có thể là:

  • Họ nghĩ rằng họ quá bận rộn để học một cái gì đó mới hoặc họ nghĩ rằng cách làm mới (như viết tất cả các bài kiểm tra đó) sẽ khiến họ mất nhiều thời gian hơn và họ không có thời gian cho việc đó. Sau đó, câu trả lời rõ ràng sẽ là: cho họ thêm thời gian. Học cái gì đó hoặc cố gắng một cái gì đó giống như TDD khi bạn đã điều luôn làm khác đi sẽ mất nhiều thời gian hơn các cặp vợ chồng đầu tiên của thời đại. Nếu lập trình viên của bạn không có thời gian đó, bạn không thể đổ lỗi cho họ vì đã không cố gắng.
  • Họ có một nhận thức khác nhau về các kỹ năng của chính họ, tức là họ nghĩ rằng họ là những lập trình viên rất giỏi sản xuất mã chất lượng cao. Đây là địa hình tâm lý khó khăn, bởi vì phá vỡ niềm tin đó có thể rất mất thẩm mĩ. Có lẽ một số loại cạnh tranh không chính thức có thể giúp ích (ai tạo ra ít lỗi / tính năng nhất? Mã ngắn nhất? Ít WTF nhất / phút trong đánh giá mã?).
  • Có thể có một vấn đề động lực thực sự (tức là họ chỉ muốn "làm thời gian của họ và để lại một mình" cho đến khi đóng cửa). May mắn thay, điều này quá chung chung / không liên quan đến lập trình, bởi vì tôi thực sự không có câu trả lời cho điều đó.
  • Họ là người mới bắt đầu và họ không biết rõ hơn. Trong trường hợp đó, đào tạo, đánh giá mã có thể giúp ích hoặc một "câu lạc bộ sách" nơi một thành viên trong nhóm phải thảo luận về một cuốn sách kỹ thuật mới mỗi tháng.
  • Họ đã từng thấy những viên đạn bạc trước đó, (và thất vọng cay đắng) và họ nghĩ bất cứ điều gì bạn đang cố gắng bán chúng chỉ là một từ thông dụng mới nghe có vẻ hay trên lý thuyết và ít được sử dụng trong thực tế. Trong trường hợp đó, việc chứng minh các lợi thế trong quá trình đánh giá mã và các phiên lập trình cặp có thể hoạt động. Cố gắng không trở thành một người biết tất cả khi bạn làm điều đó.

Giải pháp tốt nhất thực sự phụ thuộc vào vấn đề gốc: Ví dụ: hướng dẫn, số liệu và đánh giá mã hóa chính thức có thể có hiệu quả cho người mới bắt đầu, nhưng những người trong "nhận thức sai về kỹ năng của chính họ" -crowd có thể đấu tranh chống lại họ hoặc chơi các số liệu vì họ thấy họ như những trở ngại quan liêu phản tác dụng để hoàn thành công việc của họ.


Điểm tốt. Tôi đặc biệt thích điều đầu tiên - và tôi thậm chí còn khái quát: Trước tiên bạn phải nói rõ rằng việc học trong công việc được khuyến khích , và rõ ràng nên dành thời gian cho nó một cách rõ ràng.
sleske

Nếu mọi người có nhận thức khác nhau về kỹ năng của họ, có lẽ họ chỉ đang đo lường thành công ở các thông số khác nhau? Nếu bạn đang đo lường chất lượng của mã và họ đang nghĩ về việc mã có thể được tạo ra nhanh như thế nào, rõ ràng kết quả sẽ khác - trong trường hợp này, nên hỏi họ đo lường sự thành công như thế nào. Những người khác nhau có cách nghĩ khác nhau về điều này.
tp1

3

Câu hỏi thực sự là làm thế nào để bạn tiếp cận một người / nhóm như vậy và khiến họ tò mò về cách làm việc tốt hơn? Làm thế nào để bạn truyền cảm hứng cho họ để học? Không có điều đó, dường như tất cả các bài giảng, các cuộc họp, bài giảng, các cuộc thảo luận đều vô ích nếu họ hoàn toàn hạnh phúc khi trở lại bàn làm việc và làm những việc họ luôn làm.

Đó là nó! Đây thực sự là một câu hỏi thực sự.

Để cung cấp một số thông tin, chúng tôi đơn giản là không có thời gian để đào tạo chính quy - nhưng đôi khi nếu tôi làm - nó vẫn không thấy sáng. Tôi cũng là một phần của các công ty nơi đào tạo chính quy trở thành một quá trình nhưng và tôi thường là một nhân chứng đến nỗi họ hầu như không dạy họ cách suy nghĩ.

Vì vậy, câu hỏi mà tôi đặt ra cho họ không phải là làm thế nào để dạy họ - mà là làm thế nào để họ học? Sự khác biệt là tinh tế nhưng đó là những gì sẽ làm cho tất cả sự khác biệt.

Tôi không biết mình có đúng không; nhưng thường thì tôi tin vào một hộp thoại của Ma trận bộ phim - "Đó là câu hỏi thúc đẩy chúng tôi!" Điều quan trọng nhất là khiến họ suy nghĩ, khiến họ hỏi tại sao! Và tất nhiên, hầu hết những người nghĩ rằng họ đã biết tất cả mọi thứ về một số mẫu thiết kế bởi vì họ đạt điểm cao trong các khóa học đại học - là khó khăn nhất ở đó.

Làm thế nào để bạn có được làm cho họ những câu hỏi như vậy? Cách tiếp cận chung của tôi là "ném chúng xuống ao nếu bạn muốn chúng học bơi" . Tôi đồng ý rằng mọi người có thể không đồng ý; và tôi sẽ vui lòng đồng ý không đồng ý với họ. Khi bạn ném chúng xuống ao - chúng thực sự không học bơi tự động; nhưng nó phát ra một bản năng sinh tồn khiến họ phải suy nghĩ - một khi điều đó xảy ra, họ sẽ tự nhiên nghĩ về CÁCH và TẠI SAO.

Một ví dụ thực tế tôi đưa ra cho mọi người là đưa họ vào một dự án phức tạp đáng kể so với những gì họ đã hy vọng có được trên đó và để họ chiến đấu với trận chiến của chính họ. Khi họ bắt đầu làm sáng tỏ mã và thấy khó theo dõi nó - bạn nhận ra họ bắt đầu hỏi câu hỏi hay.

Điều này nghe có vẻ hơi cực đoan, điều này nghe có vẻ lãng phí tài nguyên . Và tôi chắc chắn, có nhiều người khác sẽ cho tôi lời khuyên không nên làm điều này. Nhưng điều này đã làm việc cho tôi!

Bất kể gói trả tiền và thẻ nhân sự nào bạn chỉ định, nó sẽ không giải quyết được vấn đề động lực cơ bản . Vì con đường duy nhất là họ bị thử thách; Nếu bạn châm ngòi cho tinh thần con người cơ bản này - mọi thứ khác đều hoạt động. Nếu bạn không thể là một trò chơi lỏng lẻo.

PS: Chỉ là tình cờ tôi đã đăng một câu trả lời ở đây https://softwareengineering.stackexchange.com/questions/127021/how-do-you-train-freshers/127034 - và tôi đã nhận được tất cả chủ yếu là hầu hết mọi người tin rằng bằng cách nào đó các doanh nghiệp không thể lãng phí tài nguyên! Tôi chắc chắn, câu trả lời này có thể được điều trị tương tự ở đây. Nhưng sự thật là, làm cho mọi người làm việc và khiến họ tin vào việc làm tốt là một chủ đề của tâm lý con người về cách chế tạo các giáo trình của khóa học.

Dù sao, nhiệm vụ mà bạn đang mô tả ở đây có nghĩa là bỏ qua niềm đam mê bên trong để làm thay đổi lớn. Và hệ thống càng lớn thì càng khó. Bắt đầu với những người trẻ tuổi hơn, những người vẫn được xây dựng với tinh thần làm việc tốt và thách thức hiện trạng.


cảm ơn vì đã đưa ra ma trận, bây giờ tôi phải dành 2 giờ trong đời để xem lại nó :) Thật buồn cười nhưng tôi thấy rằng "sinh viên mới" là những người sẽ hấp thụ bất cứ thứ gì bạn ném vào họ. Bản thân tôi đã tốt nghiệp một chương trình CS tốt, tôi nói rất rõ những gì tôi nghĩ về "giáo dục" của họ và chủ yếu là họ đồng ý với tôi. Tôi thấy vấn đề lớn nhất là những kẻ đã làm việc này trong 10, 15, 20 năm. Tôi cũng đồng ý với phương pháp "thử lửa" của bạn. Đó chính xác là cách tôi học được những điều không nên làm. Vấn đề là a) phải mất một thời gian dài mà hầu hết các đội không đủ khả năng và b) khi làm việc trong một nhóm ...
DXM

.. cài đặt (tôi dám nói là "bán nhanh", đừng ghét tôi S.Lott :)), chúng tôi không có quyền sở hữu duy nhất, điều mà yêu cầu dùng thử. Nếu họ viết một cái gì đó không thành công, ai đó sẽ bước vào và sửa nó. Là một người đã ở trong ao và hầu hết đã ra ngoài, tôi muốn nghĩ, tôi tò mò liệu có điều gì có thể được thực hiện để chuyển suy nghĩ đó mà không cần cả nhóm của bạn đi qua ao.
DXM

@DXM Tôi đồng ý với những lo ngại của bạn rằng tốt hơn hết là đừng ném cả đội xuống ao cùng một lúc. Vâng. Vấn đề là, bắt đầu ném từng cái một trong số chúng sau đó! Ít nhất đó là một thỏa thuận tốt giữa chúng tôi. Tôi nghĩ rằng suy nghĩ đã lớn lên trong nhiều năm - sẽ mất một thời gian và sự kiên trì để thay đổi.
Dipan Mehta

@DXM để cung cấp cho bạn mọi thứ cụ thể hơn - hãy thử các sáng kiến ​​nhỏ tại một thời điểm - cho thấy trường hợp thành tựu và cho thấy rằng quản lý có nghĩa là kinh doanh để làm tốt công việc ở đây. Và thúc đẩy tập hợp tâm trí - một bước một lần. kiên trì sẽ là điều bắt buộc, nhưng tôi đã đạt được một điều như vậy trong công ty cuối cùng của mình. Theo thời gian, quản lý tiếp tục đưa ra nhóm của tôi như một ví dụ về cách làm tốt nó.
Dipan Mehta

1
Tôi thích câu trả lời của bạn, đặc biệt nếu nó có tác dụng với bạn, vì vậy những điều sau đây không phải là một lời chỉ trích, mà chỉ là một lưu ý: thật đáng buồn, điều này không hiệu quả trong mọi trường hợp. Tôi đã có một vài trường hợp trong đó các nhà phát triển không có động lực bắt đầu các dự án lớn. Nó đã kết thúc như vậy mỗi lần: dự án thất bại, và họ đổ lỗi cho ban quản lý hoặc đồng nghiệp của họ hoặc thực tế là không có đủ thời gian hoặc nguồn lực hoặc yêu cầu đó không đủ rõ ràng. Tôi tự hỏi điều gì làm nên sự khác biệt giữa những người sẽ học bơi và những người có khả năng đổ lỗi cho nước.
Arseni Mourzenko

2

Như bạn chỉ ra, động lực của nó. Đừng nhầm họ không quan tâm đến họ không biết. Họ biết rõ phải làm gì. Họ chỉ không quan tâm . Nếu đó là trường hợp, câu hỏi thực sự ở đây là ... quản lý của bạn đang làm gì sai khiến họ không có động lực? Bạn có phải là thành viên mới nhất của đội không? Có lẽ họ đã trải qua tất cả những điều này trước đây, với nó chỉ dẫn đến các vấn đề từ quản lý của họ. Vì vậy, họ chỉ cố gắng thực hiện số lượng công việc thấp nhất cần thiết để duy trì công việc của mình vì họ không nghĩ làm nhiều hơn sẽ được nhà tuyển dụng đáp ứng.


Tôi là đội trưởng và đã ở cùng đội gần 9 năm nhưng đã dẫn đầu khoảng một năm trước. Tôi nghĩ rằng có một sự khác biệt giữa "không quan tâm đến công việc hoặc chất lượng mã của tôi" và "không quan tâm đến việc học các kỹ năng mới". Chúng tôi thực sự đã thực hiện rất nhiều cải tiến về phía quản lý và rất nhiều đồng đội của chúng tôi hiện đang khá hạnh phúc. Tuy nhiên, một số nội dung khá làm những gì họ đã luôn luôn làm. Họ thực sự đặt thêm giờ mà thậm chí không được hỏi, rất phản hồi nhưng dường như vẫn hoàn toàn gỡ lỗi 75% lỗi của chính họ.
DXM

1
Chà, giống như trong mọi ngành nghề, không phải ai cũng sẽ ở nửa trên của đường cong hình chuông. Có thể bạn chỉ có một số người trong đó để nhận tiền lương.
GrandmasterB

Bạn biết đấy, mỗi năm chúng tôi chọn một câu trích dẫn của đội và năm 2011 là "nó là như vậy", nhưng chúng tôi sắp bắt đầu một năm mới và ít nhất là trong thời điểm hiện tại, tôi sẽ từ chối chấp nhận rằng đó là, mặc dù tôi đồng ý với bạn rằng hầu hết thời gian thực sự là như vậy. Tôi đã suy nghĩ nhiều hơn về câu hỏi này và thực sự có một ý tưởng có thể có tiềm năng. Vì tôi không thể trả lời câu hỏi của riêng mình (vấn đề cá nhân, không giới hạn hệ thống), nếu có thêm 2 người bỏ phiếu để mở lại lập trình
viên.stackexchange.com/questions/127080/.

2

Dường như với tôi rằng đây là vấn đề về quản lý và lãnh đạo - nếu nhóm của bạn thì bạn có thể làm việc để cải thiện (cá nhân và mã) một thuộc tính cốt lõi của nhóm của bạn, câu hỏi sẽ được quản lý của bạn hỗ trợ - bởi vì bạn sẽ muốn làm những việc sẽ mất thời gian (họ sẽ có được một chiến thắng ròng vì bạn nên giảm nợ kỹ thuật mới và sẽ trả được nợ kỹ thuật hiện có).

Vì vậy, bạn khẳng định rằng bạn muốn nhóm cải thiện, bạn đồng ý rằng đây là một điều tốt (rằng toàn bộ nhóm, hoạt động để cải thiện chất lượng mã của nó) và sau đó bạn bắt đầu một chương trình để thực hiện điều này xảy ra - nghe có vẻ dễ dàng ... Tôi biết là không!

Tôi nghĩ có hai phần trong vấn đề này - giáo dục và thực hành làm việc.

  • Giáo dục bạn có thể bắt đầu một giờ ăn trưa mỗi tuần - mọi người ăn cùng nhau, bạn chạy một bài thuyết trình 20 ~ 30 phút với Hỏi & Đáp. Bạn bắt đầu với những điều cơ bản bạn muốn - RẮN có thể chiếm 2 ~ 4 tuần đầu tiên - theo thời gian bạn sẽ khiến nhóm phát biểu luân phiên và bạn có thể tìm ra cách quyết định ai sẽ nói về vấn đề gì giữa bạn. Cho phép người nói một số thời gian chuẩn bị trong công việc. Ngoài ra, khuyến khích sự tham dự của các nhóm người dùng địa phương (bằng cách làm cho nó ít nhất là một phần xã hội nếu có thể)
  • Thực hành làm việc ... tốt, nó phụ thuộc vào những gì bạn làm bây giờ và công cụ bạn đã có, nhưng bạn có thể muốn xem xét các tiêu chuẩn mã hóa đồng ý, giới thiệu đánh giá mã ngang hàng (có chắc chắn không), kiểm tra đơn vị (không nhất thiết phải kiểm tra trước) , chạy một máy chủ tích hợp liên tục và xem xét thử nghiệm tự động hơn (ngoài các thử nghiệm đơn vị). Nhưng những điều này về cơ bản sẽ được giới thiệu với sự đồng ý / thỏa thuận (không phải máy chủ xây dựng / CI!) Và bạn phải muốn hướng tới chất lượng như một đội. Luôn có những thứ người ta có thể cải thiện (Kaizen)

Nó cũng đáng để xem Kanban (được xem như là một trình điều khiển để thay đổi / cải tiến).

Một suy nghĩ cuối cùng - Tôi là một lập trình viên dạy nghề và tôi muốn nhóm của mình giống nhau nhưng làm việc hơn 40 giờ một tuần không thực sự là một điều tốt vì vậy mục tiêu của một người là phải có một nhóm hoàn thành công việc của mình hiệu quả và tốt trong tuần làm việc bình thường và đối với điều này, lập luận để cải thiện thực hành làm việc là rất có thể, ví dụ: thêm các bài kiểm tra đơn vị để chứng minh trường hợp thất bại khi (trước) sửa lỗi giúp bạn tự tin rằng đó đã sửa; có một máy chủ xây dựng giúp bạn tự tin vào khả năng xây dựng các giải pháp của mình một cách sạch sẽ - nếu bản dựng đó cũng tạo ra các gói triển khai, điều đó có nghĩa là việc triển khai được đơn giản hóa đáng kể; Mã RẮN, theo định nghĩa, dễ sửa đổi hơn; và trên toàn hội đồng, khoản nợ kỹ thuật càng ít bạn phải trả càng ít ...


0

Tôi đã rơi vào lập trình một cách tình cờ ~ 30 năm trước. Tôi đã có động lực để học các nguyên tắc kỹ thuật phần mềm cơ bản bằng cách được chỉ định để duy trì / hỗ trợ mã của người khác. Trong các bài tập này, tôi đã học được cách một trình đọc mã trải nghiệm mã - cách đồng cảm với trình đọc mã. Tôi không muốn gây ra nỗi đau về mã viết kém của mình cho người khác!

Cách thực hành này để giao cho các lập trình viên mới duy trì / hỗ trợ mã người khác không phải là một viên đạn ma thuật và dường như nó cung cấp động lực để học cách tạo ra mã rắn thường xuyên hơn không.


1
Tôi bắt đầu theo cách tương tự, mặc dù không phải ngẫu nhiên. Điều này rất giống với những gì Dipan Mehta đã nói trong bài đăng của mình. Bạn ném một người xuống ao, đảm bảo nó không quá sâu và để chúng bơi. Bạn là một trong những người học bơi, nhưng điều đó không phổ biến (xem câu trả lời của anh ấy với những bình luận). Ngoài ra tôi tin rằng cách tiếp cận này hiệu quả với những người mới hơn những người đã có thói quen ăn sâu. Sau đó, họ không chỉ cần bơi mà còn chống lại các thực hành đã được thiết lập.
DXM
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.