Sếp của tôi muốn một lời giải thích bằng tiếng Anh từng dòng về mã của chúng tôi


155

Tôi đặc biệt được yêu cầu đưa ra từng dòng (hoặc khi thích hợp - ví dụ: hình ảnh bằng hình ảnh, v.v.) giải thích hoặc bình luận mà ông chủ của tôi muốn có thể đọc và theo dõi.

Vì anh ta không phải là lập trình viên, anh ta không thể làm theo mã nên muốn tất cả được dịch sang tiếng Anh.

Có ai được yêu cầu làm điều này trước đây?

Tôi đã nhận xét về tất cả các mã nguồn và đã sử dụng JSDoc để tạo tài liệu đầy đủ về tất cả các hàm, biến, v.v ... và bao gồm một ví dụ triển khai và các bản demo làm việc đầy đủ với các bình luận xuyên suốt.

Có điều gì khác tôi có thể làm để bình luận mã cho những người không lập trình không?

Đây không phải là một yêu cầu hợp lý, phải không?


CẬP NHẬT

Cuối cùng, tôi đã giải thích được tại sao đó không phải là cách sử dụng thời gian tốt để làm những gì anh ấy yêu cầu. Anh ấy là một chàng trai hợp lý, và không hiểu gì về công việc của tôi. Khi anh ấy thấy bài đăng này, tôi nghĩ rằng anh ấy nhanh chóng hiểu rằng đó không phải là một yêu cầu bình thường.

Tôi đã cung cấp tài liệu phù hợp cho một lập trình viên khác để theo dõi (JSDoc và nhận xét nội tuyến - cũng như một số lưu ý thêm về các vấn đề kỹ thuật) và sơ đồ biểu đồ dòng rất rộng về logic chính của chương trình để ông chủ của tôi theo dõi.

Cuối cùng, tất cả các bên đều hài lòng và chúng tôi đã chuyển đi.


Bị khóa vì lý do lịch sử, vui lòng xem "Khóa các câu hỏi được bình chọn hàng đầu đã bị đóng" để biết thêm chi tiết.
yannis

Câu trả lời:


160

Không , nó không phải là một yêu cầu hợp lý!

NÓI CHUYỆN NÓ RA KHỎI NÓ , hoặc nhờ người khác nói với anh ta về điều đó, bằng mọi cách. Đó là một ý tưởng phi lý, mà mặc dù có thể thực hiện được rất tốn kém để thực hiện nhưng nó không bao giờ thực sự được thực hiện. Tổng quan về các hàm và chương trình con là hợp lý, nhưng để "giải thích" mọi dòng mã thì không. Nó sẽ có hiệu quả hơn đối với anh ta để học đọc ngôn ngữ trong tay, hơn là làm điều đó.

Điều tiếp theo anh ta sẽ yêu cầu là dịch các công thức toán học, hoặc không có gì thành văn bản tiếng Anh. Mặc dù chắc chắn có thể giới thiệu nhiều chỗ cho lỗi và giải thích sai , và không bao giờ nên được thực hiện. Cũng giống như "dịch" mã sang tiếng Anh.


Thú vị: Đi đọc các bài giảng của Richard Feynmans về Vật lý. Bạn sẽ thấy rằng phần lớn trong số đó là một đối số được diễn đạt cẩn thận, bằng tiếng Anh (nếu X thì Y phải đúng và do đó Z ... vv). Toán nhỏ. Điểm tôi đang làm là bạn có thể giải thích mọi thứ bằng tiếng Anh. Cho dù bạn NÊN là một vấn đề khác.
quick_now

1
@quickly_now - Đọc chúng từ lâu trong thời gian học đại học. Không phải là một đọc xấu. Tôi đồng ý, bạn có thể giải thích nó - bạn có thể giải thích nó bằng bất kỳ ngôn ngữ nào khi người bạn đang giải thích đã hiểu "sự trừu tượng" đằng sau nó (mã, phương trình toán học và ý nghĩa của nó ...) // Nếu anh ta không ' t - bạn sẽ gặp khó khăn khi giải thích nó bằng bất kỳ ngôn ngữ nào.
Rook

4
@Rook - điểm tốt. Giải thích cơ học lượng tử cho một bộ lạc nguyên thủy có vốn từ vựng bị giới hạn theo hướng mà Elk di chuyển sẽ khó khăn.
quick_now

Đôi khi tôi có thể nhận được "ý định" của người quản lý của bạn để quản lý vi mô. Nhưng, nếu bản thân mã rất rõ ràng, thì anh ta chỉ có thể đọc nó dưới dạng văn bản tiếng Anh.
Arvind Chinniah

150

Bạn có tài liệu thiết kế ? Đó là những lời giải thích bằng tiếng Anh về những gì mã làm. Một người quản lý không lập trình không cần nhiều hơn thế.


15
Đó là lý do tại sao tôi chỉ định, "Người quản lý không lập trình không cần nhiều hơn thế."
Malfist

35
@Loren Pechtel: Tôi muốn đến đó và xem anh chàng này thực sự đọc các trang của "Tạo một biến số nguyên có tên X. Đặt nó thành 0. Tạo một biến số nguyên có tên Y. Đặt nó thành 0. Tạo một biến số nguyên có tên Z Đặt nó thành 0. Tạo một biến số nguyên có tên là vị trí X. Đặt nó thành 0. Tạo một biến số nguyên có tên là vị trí Y. Đặt nó thành 0. Tạo một biến số nguyên có tên là vị trí Z. Đặt nó thành 0. Tạo một biến số nguyên có tên Xoay X. Đặt nó thành 0. Tạo một biến số nguyên có tên là xoay Y. Đặt nó thành 0. Tạo một biến số nguyên có tên xoay Z. Đặt nó thành 0. "...
FrustratedWithFormsDesigner

9
@Frustated Nó dễ dàng hơn nhiều với việc tô sáng cú pháp! " [p32767, l21, c8] Tăng pXtheo kích thước của an Integer. Tăng Sumtheo giá trị được trỏ tới pX. Tăng ithêm 1. Nếu inhỏ hơn 3, hãy đến trang 32768, dòng 17, cột 42. Nếu không, hãy chuyển đến trang 32767 , dòng 21, cột 8. "
Mateen Ulhaq

