Các nhà văn nghèo làm lập trình viên nghèo? [đóng cửa]


16

Tôi đang đọc Coders at Work của Peter Seibel, và nhiều lần người ta đã đề cập rằng các lập trình viên không thể viết thường làm cho các lập trình viên nghèo - điều đó đã được Douglas Crockford, Joshua Bloch, Joe Armstrong, Dijkstra (và tôi yêu cầu) chỉ đọc một nửa cuốn sách).

Quan điểm của bạn về điều này là gì? Là không có khả năng thể hiện bản thân bằng văn bản bằng ngôn ngữ tự nhiên như tiếng Anh có phải là một trở ngại của việc viết mã tốt?


9
Tôi không biết về kỹ năng làm lập trình viên, nhưng để BÁN mình là một lập trình viên, thông minh = gợi cảm trong thế giới tự do. Do đó, nếu bạn có thể viết (và nói) tốt, bạn sẽ được coi là thông minh và được coi là đáng tin cậy hơn với tư cách là một nhà phát triển (mặc dù nó có thể hoàn toàn không có căn cứ).
Dan Rosenstark

Bởi "không thể viết", bạn có nghĩa là ngữ pháp của họ không chính xác? Đó có lẽ là một vấn đề lớn hơn những thứ như dòng chảy kém, v.v.
Tối đa

1
@Maxpm: Có thể, nhưng cũng không thể truyền đạt ý nghĩa của chúng bằng văn bản, mặc dù đã đúng về mặt ngữ pháp.
gablin

Câu trả lời:


30

Có nhiều thứ để lập trình hơn là "viết mã". Một phần lớn của việc trở thành một lập trình viên thành công liên quan đến giao tiếp; Có thể kết nối với khách hàng, hiểu nhu cầu của họ, dịch chúng vào lĩnh vực kỹ thuật, thể hiện chúng bằng mã và sau đó giải thích kết quả lại cho khách hàng.

Các lập trình viên gặp khó khăn trong việc thể hiện rõ ràng bằng văn bản có thể không thể giao tiếp tốt nói chung, trong khi những người nắm vững ngôn ngữ và viết nói chung có thể dịch các kỹ năng đó sang mã họ viết.

Tôi nghĩ rằng không thể viết tốt, và do đó giao tiếp tốt, sẽ giữ cho một người không phải là một lập trình viên rất giỏi.

Như Jason Fried và David Heinemeier Hansson (trong số 37 người) nói trong cuốn sách Rework:

Nếu bạn đang cố gắng quyết định trong số một vài người để điền vào một vị trí, hãy thuê nhà văn giỏi nhất.

Trở thành một nhà văn giỏi không chỉ là viết lách. Viết rõ ràng là một dấu hiệu của suy nghĩ rõ ràng. Các nhà văn vĩ đại biết cách giao tiếp.


2
Yup, và tôi nghĩ rằng khá nhiều người đồng ý rằng một trong những phẩm chất của một lập trình viên giỏi là khả năng thể hiện rõ ràng bằng mã nên điều này sẽ không làm tôi ngạc nhiên rằng khả năng thể hiện rõ ràng bằng văn bản có tương quan với khả năng diễn đạt rõ ràng trong mã của bạn (và ngược lại). +1
n1ckp

2
Tôi muốn thứ hai này. Bạn cần giao tiếp - không chỉ với máy. Những người xung quanh bạn và các lập trình viên đến sau bạn cần sự rõ ràng trong giao tiếp, cả nói và viết. Nói vì sớm hay muộn bạn phải nói chuyện với mọi người, và viết vì đó là mã của bạn và Ý KIẾN CỦA BẠN.
quick_now

Tôi thấy câu trả lời của bạn rất thú vị! Nhưng khi tôi nhìn lại trong trí nhớ của mình để tìm ra ai là lập trình viên giỏi nhất mà tôi đã làm việc cùng, làm việc cho hoặc làm việc cho tôi, tôi thấy nhiều người trong số họ rất tệ trong việc viết. Tuy nhiên, họ đã rất tốt. Tuy nhiên, tôi sẽ ghi nhớ câu trả lời tuyệt vời của bạn và sẽ thử nó trong tương lai. +1

