Làm thế nào để ngăn chặn một đồng nghiệp giới thiệu cực kỳ phức tạp và trừu tượng?


14

Tôi đang có một thời gian rất khó khăn vì đồng nghiệp của tôi dường như để triển lãm

  1. Nỗ lực tối ưu hóa sớm / không cần thiết
  2. Sự trùng lặp sớm với sự trừu tượng đáng ngờ
    Ví dụ, chúng tôi sử dụng kiến ​​trúc VIPER đã sửa đổi. Ông đã giới thiệu một lớp cơ sở cho thành phần Bộ định tuyến (sử dụng tổng quát) như là một phần của việc thực hiện ngăn xếp viper đầu tiên mà không thực sự biết chính xác những gì sẽ được sao chép trong các bộ định tuyến khác. Bây giờ chúng tôi bị mắc kẹt với việc phải cung cấp một loại UseCasechứa các trường hợp sử dụng, nhưng hầu hết các bộ định tuyến không có nhiều trường hợp sử dụng, chỉ có một trường hợp.
  3. Phát minh ra giải pháp dùng chung cho các tính năng tương lai tiềm năng đầu cơ
    Ví dụ, ông đã viết một người quản lý cho Populating xem bảng tế bào tĩnh khi chúng ta chỉ có hai màn hình như thế này trong ứng dụng và ông không biết việc thiết kế sẽ di chuyển ra khỏi nhàm chán hình thức dọc để tùy chỉnh hơn UI nên người quản lý là vô dụng.
  4. Lựa chọn sự phức tạp ngẫu nhiên

Làm thế nào để tôi chống lại điều này khi anh ta cũng có một rào cản ngôn ngữ với tiếng Anh tệ hại?


Bạn đã thử đánh giá mã bắt buộc để tạo cơ hội thảo luận về những gì đang xảy ra chưa? Bạn đã thử lên máy bay với anh ấy để đưa ra một giải pháp tốt trước khi anh ấy ngồi xuống để bắt đầu viết mã chưa?
Becuzz

1
Bạn có thể đưa ra một ví dụ trong đó các tình huống như trong 2 hoặc 3 có thể xảy ra không?
morbidCode

1
Tôi cảm thấy nỗi đau của bạn, @EarlGrey. Có lẽ tôi chưa bao giờ thấy một trường hợp nào mà tiền mã hóa "chung chung" thực sự hoạt động theo kế hoạch trong tương lai.
Graham

2
Tôi biết những người gọi sử dụng quicksort thay vì bubbleort tối ưu hóa sớm. Ngưỡng của bạn là gì?
Pieter B

3
Đồng nghiệp của bạn dường như đang quên / không biết về nguyên tắc của YAGNI .
Bart van Ingen Schenau

Câu trả lời:


14

Mô tả của bạn nghe giống như mã hóa tôi đã làm trong những năm 1990. Để thực hiện một cách thích hợp cho thế giới hiện đại là không dễ dàng. Tôi khuyên bạn nên tập trung vào các yếu tố sau:

  • Ghép đôi. Hai bộ mắt có thể giúp bảo vệ chống lại một người, nhưng thực hiện phức tạp.
  • Đánh giá mã. Các cửa hàng hiện đại xem xét 100% tất cả các thay đổi mã bởi nhiều người
  • Kiểm tra vùng phủ sóng. Hãy chắc chắn rằng có những bài kiểm tra đơn giản. Các xét nghiệm quá phức tạp có thể phản ánh mã quá phức tạp
  • Rất nhiều cuộc thảo luận về sản phẩm khả thi tối thiểu. Chia nhỏ các tính năng thành các thành phần nhỏ nhất có thể. Bạn có thể có một vé để thay đổi cơ sở dữ liệu, một vé khác để điền vào các bảng tham chiếu và sau đó là một phần ba để cập nhật giao diện người dùng (phần thực sự sẽ hiển thị cho người dùng cuối), nhưng nó sẽ cảm thấy phản cảm khi trước tiên là sự kháng cự có khả năng
  • Thảo luận thường xuyên về làm thế nào để có vé nhỏ hơn và thay đổi.
  • Câu chuyện bỏ phiếu điểm của toàn đội để mở ra các cuộc thảo luận về sự phức tạp và cách tiếp cận.
  • Giáo dục. Hãy chắc chắn rằng bạn có Bữa trưa và Học hỏi, các buổi đào tạo, vv để mọi người có thể tiếp xúc với các thực tiễn tốt và lý do tại sao chúng tốt.

Từ tất cả những điều trên, hai điểm trọng tâm chính của tôi sẽ là đánh giá mã và những câu chuyện nhỏ hơn.

Vào cuối ngày, tôi nghĩ giải pháp tốt nhất để thay đổi hành vi hiện tại là có một người tận tâm dẫn dắt sự thay đổi. Trong các tổ chức Agile (có thể là đa số ngày nay), cần một người tận tâm như scrum-master liên tục đặt câu hỏi đúng và hướng dẫn phương pháp phát triển. Tại tổ chức cuối cùng của tôi, chúng tôi có một tá trong số họ, mỗi người một nhóm để giúp hướng dẫn mọi người vượt qua những vấn đề này. Điều này giúp loại bỏ sự cần thiết của một nhà phát triển thành viên trong nhóm đang cố gắng thuyết phục người khác rằng 'cách của họ là đúng', điều này thường có thể dẫn đến những trao đổi bất chính và máu xấ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.