9
@muntoo, bạn cần nội tuyến tất cả các chức năng đó để bạn không phải nhảy qua lại giữa các trang. Nếu không, người ta có thể gặp nhiều rắc rối khi lấy lại stack.
Kibbee

15
@Frustrated: Vậy bạn đang tưởng tượng giọng nói của ai? Tôi không thể quyết định giữa Sean Connery và Morgan Freeman.
Beta

113

Có một người quản lý vi mô của giải thưởng năm? Nghe có vẻ như ông chủ của bạn xứng đáng được đề cử. Một số người tin rằng anh ta cần hiểu mã theo từng dòng, nhưng không muốn học cách đọc trực tiếp, hoàn hảo như người quản lý vi mô như có thể tưởng tượng.

Một lợi thế của việc trở thành nhà phát triển là khó khăn trong việc hiểu mã ngăn chặn việc quản lý vi mô vượt quá một mức độ nhất định, ít nhất là ở cấp độ triển khai chi tiết, ít nhất là bởi quản lý phi kỹ thuật, bởi vì ngay cả người quản lý vi mô cốt lõi nhất cũng nhận ra rằng họ trên đầu của họ ở cấp độ đó. Nhưng thiên tài của ông chủ của bạn có thể tìm ra cách phá vỡ bức màn silicon.

Và, như một phần thưởng, nó lãng phí rất nhiều thời gian của nhà phát triển để dịch, ngay cả trước khi anh ta sử dụng bản dịch tiếng Anh để bắt đầu đề xuất các cải tiến khác nhau (tôi cho rằng anh ta biết cách viết mã tốt hơn các lập trình viên, mặc dù anh ta không thể đọc mã, và sẽ có thể chia sẻ sự khôn ngoan của anh ta ngay khi ai đó dịch nó, nếu không thì tại sao anh ta lại cần dịch từng dòng?).

Vì vậy, không, đó không phải là một yêu cầu hợp lý và tôi chưa bao giờ nghe về nó trước đây. Và tôi cảm thấy cho bạn. Tôi nghĩ mọi người có thể cần phải lặng lẽ tìm kiếm một công việc khác, bởi vì một khi anh ta bắt đầu sử dụng dịch mã làm công cụ quản lý thì có lẽ đó sẽ là một nơi tàn bạo để làm việc (er, một nơi tàn bạo hơn để làm việc).

Về mặt tích cực, có lẽ bạn có thể có được một mẫu chống mới được đặt tên theo tình huống của bạn? Làm thế nào về mô hình chống "bẩn thỉu Hungary Phrasebook", sau tiểu phẩm Monty Python nơi một người bán thuốc lá đang cố gắng giao tiếp với một người không nói tiếng Anh bằng cách sử dụng một cuốn sách cụm từ tiếng Hungary có bản dịch sai về mặt hài hước?


21
+1 để chẩn đoán quản lý vi mô. Nói theo cách riêng của tôi: đưa f___ ra khỏi đó!
tdammers

@tdammers: may mắn thay, đây là loại điều tôi có thể nói với sếp của mình. Anh ấy là một người tốt ngoài việc làm ông chủ!
heltonbiker

5
Một người quản lý cần hiểu mọi dòng mã được gọi là lập trình viên.
James P.

91

Ngồi xuống với anh ta và nói chuyện với anh ta thông qua 10 dòng mã. Giải thích mọi chi tiết cho đến khi cả hai bạn đồng ý anh ấy hiểu nó đến mức anh ấy muốn.

Có lẽ trải nghiệm này là tất cả những gì anh ấy đang tìm kiếm: chỉ là một ấn tượng về công việc của bạn đối với bạn và phần mềm trông như thế nào theo quan điểm của bạn. Đó là một điều tốt trong cuốn sách của tôi.

Nếu sau này, anh ấy vẫn muốn bạn tiếp tục, nói: chú ý có bao nhiêu câu hỏi tôi phải hỏi; hãy tưởng tượng nếu tôi phải giải thích tất cả những điều này mà không thể đặt câu hỏi, làm thế nào tôi có thể biết những gì cần bao gồm và những gì phải bỏ qua? Mất bao nhiêu thời gian trước khi kết quả có ích với bạn? Bây giờ có bao nhiêu dòng bạn muốn tôi làm theo cách này?


57
Hãy chắc chắn rằng sau khi bạn dành hai giờ để giải thích mười dòng mà anh ta hiểu rằng có 50.000 dòng (hoặc bất cứ thứ gì) còn lại để được giải thích.
HLGEM

6
Thực sự là một cách rất lành mạnh để theo dõi. Làm cho anh ta thấy sự thiếu hiểu biết về cách của mình.
Kibbee

4
@reinierpost: phương pháp của bạn là thiên tài thuần túy.
heltonbiker

5
Nếu bạn sẽ làm điều này, trước tiên hãy nói với sếp tại sao nói chung đó là một ý tưởng tồi và THEN chứng minh. Nếu bạn không, điều này có thể xuất hiện giống như bạn đang "lừa" anh ta và đưa anh ta vào thế phòng thủ.
nerdytenor

5
Không bao giờ nói với mọi người ý tưởng của họ là xấu !! Tuy nhiên, bạn có thể thảo luận về những gì cần thiết để biến chúng thành sự thật và thậm chí có thể đưa ra một số ý tưởng để thực hiện các phím tắt. Nếu điều này khiến họ kết luận rằng ý tưởng đó không khả thi, hoặc biến ý tưởng ban đầu biến thành một thứ hoàn toàn khác, và họ sẽ tình cờ nhận thấy điều này vào một lúc nào đó, họ sẽ nhún vai và nói: đó là cuộc sống.
Revierpost

43

Tôi không nghĩ đó là một yêu cầu hợp lý. MÃ NGUỒN không có nghĩa là được đọc bằng tiếng Anh (hoặc bất kỳ ngôn ngữ nào khác cho vấn đề đó).

Có thể anh ấy sợ bạn sẽ làm cho mã của bạn làm điều gì đó mà anh ấy không chấp nhận hoặc không biết. Nếu đó là trường hợp, tôi không nghĩ rằng bạn có thể làm gì đó về nó. Bạn sẽ phải viết tài liệu hoặc có thể thuyết phục anh ấy / cô ấy thuê ai đó để kiểm tra mã của bạn.