16
  • Nếu bạn không thể giải thích điều gì đó đủ tốt thì có lẽ bạn không hiểu rõ lắm. Trở thành một người thông minh nghĩa là bạn sẽ làm việc với những người thông minh khác và bạn sẽ phải giao tiếp với họ một cách hiệu quả.
  • Bất kỳ ý tưởng tuyệt vời nào bạn có đều vô dụng nếu chỉ tồn tại trong đầu bạn
    Có thể truyền đạt ý tưởng của bạn một cách hiệu quả là một dấu hiệu của sự hiểu biết tuyệt vời. Điều này áp dụng cho nhiều hơn là lĩnh vực lập trình.

4

Tôi nghĩ rằng nếu chúng ta kiểm tra câu hỏi, chúng ta có được câu trả lời trực tiếp:

Là không có khả năng thể hiện bản thân bằng văn bản bằng ngôn ngữ tự nhiên như tiếng Anh có phải là một trở ngại của việc viết mã tốt?

Nó thực sự có nghĩa là gì để viết mã tốt?

Các chương trình phải được viết để mọi người đọc và chỉ tình cờ cho các máy thực thi.
- Abelson & Sussman, cấu trúc và giải thích các chương trình máy tính

Nó có nghĩa là thể hiện bản thân rõ ràng, chính xác, chính xác và thanh lịch bằng ngôn ngữ lập trình.

Sự khác biệt duy nhất giữa việc thể hiện bản thân một cách khéo léo bằng tiếng Anh hoặc ngôn ngữ lập trình là tiếng Anh dễ tha thứ hơn nhiều.


3

Tôi không nghĩ đó là một trở ngại lớn đối với một con khỉ mã (tôi đang giả định một mức độ / khả năng cơ bản nhất định để thể hiện bản thân của mình bằng ngôn ngữ mẹ đẻ của họ). Tuy nhiên tôi nghĩ nó có thể nhanh chóng trở thành một trở ngại lớn khi bạn (nhà phát triển) phải bắt đầu đưa ra các thiết kế / vòm / kế hoạch tốt hơn cho đối tượng không có kỹ thuật. Theo kinh nghiệm của tôi, việc giao tiếp với người khác có trình độ kỹ thuật tương tự như tôi là điều dễ dàng hơn và tôi có ít kỹ năng ngôn ngữ (tự nhiên) hơn đáng kể để thực hiện điều gì đó cho khách hàng và / hoặc người quản lý. Đồng thời, ngay cả khi đó là đối tượng kỹ thuật vì chủ đề trở nên ít cụ thể hơn, người viết về nó (hoặc nói về vấn đề đó) phải nói rõ.


3

Điều đó phụ thuộc vào ý của bạn là "mã tốt".

Nếu bạn có nghĩa là mã chỉ hoạt động, hầu như không có bất kỳ mối quan hệ nào giữa việc có thể giao tiếp với con người và có thể giao tiếp với máy tính.

Nếu bạn có nghĩa là mã hoạt động, có thể duy trì và thể hiện rõ ràng ý định của mã, thì hoàn toàn có mối quan hệ giữa viết mã tốt và viết bằng ngôn ngữ chỉ dành cho con người.

Mặc dù bạn sẽ không cần tất cả các kỹ năng khác nhau cần có để trở thành một nhà văn giỏi để viết mã dễ hiểu, nhưng vẫn còn một số yếu tố phải có, vì cả hai sẽ được con người đọc. Theo một số cách, việc viết mã tốt thậm chí còn khó hơn, vì nó nên mô tả ý định với mã, trong khi không sử dụng các cấu trúc sẽ hoạt động kém trong khi được thực hiện bởi máy tính.


2

Có điều, mã hóa cũng là một kỹ năng giao tiếp. Jack Ganssle trong bản tin điện tử nhúng Muse của ông gần đây đã trích dẫn Doug Abbott:

Khi bạn viết một chương trình, những gì bạn thực sự đang làm là truyền đạt cho người khác những gì bạn muốn máy tính làm. Lập trình là về giao tiếp, giống như bất kỳ hình thức viết nào khác. Vì vậy, có, sinh viên khoa học máy tính nên được tiếp xúc với văn bản tốt. Nhưng vì có rất ít thứ quý giá trong khoa học máy tính, có lẽ họ chỉ cần một số lớp viết sáng tạo cơ bản.

Các lập trình viên không biết viết văn xuôi có lẽ cũng không biết viết mã.

Thêm về bài viết thú vị này:

Viết xấu phản ánh kỹ năng lập trình kém?


2

Đây hoàn toàn là giai thoại, nhưng:

