2008-09-16 23 views
16

Bạn vừa viết một đống mã để phân phối một số tính năng quan trọng dưới áp lực. Bạn đã cắt một vài góc, bạn đã cắt một số mã vào một số lớp quá cồng kềnh với các tên như SerialIndirectionShutoffManager ..Làm thế nào để bạn biện minh cho công việc Refactoring với ông chủ penny-pinching của bạn?

Bạn nói với sếp của bạn rằng bạn sẽ cần một tuần để làm sạch thứ này.

"Dọn dẹp cái gì?"

"Mã của tôi - đó là chuồng heo!"

"Bạn có nghĩa là có thêm một số sửa lỗi?"

"Không thực sự, nó giống như .."

"Bạn sẽ làm cho nó chạy nhanh hơn?"

"Có lẽ, buts thats không .."

"Sau đó, bạn nên đã viết nó đúng khi bạn có cơ hội. Bây giờ tôi rất vui vì bạn đang ở đây, yeah, tôi sẽ phải đi trước và yêu cầu bạn phải vào thế cuối tuần này .. "

tôi đã đọc cuốn sách Matin Fowler, nhưng tôi không chắc chắn tôi đồng ý với lời khuyên của ông về vấn đề này:

  • Khuyến khích mã số nhận xét thường xuyên, vì vậy công việc tái cấu trúc được khuyến khích như là một phần tự nhiên của quá trình phát triển.
  • Chỉ cần không nói, bạn là nhà phát triển và là một phần nhiệm vụ của bạn.

Cả hai phương pháp này đều không đáp ứng được nhu cầu liên lạc với người quản lý của bạn.

Bạn nói gì với sếp của mình?

Trả lời

25

Điều quan trọng là phải bao gồm thời gian tái cấu trúc trong ước tính ban đầu của bạn.Đi đến sếp của bạn sau khi bạn đã giao sản phẩm và sau đó nói với anh ta rằng bạn không thực sự làm là nói dối về việc được thực hiện. Bạn đã không thực sự làm cho thời hạn giao hàng. Nó giống như một bác sĩ phẫu thuật làm phẫu thuật và sau đó không chắc chắn rằng ông đã đưa mọi thứ trở lại theo cách nó được cho là.

Điều quan trọng là bao gồm tất cả các phần phát triển (ví dụ: tái cấu trúc, nghiên cứu khả năng sử dụng, thử nghiệm, QA, sửa đổi) trong lịch biểu ban đầu của bạn. Cuối cùng, đây không phải là vấn đề quản lý như một vấn đề lập trình viên.

Nếu, tuy nhiên, bạn đã thừa hưởng một mớ hỗn độn thì bạn sẽ phải giải thích cho ông chủ rằng nhóm người lập trình cuối cùng vội vã đưa dự án ra khỏi các góc cắt cửa và nó bị kéo dọc theo. Bạn có thể hỗ trợ ban nhạc cho vấn đề một thời gian (như họ có thể đã làm), nhưng mỗi ban nhạc chỉ giúp trì hoãn vấn đề và cuối cùng làm cho vấn đề tốn kém hơn nhiều để sửa chữa.

Hãy trung thực với sếp của bạn và hiểu rằng dự án không được thực hiện cho đến khi hoàn thành.

+2

+1 cho "Nằm sắp hoàn thành" –

6

Lie. Nói với anh ta đó là nghiên cứu về một công nghệ mới. Sau đó nói với anh ta bạn quyết định chi phí không biện minh cho những lợi ích. Anh ấy sẽ nghĩ mình đã làm rất tốt.

lol @ người xuống modding/đánh dấu xúc phạm.

Thực sự, nếu đó là một ông chủ véo penny, những người không hiểu phần mềm tốt từ phần mềm giá rẻ, những gì ông không biết cuối cùng sẽ làm cho anh ta hạnh phúc hơn. nếu đó là tôi, tôi sẽ rời công ty và đi đâu đó nơi họ tôn trọng khả năng viết mã tốt của nhà phát triển của họ. Nhưng sau đó một lần nữa, đây là lý do tại sao tôi ở vị trí cao cấp.

+0

Tôi đồng ý - đây thực sự là cách tôi đã thực hiện công việc tốt nhất của mình. Tôi chỉ không nói với ông chủ của tôi những gì tôi đang làm và từ từ thay thế xấu/mã di sản khi tôi có thời gian. Nó đã lưu ass của tôi một cách acutally trên nhiều hơn một lần. – Seibar

+1

Tôi không thể tin rằng điều này đã bị đánh dấu là xúc phạm. Đây thực sự là một sự thật. – ljs

+0