13
Ngay cả với một bản dịch tiếng Anh , một người không phải là lập trình viên rất có thể tin tưởng:/* and this line is transferring deposits to the correct account */ deposits.TransferAll(acctInfo);
Tôi chấp nhận

15
Nếu ông chủ "sợ bạn sẽ làm cho mã của bạn làm điều gì đó mà anh ta không chấp nhận hoặc nhận thức được" thì điều này sẽ không làm gì để giảm bớt nỗi sợ hãi của anh ta. Cùng một người đang cung cấp bản dịch người đã viết mã. Điều gì để ngăn họ nói dối về những gì nó làm? Có một cái gì đó khác đang diễn ra ở đây.
mmc

4
COBOL có nghĩa là được đọc bằng tiếng Anh.
oosterwal

1
Có lẽ anh ta đang cố gắng tìm ra những gì mã làm để xem nếu anh ta đồng ý với lý do và có thể có được ý tưởng tốt hơn. Trong mọi trường hợp, đó không phải là công việc của anh ta để làm như vậy, ít nhất là không phải như vậy ...
heltonbiker

32

Nó thực sự rất đơn giản:

  • Bạn đã được tuyển dụng vì kỹ năng của bạn như là một lập trình viên
  • Người quản lý của bạn không có những kỹ năng này
  • Ergo, người quản lý của bạn không nên mong đợi một cách hợp lý để có thể hiểu đầy đủ những gì bạn làm

Tôi đã có một kinh nghiệm tương tự như thế này trong một công việc trước đây. Người quản lý của tôi là một kế toán viên (và do đó có định hướng chi tiết ở mức độ thấp) và không hiểu hoặc không thực sự tin tưởng vào lập trình. Cô ấy không thể hiểu rằng cô ấy, với tư cách là một người phi kỹ thuật, không nên mong đợi có thể nắm bắt được những điều vụn vặt trong những gì tôi viết. Sau nhiều yêu cầu về tài liệu quá mức và yêu cầu đào tạo người dùng không có kỹ thuật về cách quản lý và thay đổi mã (vâng, thực sự), tôi đã ngừng cố gắng để loại bỏ cô ấy, và hoàn toàn từ chối. Sự tương tự tôi thường giải thích rất đơn giản:

  • Tôi không phải là kế toán
  • Tôi không nên mong đợi để hiểu mọi giao dịch hoặc đăng trong tài khoản của chúng tôi
  • Điều này không có nghĩa là các tài khoản sai hoặc không đáng tin, đơn giản là vì tôi không hiểu chúng
  • Điều này được thực hiện bằng cách tin tưởng người biên soạn chúng

Cuối cùng, đây là điều tôi nghe có vẻ như: một người quản lý gặp khó khăn trong việc tin tưởng nhân viên của họ; hoặc lo sợ rằng họ sẽ rời đi, và nghĩ rằng đây là một cách hiệu quả để giảm thiểu chống lại nó.

Giải pháp duy nhất cho vấn đề này là ngồi xuống và giải thích lý do tại sao điều này không có ý nghĩa. Công việc của bạn là hiểu mã và làm cho người có kỹ năng tương tự có thể hiểu được mã của bạn, chứ không phải người quản lý của bạn. Cho họ xem chủ đề này có thể là một ý tưởng tốt (hoặc thực sự, thực sự khủng khiếp, tùy thuộc vào tính cách của họ).


người quản lý của bạn đã giải thích như thế nào?
Jeff Martin

1
Chính xác như bạn có thể mong đợi. ;) Tuy nhiên, điểm đã được thực hiện và các yêu cầu dừng lại. Tôi không biết liệu đó có phải là vì tôi đã thuyết phục cô ấy về tính hợp lệ của cuộc tranh luận của tôi hay cô ấy đã quyết định rằng nó không đáng để làm phiền và từ bỏ.
John N

25

Từng dòng, là vô lý. Những gì tôi có thể đề nghị là cung cấp để tạo tài liệu từ các bình luận và đưa cho anh ta điều đó. Điều đó là đủ cho một số khoản tài trợ và kiểm toán của Chính phủ Canada mà tôi đã làm trong quá khứ.

Anh ta sẽ không nhận được từng dòng một nhưng anh ta sẽ có được từng phương pháp mà vẫn có thể chi tiết hơn mức anh ta cần.

Một số giải pháp hiện có, tùy thuộc vào nền tảng của bạn:

  • C #: lâu đài cát
  • Java: javadoc
  • "C ++, C, Java, Objective-C, Python, IDL (hương vị Corba và Microsoft), Fortran, VHDL, PHP, C # và ở một mức độ nào đó D." : doxygen

Khi có Pas2Dox, hãy thêm Delphi vào danh sách doxygen ;-)
Fabricio Araujo

Đi đến liên kết Sand Castle. Nhìn ấn tượng. Nhấp vào tab "Tài liệu". Xem tin nhắn "Dự án này chưa có tài liệu." Nhìn ít ấn tượng hơn.
Kaz Dragon

16

Nó sẽ nhanh hơn nhiều cho anh ta học đọc mã so với việc dịch toàn bộ mã của bất kỳ ứng dụng thú vị nào sang tiếng Anh. Bên cạnh đó, chúng tôi đã thử điều đó với COBOL và nó chẳng giúp ích gì cả. Nếu anh ta không sẵn lòng học hỏi, nhưng chỉ muốn làm cho anh ta không biết gì về vấn đề của người khác, thì bạn có một ông chủ nghiêm túc.


3
Tôi nghĩ tiếng Anh nên là ngôn ngữ. Sếp nên yêu cầu tất cả các phần mềm được viết bằng DSL (ngôn ngữ cụ thể của miền), sau đó anh ta có thể thay đổi cách thức hoạt động của hệ thống.
David d C e Freitas

Tôi nghĩ rằng đề cập đến Cobol tổng hợp nó. Bất cứ ai in ra một thế giới xin chào đơn giản đều biết ngôn ngữ này kỳ cục đến mức nào. Đó là một động thái tốt đối với một cái gì đó dễ hiểu nhưng quá trang trọng.
James P.