Một trong những lập trình viên "ngôi sao nhạc rock" giỏi nhất mà tôi từng làm việc là một nhà văn rất nghèo. Và khi tôi nói "rất nghèo", ý tôi là kiểu người đi qua như anh ta cực kỳ say xỉn, hoặc hầu như không biết chữ - khi bạn nhìn thấy email của anh ta. Lỗi đánh máy, thiếu dấu câu, khó diễn đạt ý tưởng rõ ràng và các lỗi chính tả phổ biến ("của họ / họ" và như vậy) tất cả đều rất nhiều - đôi khi rất khó chịu. Đọc một số email của anh ấy - tôi sẽ lo lắng về việc anh ấy gửi email trực tiếp cho khách hàng (chúng tôi không cần phải làm điều đó trong công ty đó) - bởi vì điều đó sẽ khiến công ty trở nên tồi tệ!

Tuy nhiên, anh vẫn là một lập trình viên siêu sao. Một thứ tự cường độ năng suất cao hơn và bật trên mức trung bình.

Tôi không biết phải làm gì với nó. Tôi đã thấy điều này nhiều lần với những người khác nhau. Một số người dường như không có sở trường để ngồi xuống và viết ra. Và thường thì nó dường như không ảnh hưởng đến tài năng của họ trong các lĩnh vực khác (thậm chí tương đối giống với tài năng "công việc tri thức", chẳng hạn như lập trình). Bạn sẽ nghĩ rằng nó sẽ được kết nối, nhưng tôi đã thấy một số ví dụ sống như thế này ở nơi không có. Mặc dù tôi đoán nó là hoàn toàn có thể rằng họ là " ngoại lệ ai chứng minh sự cai trị " - Tôi có lẽ chỉ chưa bao giờ nghĩ đến chú ý đến các tác giả xấu người không phải là lập trình viên, và những nhà văn giỏi .


3
Luôn có ngoại lệ cho quy tắc. Tôi cũng đã làm việc với một vài người tuyệt vời - những người tuyệt vời, những người mà chúng tôi không bao giờ để gần khách hàng vì họ sẽ được tạo thành mincemeat. Tôi đã dành nhiều năm để sửa lỗi chính tả và trong tài liệu của họ. Cung cấp cho họ một vấn đề kỹ thuật mặc dù và những cái nhìn sâu sắc và giải pháp là tuyệt vời. Tất cả điều này chỉ cho thấy rằng các câu trả lời ở đây là khái quát. Tuy nhiên, khái quát hóa được áp dụng cho phần lớn mọi người.
quick_now

3
@quickly_now: Tôi sẽ tự hỏi (vì bạn không chỉ định) cách mã của họ đọc. Họ có thể rất thông minh và giải quyết vấn đề tốt nhưng nếu mã của họ không thể đọc được thì họ không phải là lập trình viên tuyệt vời nếu bạn muốn ý kiến ​​của tôi.
n1ckp

@ n1ck: Bây giờ bạn đề cập đến nó, anh chàng mà tôi nghĩ là không giỏi trong việc ghi lại mã của mình. Bản thân mã đã được thiết kế tốt và được thiết kế tốt, nhưng anh ta đã không đưa ra nhận xét xung quanh các đoạn mã vốn đã phức tạp, điều đó có nghĩa là nó khó bảo trì hơn mức cần thiết. Không nghĩ về điều đó. :)
Bàn Bobby

Tôi đồng ý với @ n1ckp. Tôi cũng sẵn sàng đặt cược sự lựa chọn tên của anh ấy cho các biến / phương thức / lớp đôi khi sẽ khó hiểu và khó hiểu. Tôi có xu hướng rất cảnh giác với các lập trình viên với năng suất cực kỳ cao, bởi vì nó thường phải trả giá bằng việc dành thêm một chút thời gian để cải thiện khả năng duy trì lâu dài.
vỡ mộng

2

Nếu họ không thể viết tốt, làm sao họ có thể thuyết phục bạn rằng họ là những lập trình viên giỏi?


0

Có ai đó không thể diễn tả chính xác một tổ chức hệ thống hoặc một ý tưởng có thể bằng cách viết nó sẽ có thể viết mã - đó là các hướng dẫn chính xác - được giải thích chính xác bởi (rất) máy tính câm?


Nhưng bạn nhận được một vòng phản hồi rất rõ ràng và ngay lập tức từ máy tính nếu mã của bạn không được viết chính xác. Tôi nghi ngờ bạn có thể có tiếng Anh viết cực kỳ kém và thậm chí không bao giờ được nói về nó, chứ đừng nói đến việc đưa ra phản hồi bạn cần cải thiện.
Carson63000