vâng, sếp của tôi không hỏi nữa. anh ấy sẽ hỏi tôi đang làm gì, tôi sẽ nói với anh ấy rằng nó nằm trong phần xx của mã di sản không liên quan với w/tiêu điểm hiện tại của chúng tôi là gì và anh ấy giống như "âm thanh tốt" –

3

Tái cấu trúc bạn nên làm mọi lúc .... vì vậy bạn không cần phải biện minh cho nó.

Dọn dẹp messes lớn/Thiết kế lại có thể bao gồm refactoring để có được nó dưới sự kiểm soát, tuy nhiên nó không phải là "Refactoring"

Refactoring phải là một vấn đề của những khoảnh khắc ... hoặc nếu bạn không có công cụ hỗ trợ, phút .

2

Tôi thích câu trả lời được đưa ra trong "Tái cấu trúc" của Martin Fowler. Nói với sếp rằng bạn sẽ phát triển phần mềm theo cách nhanh nhất mà bạn biết. Nó xảy ra rằng trong hầu hết các trường hợp, cách nhanh nhất để phát triển phần mềm là tái cấu trúc lại khi bạn đi.

Điều khác để nói với sếp của bạn là bạn đang giảm chi phí để thực hiện các cải tiến trong tương lai.

5

Cho anh ta biết 80% chi phí liên quan đến dự án phần mềm đi kèm trong giai đoạn bảo trì của vòng đời. Bất kỳ việc tái cấu trúc nào được thực hiện ngay bây giờ để làm giảm bớt các vấn đề trong tương lai, và có một số ví dụ, sẽ mang lại lợi ích chi phí đáng kể sau này khi nhu cầu phát sinh để duy trì mã đó.

Điều này giả định bạn đang tái cấu trúc vì một lý do chứ không phải cho lập trình viên.

7

Chỉ cần thực hiện và lên lịch cho quy trình bình thường của bạn. Ước tính thời gian tái cấu trúc để bắt đầu một thay đổi mới hoặc hoàn thành một sự thay đổi (lý tưởng). Tôi luôn luôn refactor trong khi tôi bước đầu khám phá mã mới (giải nén phương pháp, vv).

+0

Thật dễ dàng hơn để yêu cầu sự tha thứ hơn là sự cho phép. - Grace Hopper –

22

Nói bằng ngôn ngữ anh ấy có thể hiểu.

Tái cấu trúc đang trả nợ thiết kế.

Hãy hỏi ông chủ của bạn tại sao anh ta thanh toán hóa đơn thẻ tín dụng của công ty mỗi tháng so với khi không thanh toán cho đến khi có thông báo thu nợ. Nói với anh ta việc tái cấu trúc giống như thực hiện thanh toán hàng tháng của bạn.

+2

Đó là một trong những chất tương tự tốt nhất mà tôi từng đọc. – TerryP

+0

@TerryP: Tìm kiếm "nợ kỹ thuật". Brian không phát minh ra khái niệm. – Novelocrat

0

Ít tiền ngay bây giờ cho tôi để cấu trúc lại ...

hoặc nhiều tiền sau để sửa chữa bất cứ điều gì sai trái và cho tôi để cấu trúc lại.

3

Trong một trong những cuốn sách gần đây của Robert Glass (tôi sẽ phải tra cứu tài liệu tham khảo), ông đã đề cập đến một nghiên cứu về chi phí của mã được duy trì tốt. Những gì họ tìm thấy là mã được duy trì tốt được chỉnh sửa thường xuyên hơn mã được bảo trì kém. Điều đó nghe phản trực giác nhưng khi họ đào sâu hơn thì khám phá ra lý do:

Mã được duy trì tốt có nhiều tính năng được thêm vào trong cùng một khung thời gian hơn mã được bảo trì kém.

Boss của bạn có thích các tính năng không? Chắc chắn, tất cả họ đều làm. Nếu bạn càng cải thiện khả năng bảo trì của mã, bạn càng có thể cung cấp nhiều tính năng hơn với ngân sách hạn chế đó.

0

Đôi khi, đây chỉ là lúc để có được một công việc mới. Có những người độc thân kiên quyết chỉ muốn bạn "làm cho nó được thực hiện". Nếu bạn đã từng ở trong một trong những tình huống đó, và tôi đã ở đó, thì cứ đi đi.

Nhưng vâng, tất cả những thứ khác về chi phí trong tương lai và đó là ý tưởng hay. Tôi chỉ nghĩ rằng hầu hết các ông chủ đều nói dối chính họ bởi vì họ muốn những gì họ muốn khi họ muốn, và họ chỉ không thể thấy điều gì sẽ xảy ra trong tương lai.

Vì vậy, chúc may mắn với sếp của bạn. Hpefully anh ta hoặc cô ấy là hợp lý.