15

Sử dụng chuyên môn kỹ thuật của bạn để theo đuổi ông chủ của bạn.

  1. Hãy cho anh ấy biết rằng sẽ mất nhiều thời gian để làm điều này như bạn đã làm để mã hóa nó ngay từ đầu (Hãy thoải mái để làm cho nó dài hơn.).
  2. Hỏi anh ấy cách cập nhật tài liệu này. Thông báo cho anh ta tất cả các thay đổi mã hóa bây giờ sẽ mất ít nhất gấp đôi thời gian.
  3. Nếu bạn hoặc bất kỳ ai khác tìm thấy bất kỳ lỗi nào, hãy hỏi anh ta nếu bạn nên sửa chúng ngay bây giờ hoặc đợi cho đến khi bạn hoàn thành mã hóa psuedo. Nhắc nhở anh ấy về # 1 & # 2.

Giống như tất cả các đề xuất giải pháp xấu, tốt hơn là xác định vấn đề. Có thể sếp của bạn đang gặp phải những câu hỏi kỹ thuật của quản lý cấp trên và anh ta cảm thấy lúng túng vì không thể trả lời. Có thể có một phần mã đặc biệt mà anh ấy cảm thấy quan tâm nhất, vì vậy bạn có thể giới hạn công việc khổng lồ này ở khu vực đó.

Bằng cách gửi mẫu, anh ta có thể đi đến kết luận rằng nếu bạn không hiểu cách mã hóa hoạt động (Vòng lặp là gì và nó đang làm gì với tất cả các mặt hàng này?) Thì nó không phải là ngôn ngữ của ngôn ngữ đó. tắt hiểu ứng dụng từ góc độ người dùng quyền lực. Tôi nghĩ thật công bằng khi bạn cho anh ấy biết rằng bạn muốn viết mã / gợi ý thực sự - tôi đang tìm một công việc khác.


7
chúng ta cần cẩn thận về việc mô tả bất cứ ai là "một thằng ngốc". Mặc dù cá nhân chúng tôi hài lòng với tư cách là lập trình viên để làm điều này, tôi không nghĩ nó là chuyên nghiệp và bất kỳ yêu cầu nào từ bất kỳ người quản lý nào, dù lạ đến đâu, nên được đối xử dựa trên giá trị của nó.
funkymushroom

6
@funkymushroom: Ưu điểm của yêu cầu này là anh ta là một thằng ngốc.
DeadMG

3
@funkymushroom - Tôi nghĩ rằng chúng tôi có thể được phép một chút thuế trên trang web này. Sau đó, bạn đi bằng funkymushroom.
JeffO

2
@Jeff: Điểm cũng được thực hiện. Tôi không có nghĩa là một dính trong bùn. Tuy nhiên, có hai loại "thằng ngốc". "Kẻ ngốc độc hại" và "Kẻ ngốc không biết gì" và tôi đã làm việc với cả hai. Đầu tiên nên bỏ qua, anh ta nguy hiểm cho sự nghiệp của chúng tôi, và thứ hai có thể là một đồng minh tốt, vì vậy chúng ta nên dạy anh ta.
funkymushroom

@funkymushroom - đồng ý, nên tôi lấy nó ra.
JeffO

12

Tại sao?

Một bình luận từng dòng không hợp lý, nhưng đây là những gì tôi hỏi: tại sao bạn muốn điều này?

Có phải vì ...

  • Bạn muốn có một sự hiểu biết đầy đủ về những gì phần mềm làm (không nhất thiết phải như thế nào)?
  • Bạn muốn chắc chắn một lập trình viên khác có thể nhận dự án nếu tôi rời đi?
  • bạn muốn thấy rằng tôi đang làm việc thực sự?

Có thể có một mong muốn hợp lý đằng sau yêu cầu này, và bạn có thể làm cho sếp của bạn hài lòng bằng cách tìm ra điều đó và đáp ứng nhu cầu đó.

Cập nhật

Dựa trên Mikey'snhận xét, có lẽ tôi đã nói điều này một cách quá thẳng thừng. Tôi không có nghĩa là bạn nên nói "tại sao bạn muốn điều này theo nghĩa đen?", Chỉ là bạn nên tìm ra điều đó . Từ ngữ và giọng điệu tạo nên sự khác biệt lớn. Cụ thể, bạn có thể nói một cái gì đó như:

"Tôi đã suy nghĩ về yêu cầu của bạn để có một lời giải thích cho từng dòng mã. Có một chút khác thường khi làm theo cách đó. Tôi tự hỏi liệu có thể có điều gì đó tôi không truyền đạt tốt cho bạn về công việc của tôi. Bạn thực sự muốn hiểu gì về mã của chúng tôi hoặc về những gì tôi đang làm? Bạn đang cố gắng thực hiện điều gì ở đây? "

Tất nhiên, có thể ông chủ của bạn hoàn toàn không hợp lý. Nhưng nhiều khả năng là anh ta không biết yêu cầu này kỳ quặc đến mức nào và có một số mục tiêu hợp lý trong tâm trí.

Nếu không, bắt đầu đánh bóng sơ yếu lý lịch của bạn. :)


-1 cho câu trả lời này: Nếu bạn muốn giữ công việc của mình (hoặc ít nhất là để nó tự nguyện), bạn không nên hỏi ông chủ như vậy 'tại sao'? Đây là một cái gì đó phải được finess, như những người khác đã đề xuất.
Vector

3
Tôi không đồng ý với nhận xét của Mike. Mù quáng làm theo mệnh lệnh là dại dột. Hỏi 'tại sao?' tại mỗi yêu cầu đã giúp tôi tiết kiệm vô số giờ làm việc không cần thiết và tiết kiệm cho công ty của tôi rất nhiều tiền trong quá trình này. Nó được gọi là tham vấn, và những người không sợ ông chủ của họ làm điều đó một cách tự do và có hiệu quả tuyệt vời. Khi những người làm việc cho tôi đề nghị một cái gì đó, tôi cũng hỏi họ 'tại sao?' cũng. Trong cả hai trường hợp, nó đang tìm kiếm sự biện minh và hoàn toàn có thể chấp nhận được.
Soviut