Bạn phải học cách rõ ràng và chính xác ngay cả với trình biên dịch bởi vì nếu không, bạn thậm chí sẽ không bao giờ biên dịch bất cứ thứ gì cuối cùng.
Klaim

0

Tôi nghĩ rằng điều rất quan trọng đối với một lập trình viên là có thể giao tiếp tốt, cả với ngôn ngữ nói và ngôn ngữ viết. Khả năng dịch một ý tưởng thành từ là điều kiện tiên quyết để viết mã.

Cho dù chúng ta đang giao tiếp với máy tính hay một người, chúng ta phải sắp xếp các từ theo một trật tự có ý nghĩa theo các quy tắc ngữ pháp. Chúng ta phải phát âm các từ một cách chính xác hoặc đánh vần chúng chính xác để phía bên kia của cuộc trò chuyện hiểu chúng. Máy tính sẽ ném lỗi cú pháp, đồng nghiệp sẽ nói "CÁI GÌ?" hoặc giảm giá những gì đang được nói là bập bẹ vô ích hoặc tệ hơn, một sự xao lãng khó chịu.

Tôi đã hết sức nản lòng tuyển dụng các ứng viên vì họ không thể hoàn thành một ý nghĩ hoặc ở lại về một chủ đề. Dù sao, một người đã được ông chủ của chúng tôi thuê, và hóa ra không thể giao nhiệm vụ đơn giản đúng hạn vì anh ta bị phân tâm bởi bất kỳ công nghệ hay đồ chơi mới sáng bóng nào bắt mắt.

Vì vậy, vâng, điều quan trọng là các lập trình viên có thể giao tiếp tốt. Nếu họ không thể giao tiếp hiệu quả với con người, họ không thể làm điều đó với máy tính.


0

Nhà văn nghèo làm nhà văn nghèo, và không có gì khác. Kỹ năng viết kém không có nghĩa là họ không thể giao tiếp, nhưng họ không thể viết hoặc diễn đạt tốt. Tất nhiên ai cũng có thể nói kỹ năng giao tiếp là quan trọng và quan trọng trong công ty, v.v., nhưng điều đó không có nghĩa là một lập trình viên có kỹ năng giao tiếp kém không thể hoàn thành công việc tốt. Các lập trình và viết là nghệ thuật, nhưng loại hoàn toàn khác nhau. Viết là về cách làm cho một số người khác hiểu những gì bạn đang nói và / hoặc hành động phù hợp, nhưng lập trình không làm cho máy tính hiểu được yêu cầu của bạn, bởi vì không máy tính nào sẽ hiểu bất kỳ yêu cầu nào của người dùng (ít nhất là trong vòng 100 năm kể từ bây giờ IMO). Lập trình là về cách dịch yêu cầu sang ngôn ngữ lập trình, và đó là lý do tại sao kỹ năng viết không liên quan lắm.


1
Một phần công việc của một lập trình viên là thể hiện rõ ràng bằng mã (và các bình luận) để không chỉ máy tính mà cả những người khác cũng có thể đọc được mã. Nó sẽ làm cho các giác quan (nhưng không được chứng minh AFAIK) rằng các kỹ năng này có tương quan với nhau.
n1ckp

0

Tuyệt đối không!

Một nhà văn giỏi không gì khác hơn là một nhà văn giỏi. Yêu cầu một nhà văn giỏi mô tả khái niệm cơ sở dữ liệu cho một người không có kỹ thuật. Bạn nghĩ bạn sẽ nhận được gì ...?

Một nhà văn giỏi, viết. Một lập trình viên giỏi viết mã tốt.

  • Mã mà người khác có thể đọc sáu tháng sau khi nó được phát triển.
  • Mã có ý nghĩa vào lúc 2:00 sáng khi hệ thống bị lỗi và việc gỡ lỗi đang diễn ra.
  • Mã mà mọi người khác thích mượn vì họ hiểu nó và có thể sửa đổi nó dễ dàng
  • Mã hoạt động 24/7 365

Tôi sẽ tiếp tục và tiếp tục nhưng tôi muốn dành thời gian để trả lời các bài viết khác. Tôi khá nhiều nghĩ rằng các bạn biết tôi đứng ở đâu về vấn đề này.


1
Tôi nghĩ rằng các gạch đầu dòng 1,2 và 3 đòi hỏi một người phải là một nhà văn giỏi ngoài việc là một lập trình viên giỏi. Về bản chất, bạn đang xem xét kỹ năng viết tốt như một đặc điểm ngầm.
Mamta D
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.