-1

Dont .... chỉ cần đi tìm một công việc mới ở một nơi mà nhiều hơn trong đồng bộ với bạn.

0

Tôi nghĩ bạn nên bắt đầu làm việc mà không cần nói với sếp. Đây thực sự là cách tôi đã thực hiện công việc tốt nhất của mình. Tôi chỉ không nói với ông chủ của tôi những gì tôi đang làm và từ từ thay thế xấu/mã di sản khi tôi có thời gian.

Nó đã lưu ass của tôi một cách acutally nhiều hơn một lần.

0

Nếu sếp của bạn không hiểu sự cần thiết phải refactor hoặc làm sạch mã, sau đó bạn phải tự hỏi nếu anh ta có đủ kiến ​​thức kỹ thuật để trở thành một người quản lý kỹ thuật.

0

Rất hiếm khi tìm được một ông chủ sẽ cho bạn thời gian để tái cấu trúc ... chỉ cần làm điều đó khi bạn đi cùng.

0

Theo tôi, trường hợp đơn giản nhất để thực hiện tái cấu trúc là sửa mã quá phức tạp. Đo độ phức tạp chu trình của McCabe về mã nguồn đang được đề cập (Source Monitor là một công cụ tuyệt vời cho vấn đề này). Mã nguồn có độ phức tạp chu trình cao có một lỗi tương quan mạnh và sửa lỗi xấu. Điều này có nghĩa là trong thuật ngữ đơn giản là mã phức tạp khó sửa hơn và có nhiều khả năng sửa lỗi kém hơn. Điều này có ý nghĩa với người quản lý là chất lượng của sản phẩm có thể sẽ tồi tệ hơn và các lỗi khó sửa hơn, và lịch trình cho dự án cuối cùng còn tồi tệ hơn. Tuy nhiên, trong việc tái cấu trúc độ phức tạp, bạn đang cải thiện tính minh bạch của mã, giảm khả năng lỗi khó hiểu/khó khăn và dễ bảo trì hơn (ví dụ: một lập trình viên bảo trì có thể có phạm vi bảo trì lớn hơn vì điều này). Ngoài ra, bạn có thể đưa ra trường hợp (nếu nó không phải là một sản phẩm đã chết trong chu kỳ bảo trì) làm giảm độ phức tạp làm cho ứng dụng dễ dàng mở rộng khi các yêu cầu mới được thêm vào dự án.

0

Ông chủ phải tin tưởng nhà phát triển để đưa ra các quyết định kỹ thuật chính xác (bao gồm thời gian để tái cấu trúc).

Thiết lập niềm tin đó hoặc thay thế ông chủ hoặc thay thế nhà phát triển.

0

Một điểm tương tự khác là duy trì một trang web xây dựng gọn gàng. Việc bắt giữ duy nhất ở đây là một lập trình viên không đại diện cho một công nhân xây dựng, và một người quản lý không đại diện cho một người quản đốc. Nếu đúng như vậy, truy cập của anh ta "làm ngay lần đầu tiên" sẽ vẫn áp dụng, vì một công nhân xây dựng có năng lực và tận tâm chịu trách nhiệm duy trì trật tự tốt trên không gian làm việc của họ khi họ đi.

Thực sự chính mã đại diện cho người lao động và quá trình phát triển là người quản lý. Mớ hỗn độn này được tạo ra bởi các ngành nghề khác nhau về doanh nghiệp của họ xung quanh nhau (tức là bằng các tính năng mã khác nhau tương tác, nơi mỗi tính năng hoạt động tốt, nhưng các đường nối giữa chúng không được tổ chức) và được làm sạch bởi người quản lý giữ một mắt về nơi rối loạn được thiết lập trong, và hành động để làm cho nó làm sạch (tức là quá trình phần mềm đòi hỏi tái cấu trúc).

0

Những gì tôi vừa mới giải thích cho đối tác kinh doanh của mình là quá trình tái xuất giúp phát triển các tính năng mới nhanh hơn và giảm xác suất lỗi mới vì mã có thứ tự và cấu trúc tốt hơn thực hiện một số cải tiến tốc độ vì bạn có thể kiểm tra mã dễ dàng hơn trước đây.

Khi các doanh nghiệp nhận được điều đó, nếu họ thông minh, họ sẽ khuyến khích bạn thực hiện quy trình tái xuất liên tục.

Bạn có thể giải thích rằng bằng phép ẩn dụ của tòa nhà. Nếu bạn không làm nhà máy, bạn sẽ kết thúc với một tòa nhà crappy với một lõi xấu, do đó bạn sẽ có vấn đề với các đường ống, cửa sổ, cửa ra vào.

Các vấn đề liên quan