10

Âm thanh như một cơ hội tốt để thử lập trình biết chữ. Google nó. :)

Nhưng ... nó không nhất thiết là một yêu cầu hoàn toàn vô lý. Một phần công việc của bạn (phần quan trọng hơn, imo) là truyền đạt (các) thuật toán của bạn cho các nhà phát triển khác và, nếu cần, những người không có kỹ thuật. Các lập trình viên thiên tài đơn độc, những người không thể giao tiếp luôn luôn có vấn đề, tôi nghĩ vậy.

Cuối cùng, mã của bạn phải rõ ràng (nghĩa là: thực sự tự ghi lại tài liệu hoặc tài liệu tốt, và bằng cách "tự ghi lại tài liệu" Tôi có nghĩa là các biến và hàm có một ý nghĩa hoặc trách nhiệm và tên của chúng phản ánh rõ ràng điều đó). Sếp của bạn có thể có lý do chính đáng cho yêu cầu của mình. Có lẽ (tôi chỉ đoán ở đây) bạn hoặc người tiền nhiệm của bạn có tiếng về mã không thể xuyên thủng, dễ vỡ và đây là phương thuốc của sếp. Đó là một chút cực đoan, nhưng có thể là một bài tập hữu ích cho bạn. Tôi cho rằng anh ta biết rằng cần có thời gian để viết tài liệu tốt hơn (và nếu anh ta không, anh ta nên được giáo dục - nó giống như viết một bài viết hạn: mất nhiều thời gian để viết hơn là đọc).


Tôi đã xem trang Wikipedia. Nó làm tôi nhớ đến "cấu trúc <chèn ngôn ngữ của con người ở đây>" mà tôi đã thấy trong các nghiên cứu. Bạn sử dụng ngôn ngữ của con người để biểu diễn cấu trúc lập trình theo từng dòng với các biểu thức như if blah then add 1 to xlà một thay thế cho nassi-schneuman hoặc sơ đồ. Đây có phải là những gì có nghĩa là lập trình biết chữ?
James P.

Bạn là người duy nhất trên trang này, người đã đề cập đến chương trình biết chữ của Knuth - khiến tôi tự hỏi rằng phần còn lại của những tấm áp phích đã sống trong bốn mươi năm qua ...
cji

@James: mua một bản sao của "Tex - chương trình" của Knuth và đọc nó. Đây là lập trình biết chữ.
cji

10

Ngay cả một dòng dịch theo dòng sẽ không truyền đạt hiệu quả ý nghĩa của từng dòng mã. Một lập trình viên hiểu về một dòng mã luôn trong bối cảnh của nhiều yếu tố. Nhận được một cái gì đó giống như một đoạn mã đa luồng và bản dịch tiếng Anh sẽ không có ý nghĩa gì hơn mã thô. Hãy suy nghĩ về chức năng được trải rộng giữa nhiều chức năng / tập tin. Một số mã hoàn toàn không có ý nghĩa nếu không giải thích số lượng lớn các mã khác. Hãy thử giải thích các phần khác nhau liên quan đến việc tiêm phụ thuộc "từng dòng" và bạn sẽ thấy ý tôi là gì. Chỉ cần bất cứ điều gì vượt quá mã thủ tục chức năng của Thiên Chúa sẽ đòi hỏi một lượng kiến ​​thức lập trình sâu rộng chỉ để hiểu bản dịch tiếng Anh. Ngoài ra, hãy xem một cái gì đó đơn giản như một tuyên bố quyết định if / other. Không có từng dòng một, vì dòng tiếp theo phụ thuộc vào dữ liệu thời gian chạy. Dòng tiếp theo có thể là một trong một số khả năng.Khi bạn giải thích những gì ứng dụng của bạn làm, bạn sẽ biến PM của mình thành một lập trình viên và cả hai bạn sẽ 5 tuổi.


10

Vì tôi đã từng dạy lập trình, tôi sẽ rất vui khi cho nó đi.

Anh ta sẽ nhanh chóng phát hiện ra mình nhận được nhiều hơn những gì anh ta mặc cả, điều này sẽ khiến tôi buồn vì tôi thích giải thích mọi thứ :-)


3
Tôi nghĩ rằng đây là câu trả lời tốt nhất ở đây. Tôi không hiểu tất cả sự miễn cưỡng khi thử nó, ý tôi là bạn sẽ được trả tiền để ngồi đó và giải thích mã của bạn! Chết tiệt, trừ khi mã của bạn là hoàn toàn tào lao, bạn có thể sẽ thích nó, và cho dù nó có tốt đến đâu thì bạn cũng sẽ tìm thấy một số lỗi và địa điểm để cải thiện.
Bill K

1
Tôi đã có một giáo viên giải thích các công cụ trong khi gõ mã được hiển thị thông qua một máy chiếu. Có lẽ điều này có thể được thực hiện một chút giống như một bài học lái xe. Nếu bạn không thể thông qua tất cả các mã ít nhất, bạn có thể hiểu rõ hơn về những gì đang được thực hiện và làm thế nào.
James P.

1
Tôi đang cố gắng tự mình tham gia vào công việc giảng dạy và tôi đã đưa ra một câu trả lời tương tự. Tôi với @Bill, tôi thực sự thất vọng vì mọi người sẽ có lập trường ẩn dật như vậy. Có phải chúng ta đang bối rối vì tin rằng nó đáng để dành thời gian giải thích dù chỉ là một phần nhỏ của mã?
Rei Miyasaka

1
@Rei: Thái độ, xấu hay tốt, có xu hướng chiếm lấy các tập hợp lớn của những người tương tự. Tôi đã có bề dày kinh nghiệm (kỹ sư, sinh viên tốt nghiệp, giáo sư, nhà tư vấn, nhân viên dài hạn) vì vậy tôi muốn nghĩ rằng điều đó mang lại một viễn cảnh. Ngoài ra, thái độ của tôi đã thay đổi qua nhiều năm.
Mike Dunlavey

10

Khi bạn đề cập đến 'Sếp' của bạn, đây có phải là "người quản lý cấp trung phụ trách bạn / nhóm của bạn" không? hoặc Chủ sở hữu công ty của bạn? Bạn có được trả "theo giờ" hay "tiền lương" không?

NẾU sếp của bạn là một người quản lý cấp trung có trách nhiệm, NÓI CHUYỆN VỚI BOSS CỦA TÔI, chỉ ra rằng để đáp ứng yêu cầu của sếp, năng suất của bạn đối với công ty sẽ giảm xuống còn 1/3 so với mức có thể.

NẾU sếp của bạn là "anh chàng ký séc" giải thích cho anh ta điều tương tự, chỉ là về mặt ngoại giao. Công việc của bạn đã chuyển từ "Viết mã" sang "Viết mã, viết giải thích mã, giải thích giải thích."

nhập mô tả hình ảnh ở đây


Tại sao không làm điều đó và lấy tiền? Bạn có chắc chắn rằng giá trị duy nhất của bạn thích trong việc sản xuất mã như một con khỉ không?
Bill K

9

Một biểu đồ dòng chảy có thể sẽ có lợi hơn cho anh ta. Đây chắc chắn là một yêu cầu bất thường và không nói nhiều về anh ấy với tư cách là người quản lý.


18
Trên thực tế, nó cho tôi biết rất nhiều về người này ...
Marjan Venema

5
Đó là những gì "không nói nhiều về" có nghĩa là trong bối cảnh này - thực sự nó nói rất nhiều, nhưng nó chỉ không thể hiện nhiều điều tốt về cá nhân.
Joseph Weissman

8

Thực tế là sếp của bạn sẵn sàng dành thời gian để hiểu mã mà bạn đã viết, bạn có thể sử dụng vì lợi ích của mình. Hãy thử giới thiệu anh ấy với Cucumber: http://cukes.info/

và làm cho sếp của bạn viết bài kiểm tra BDD cho bạn trong tương lai.


Tôi đã cố gắng để sử dụng dưa chuột trong cửa hàng của tôi trong một thời gian ... thật không may, (hoặc có thể may mắn thay!) Ông chủ của tôi không quan tâm đến những gì xảy ra đằng sau hậu trường, miễn là nó hoạt động. Chỉ cần anh ta hiểu được lợi ích của việc viết bài kiểm tra đầu tiên là một trận chiến khó khăn.
Jason Lewis

6

Anh ta không nên bận tâm để biết bất kỳ điều đó. Nói với anh ta, rằng trong việc thực hiện phát triển phần mềm có thể thay đổi. Thiết kế sự kiện có thể thay đổi. Nói với anh ta về việc che giấu thông tin, đóng gói và trừu tượng.
Ông, với tư cách là một phần trong nhóm của bạn, với tư cách là khách hàng của mã của bạn, theo nghĩa rộng hơn, chỉ nên làm việc với sự trừu tượng hóa rõ ràng, ở mức độ cao về những gì mã của bạn làm. Giống như bất kỳ lớp mã nào của bạn hoạt động với lớp mã khác của người khác. Biết nhiều hơn thế, sẽ chỉ làm anh ta chậm lại và mạo hiểm để anh ta đưa ra các giả định dựa trên hoạt động bên trong của mã của bạn. Những giả định đó sẽ chấm dứt, khi bạn phải thay đổi mã của mình, điều này sẽ trở thành một vấn đề, nếu anh ta xây dựng bất kỳ loại hệ thống hoặc quy trình nào dựa trên chúng.
Và cũng phải làm loại công việc này sẽ làm giảm hiệu quả của bạn. Bạn không chỉ phải thực hiện các thay đổi tiếp theo ở hai nơi khác nhau mà còn ảnh hưởng tiêu cực đến tinh thần làm việc của bạn, điều này sẽ làm giảm sản lượng của bạn hơn nữa.


6

Vẻ đẹp của tiếng Anh là obfucates đẹp. Nếu bạn sử dụng điều này cho lợi thế của mình, bạn có thể không bao giờ phải đối phó với loại yêu cầu này nữa. Tôi sẽ lấy một đoạn mã nhỏ làm mẫu nhưng một đoạn rất trừu tượng và không dễ hiểu chút nào. Sau đó tôi sẽ viết lên những bình luận bằng tiếng Anh kỹ thuật như thể bạn đang viết nó cho một chương trong một cuốn sách lập trình. Càng theo dõi càng lâu và càng phức tạp. Nói cho anh ấy biết bạn mất bao nhiêu giờ để ghi lại tính năng này. Sau đó giải thích rằng đó chỉ là 1/10 của 1% (sử dụng số liệu thực tế dựa trên các dòng mã nếu bạn có thể, chúng có thể tệ hơn mức này) của cơ sở mã thực tế. Khi anh ta nhận ra rằng anh ta không biết bản dịch tiếng Anh nói gì và sẽ mất 20.000 giờ để làm tài liệu này, anh ta sẽ rút lui khá nhanh. Nhưng rất nghiêm túc cố gắng để hoàn thành nhiệm vụ của mình. Đừng thử điều này nếu bạn không thể thực hiện điều đó và anh ta nghi ngờ bạn đang chơi anh ta.


6

Điều này trông giống như một ứng cử viên cho một dải Dilbert -ông chủ tóc nhọn vấn đề kỳ nghỉ đặc biệt ! Yêu cầu của ông chắc chắn không âm thanh hợp lý ở cái nhìn đầu tiên.

Hài hước sang một bên, cố gắng tìm hiểu những gì anh ta thực sự cần, và tại sao, sau đó khuyên anh ta về những gì sẽ tốn bằng đô la hoặc giờ để cung cấp cho anh ta, và để anh ta quyết định nếu anh ta muốn chi nhiều tiền cho nó.

Đối với bản thân bạn, hãy đếm số giờ bạn sẽ đáp ứng yêu cầu có vẻ kỳ quái của anh ấy và sau đó xác định xem bạn có nên đầu tư một phần thời gian đó để tìm một công việc mới làm việc cho một chủ nhân sẵn sàng đối xử với bạn không như một chuyên gia!


1
Một phân tích lợi ích chi phí nên làm công việc. Có thể người quản lý có một số lợi ích bổ sung để mang vào. Nếu không trả hết, thật khó để thực thi và bảo vệ cho quản lý cấp trên.
mbx

6

Đưa anh ta vào văn phòng của bạn và cho anh ta một chuyến tham quan mã của bạn.

Anh ta sẽ nhận ra một phần thông qua việc anh ta đưa ra một yêu cầu vô lý, và anh ta sẽ bỏ đi và không bao giờ làm phiền bạn nữa.

Nếu bạn không đưa ra yêu cầu của anh ấy để giúp anh ấy cố gắng hiểu mã của bạn, anh ấy sẽ tìm những cách khác nhau nhưng không kém phần ngớ ngẩn để chọc bạn.

Đây là một trường hợp mà sự xoa dịu hoạt động tốt hơn mài mòn.


+1 - Tôi đã suy nghĩ theo cùng một dòng - đưa anh ta theo yêu cầu - anh ta có thể sẽ chán và / hoặc sợ chết trước khi quá lâu ...
Vector

+1 Tôi thích điều đó - "hoạt động tốt hơn mài mòn".
Mike Dunlavey

6

Sẽ thật tuyệt nếu chúng tôi có một dịch giả "Ngôn ngữ X sang tiếng Anh" thực hiện điều này. Sau đó, người ta có thể cười và nói, không vấn đề gì, ông chủ, bạn sẽ có điều đó trong một phút. Và sau đó xuất hiện một thư với một vài megabyte văn bản có nội dung:

  • Đặt một mảng số nguyên mới có 20 phần tử.
  • Đặt x là biến để lưu số nguyên.
  • Đặt x thành 0
  • Trong khi x nhỏ hơn 20, hãy làm những gì được quy định trong 2 dòng tiếp theo
  • đặt phần tử mảng của a với chỉ số x thành kết quả của việc gọi nThPrime với đối số x + 1
  • tăng x 1
  • ....

Một lựa chọn khác là đề xuất lập trình trong Shakespeare từ đó.


Tôi sẽ đưa ra đề nghị tương tự. Sếp không muốn có một cái nhìn tổng quan về khái niệm, anh ta muốn nó theo từng dòng để có thể tạo ra thứ gì đó trong một ngày hoặc lâu hơn để tạo ra tài liệu hoàn toàn vô dụng nhưng cực kỳ chính xác. Sẽ không có vấn đề gì nếu đó là một tổ chuột của if-elses trong perl dễ bị nhầm lẫn bởi các trường hợp góc, nó sẽ chỉ xác định các khai báo biến, sửa đổi các biến, gọi phương thức, v.v. (hãy nhớ rằng đó là từng dòng một cách mò mẫm mã).
PhilDin

Vâng, ông chủ này chỉ là không biết gì. Anh ta không biết "trừu tượng" là gì, anh ta không biết rằng tiếng Anh không tốt để diễn đạt các chương trình máy tính, anh ta không thể tưởng tượng rằng anh ta thực sự không muốn biết tất cả những chi tiết đó, đó là lý do tại sao anh ta trả tiền cho một lập trình viên. Do đó, anh xứng đáng với một bài học như thế này.
Ingo

5

Sếp của tôi muốn một lời giải thích bằng tiếng Anh từng dòng về mã của chúng tôi

Khó khăn.

Vì anh ta không phải là lập trình viên, anh ta không thể làm theo mã, vì vậy muốn tất cả được dịch sang tiếng Anh.

Nếu anh ta không phải là một lập trình viên, anh ta không nên đọc mã. Ở tất cả.

Cung cấp tài liệu cấp cao thay thế.

Đây không phải là một yêu cầu hợp lý, phải không?

Không.


4

Là một lập trình viên, bạn thực sự có "hai" công việc.

Đầu tiên là tạo ra các chương trình tốt. Thứ hai là "bán" chúng cho khách hàng trong và ngoài công ty.

Yêu cầu của sếp "làm tổn thương" công việc đầu tiên của bạn. Phải mất nhiều thời gian hơn để tài liệu chương trình của bạn. Mặt khác, anh ấy thực sự khiến bạn làm việc chăm chỉ hơn trong công việc "thứ hai" của mình.

Sếp của bạn đang yêu cầu bạn ghi lại chương trình bằng tiếng Anh vì lợi ích của mình và có lẽ vì lợi ích của những người mà anh ta phải đối phó trong và ngoài công ty. Nếu bạn giúp anh ta thực hiện công việc của mình, điều đó sẽ mang lại lợi ích cho bạn về lâu dài, khi bạn yêu cầu anh ta cho thêm phần cứng, nhân sự hoặc tiền để tăng lương. Rốt cuộc, anh ấy yêu cầu bạn làm thêm công việc.


3
Tài liệu từng dòng! = Bán dự án. Cần phải có một tài liệu cung cấp thông tin này, nó được gọi là yêu cầu. Tôi đồng ý về mô tả 2 công việc của bạn, nhưng việc ghi chép đến mức đó sẽ không có lợi cho việc bán dự án / hệ thống / ứng dụng. Có một mức độ phù hợp của tài liệu để trình bày công việc của bạn, và đây không phải là nó.
cdkMoose

Tôi cá là người viết séc tại công ty này sẽ không vui vì người quản lý này đã lãng phí nhiều tài nguyên của công ty này.
JeffO

@Jeff O: Có thể. Hoặc có thể là công ty WHOLE là như thế này, tất cả các con đường dẫn đến đỉnh cao.
Tom Au

4

Tôi nghĩ rằng BDD sẽ phù hợp với vấn đề này, mặc dù có vẻ như dự án của bạn sắp hoàn thành, vì vậy rất khó để thực hiện nó ngay bây giờ, vì vậy nó giống như để tham khảo trong tương lai.

Với các trường hợp sử dụng BDD được mô tả là các tài liệu có thể đọc được, sau đó được dịch thành các kiểm tra chức năng tự động.


Đây có thể là đề xuất mang tính xây dựng nhất cho đến nay. Phát triển dựa trên hành vi được thiết kế để đáp ứng chính xác nhu cầu này: để giúp các lập trình viên và người quản lý / khách hàng của họ đồng ý về những gì phần mềm làm. Viết các mô tả giúp lập kế hoạch mã và chạy thử nghiệm chứng minh rằng chúng vẫn là các mô tả chính xác.
Nathan Long

4

Có lẽ, yêu cầu này là thời điểm tốt để tìm hiểu những thứ như ANTLR . Lấy ANTLR, lấy ngữ pháp ngôn ngữ của bạn, phân tích tất cả mã bạn có, duyệt qua AST tạo mô tả dựa trên mẫu cho mỗi nút, do đó i++được mô tả là increase i by 1 using postfix increment operator. Điều đó nên thực sự hài hước. Sếp của bạn cũng có thể muốn đưa công cụ này vào tập lệnh xây dựng, vì vậy mỗi khi bạn thực hiện bất kỳ thay đổi nào, anh ta sẽ nhận được e-mail ~ 20 MB mô tả phiên bản mới làm gì.

PS đùa thôi, anh ta là một thằng ngốc.


3

Mặc dù tôi đồng ý rằng đây là một yêu cầu không hợp lý, nhưng sếp của bạn có thể đánh giá cao thứ gì đó như đầu ra của Docco , phân tách các nhận xét về mã và từng dòng hoặc mệnh đề của bạn thành đầu ra HTML hai cột, với mã trên một bên và văn xuôi bên kia. Bạn phải tự gõ các bình luận, tất nhiên, nhưng phần trình bày khá IMHO, ngay cả đối với những người đọc không có kỹ thuật. Ví dụ, hãy xem phần nhận xét từng dòng của mã được chú thích cho Underscore.js . Có phiên bản Python và shell script.


Đây là một trong những câu trả lời hữu ích nhất mà tôi đã thấy cho câu hỏi. Tôi đã thực sự thử sử dụng docco, nhưng thấy nó có vấn đề với một số bình luận hiện có của tôi và đưa ra không chính xác. Do đó, tôi đã đi với JSDoc và làm theo hướng dẫn của google để tạo tài liệu. Không phải là đẹp, nhưng rất nhiều đầy đủ, và cũng là một định dạng tiêu chuẩn. Vấn đề với docco đối với tôi là bạn cần cấu trúc mã của mình cho phù hợp với các bình luận, hoặc nó không có ý nghĩa gì. Cám ơn vì sự gợi ý.
Billy Moon

3

Có thể ông chủ của bạn chỉ là người không hiểu biết và bị đe dọa, nhưng thực sự là một người hợp lý. Nếu vậy, lý luận với anh ấy / cô ấy có thể có hiệu quả - một cuộc trò chuyện ngẫu nhiên nơi bạn hứa sẽ cung cấp "những gì anh ấy thực sự muốn" tức là; một hướng dẫn văn xuôi cho những gì chương trình đang làm.

Nếu nó đi xuống "đường của tôi hoặc đường cao tốc", hãy kiểm tra khí của bạn ngay bây giờ.


3

Bạn có thể viết một số thử nghiệm chấp nhận bằng cách sử dụng khung thiết kế hướng hành vi như dưa chuột ? Điều đó sẽ không giải thích mã; nó sẽ giải thích những gì nó làm, và bằng ngôn ngữ tự nhiên. Nó cũng có lợi ích là có thể thực thi được, vì vậy bạn luôn có thể chắc chắn rằng tài liệu được cập nhật, bởi vì nếu không, trình chạy thử nghiệm sẽ có màu đỏ.

Kiểm tra video giới thiệu. Có lẽ đó là một sự chuyển hướng tốt trong khi bạn tìm thấy một ông chủ mới ... ;-)


2

Người quản lý của bạn gần như chắc chắn đau khổ vì thực tế là anh ta không hiểu những gì mọi người làm mà anh ta đang quản lý và anh ta không có nền tảng để hiểu kết quả mà họ tạo ra.

Tôi nghi ngờ anh ấy nghĩ giải pháp này rất kỹ lưỡng, và nó có vẻ hợp lý với anh ấy từ cái nhìn đầu tiên. Nhưng đó phần lớn là vì anh ta không hiểu mã lập trình thực sự là gì.

Bất kỳ lập trình viên nào cũng hiểu sự vô lý của yêu cầu này, nhưng chúng tôi làm bởi vì chúng tôi biết một cách trực giác rằng một khi bạn vượt qua ngôn ngữ, tất cả những gì được tiết lộ là thuật toán, cũng khó hiểu không kém.

// Set s to the first address in the server list
server_info *s = cmd->servers;
// Loop until s is NULL
while (s) {
    // call the server's init function passing our current ID and address
    s->init(proc->id,*addr);
    // call log::info with our custom message
    log::info("Starting server %s",s->name);
    // Set s to the value returned by the server's next() function
    s=s->next();
} // end of loop

Vấn đề ở đây là trong khi các ý kiến ​​giải thích mỗi dòng làm gì, bạn vẫn không biết mã thực sự làm gì trừ khi bạn hiểu tất cả các hàm ý là gì. Thật rõ ràng nếu bạn là một lập trình viên và đã thấy mẫu này trước đó; nhưng hãy thể hiện điều này với một người chỉ hiểu bán hàng và anh ta sẽ bối rối sau khi đọc những bình luận như trước đây.

Bạn thực sự có thể tiết kiệm thời gian bằng cách dạy cho sếp của bạn một số chương trình cơ bản. Nếu anh ấy muốn đọc mã của bạn, hãy cho anh ấy các công cụ để có thể làm như vậy. Hầu hết các ngôn ngữ đều khá nhỏ gọn theo cú pháp và việc học cấu trúc chỉ mất một hoặc hai giờ. Anh ấy gần như chắc chắn sẽ bỏ cuộc sau vài ngày, nhưng ít nhất anh ấy sẽ biết những gì anh ấy đang truyền lại, và quan trọng hơn là tại sao anh ấy không muốn đọc mã của bạn.


1

IMHO ... nếu anh ấy chịu trách nhiệm hoàn thành nhiệm vụ, anh ấy nên biết nó hoạt động như thế nào ... :)


2
Bạn đang đề cập đến người quản lý hoặc lập trình viên?
Nathan Long

Có bao nhiêu công ty có thể đủ khả năng để mọi nhà quản lý phi kỹ thuật sử dụng hết thời gian của nhà phát triển này?
JeffO
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.