Có một điều như một siêu lập trình viên? [đóng cửa]


14

Bạn đã bắt gặp một siêu lập trình viên? Điều gì xác định anh ấy hoặc cô ấy như vậy, so với các lập trình viên "có kinh nghiệm / bình thường"?

Cũng thế. Làm thế nào để bạn đối phó với một người trong nhóm của bạn, người tin rằng anh ta là một lập trình viên siêu hạng? Cả hai trong trường hợp anh ta thực sự là hoặc nếu anh ta không?

Chỉnh sửa : Thú vị đầu vào tất cả các vòng, cảm ơn. Một vài điều có thể được lượm lặt:

Một vài định nghĩa nổi lên. Bỏ qua các định nghĩa quá cục bộ (đã xác định các tác giả hoặc người quen của họ là siêu lập trình viên), tôi thích một vài định nghĩa:

  1. Định nghĩa của Thorbjørn : một người làm tương đương với một nhóm tốt liên tục trong một thời gian dài.

  2. Electron miễn phí, được liên kết từ câu trả lời của Henry . Một người rất năng suất, có khả năng đặc biệt. Giải thích là một đọc tốt.

    Một Electron miễn phí có thể làm bất cứ điều gì khi nói đến mã. Họ có thể viết một ứng dụng hoàn chỉnh từ đầu, học một ngôn ngữ vào cuối tuần và quan trọng nhất là họ có thể đi sâu vào một đống mã spaghetti khổng lồ, hiểu ý nghĩa của nó và thực sự làm cho nó hoạt động. Bạn có thể xây dựng toàn bộ doanh nghiệp xung quanh một Electron miễn phí. Họ thật tốt.

    Đối lập với định nghĩa cuối cùng, là điểm liên quan đến James về huyền thoại của lập trình viên thiên tài ( video ). Ý tưởng tương tự được thể hiện như lập trình vô ngã trong bình luận của rwong. Họ đưa ra những ý kiến ​​trái ngược nhau về việc nên tối ưu hóa cho một lập trình viên độc đáo như vậy hay cho một nhóm.

Các định nghĩa này chắc chắn là khác nhau, vì vậy tôi sẽ đánh giá cao nếu bạn có đầu vào là tốt hơn. Hoặc thêm của riêng bạn nếu bạn muốn tất nhiên, mặc dù nó sẽ giúp để nói tại sao nó khác với những người đó.


3
Vâng, và tên của anh ấy là John Carmack .
Gary Willoughby

1
Tôi có một danh sách 4 Electron miễn phí trên một mảnh giấy nhỏ bị khóa trong hình vẽ trên bàn của tôi.
Henry

Nếu 'siêu lập trình viên' == 'lập trình viên thiên tài' click_this google.com/events/io/2009/simes/MythGeniusProgrammer.html
James

Xem phản hồi của Jeff về lập trình vô ngã .
rwong

Tôi chỉ muốn thêm một ý nghĩ từ cuốn sách Tháng huyền thoại, en.wikipedia.org/wiki/The_Mythical_Man-Month , một bài viết nghiên cứu đã được trích dẫn chỉ ra một lập trình viên tuyệt vời hơn nhiều lần so với một người ổn. Tôi không nhớ lại tất cả các chi tiết nhưng rõ ràng có rất nhiều giá trị ở một người có thể sản xuất trong một đội, đơn hàng lớn hơn những người khác.
Travis

Câu trả lời:


17

Tôi sẽ xem xét thuật ngữ "siêu lập trình viên" chỉ dành cho những người có thể làm công việc thường đòi hỏi một đội ngũ lập trình viên giỏi và thực hiện nó một cách nhất quán trong một thời gian dài.

Điều này đi cả để viết mã chất lượng cao (tài liệu, bài kiểm tra, vv) và giải quyết các vấn đề rất khó đòi hỏi nhiều kiến ​​thức và tài năng để giải quyết.

Nhưng nó đòi hỏi một hiệu suất cao trên tất cả các tài khoản trong một thời gian dài. Đối với những người viết hàng tấn mã không ai có thể hiểu và duy trì, thuật ngữ này không được áp dụng.

Làm thế nào để đối phó? Nếu bạn thực sự một người như vậy thì hãy làm tất cả những gì có thể để cung cấp giàn giáo cần thiết cho người đó vượt trội. Điều này có nghĩa là di chuyển những thứ không liên quan ra khỏi đường đi và cung cấp các tài nguyên mà người đó cần. Xin lưu ý rằng tôi đã thấy rằng những người biểu diễn rất cao có xu hướng khiêm tốn.

Thật không may, rất có thể bạn có một người nghĩ rằng anh ta là một lập trình viên siêu hạng và không. Cách đối phó với những điều đó là theo kinh nghiệm của tôi để làm cho hiệu suất của họ có thể đo lường được. "FindBugs có thể không tìm thấy bất kỳ vấn đề nào", "Tất cả các mã phải có các bài kiểm tra tương ứng với các trường hợp sử dụng", "Đánh giá ngang hàng".

Nếu mã thực sự khó hiểu, hãy xem xét các cuộc họp hàng tuần trong đó lập trình viên siêu cấp giải thích bất kỳ mã nào mà anh ta đã viết từ cuộc họp trước mà bất kỳ ai cũng có thể yêu cầu ẩn danh để giải thích và bất kỳ ai cũng có thể từ chối ẩn danh để chấp nhận mã cơ sở cho nó là không thể nhầm lẫn. Sau đó, ít nhất bạn đã chia sẻ suy nghĩ và cho phép các nhà duy trì trong tương lai phủ quyết một đoạn mã. Điều này cũng sẽ chỉ ra mạnh mẽ cho lập trình viên loại mã nào sẽ kích hoạt anh ta phải làm thêm.

(EDIT: Lý do cho bit ẩn danh, là để tránh việc lập trình viên không quá siêu trả thù những người chống lại anh ta).


2
Điểm tuyệt vời, ngoại trừ đầu vào ẩn danh. Nếu nhóm phải thực sự thống nhất và "siêu lập trình viên" hiểu liệu anh ta có thực sự đo lường được định nghĩa hay không, họ sẽ cần tìm hiểu điểm mạnh, điểm yếu của nhau để cùng nhau làm nên thành công của nhóm và phần mềm và để xây dựng niềm tin. Đó là vấn đề mở ra sự chỉ trích của người khác (như được thực hiện ở một mức độ nhất định ở đây) để một người tìm và sửa những truyện ngắn của họ như một siêu lập trình viên.
Huperniketes

@Huper, ẩn danh là để tránh điều này bắt đầu cá nhân ngay từ đầu. Nếu bạn tin rằng bạn là siêu nhân, bạn có thể không chịu quá nhiều chỉ trích (hoặc câu hỏi này sẽ không được hỏi ngay từ đầu).

2
@Thor, nó đã mang tính cá nhân khi bạn đối phó với những gì ai đó tin về mình. Sự ẩn danh làm cho niềm tin khó khăn hơn rất nhiều để phát triển. Các thành viên trong nhóm phải tin tưởng rằng họ có thể trung thực, rằng những lời chỉ trích được hoan nghênh và những ý kiến ​​quan trọng được đưa ra ngoài trời.
Huperniketes

Một siêu lập trình viên sẽ thấy việc giải thích mã dễ dàng hơn hay khó khăn hơn cho một lập trình viên cơ sở? Nếu khoảng cách là giải thích lớn có thể khó khăn. Có phải vậy không?
Muhammad Alkarouri

1
@Muhammad, cho rằng định nghĩa của tôi là một siêu lập trình viên viết mã sạch, có thể duy trì được với tài liệu tốt, điều mà ngay cả một lập trình viên cơ sở cũng có thể hiểu được (ngoại trừ các thuật toán rất phức tạp ít cần thiết trong Java do những thứ có sẵn trong thời gian chạy, vì vậy tôi không xem xét chúng). Tôi sẽ nghĩ rằng nó sẽ dễ dàng như vậy, nhưng có thể mất nhiều thời gian hơn, để giải thích cho một lập trình viên cơ sở.

5

Một siêu lập trình là bất kỳ người nào có thể tạo mã nhanh hơn trình biên dịch tăng tốc, mạnh hơn hàm đệ quy và có thể nhảy qua các ngăn xếp FIFO trong một ràng buộc duy nhất.

Cách bạn đối phó với một người trong nhóm của bạn tin rằng anh ta là một siêu lập trình là bằng cách phơi bày cho anh ta điểm yếu duy nhất của anh ta - ánh sáng mặt trời.


5
@Chetan: Ngăn xếp FIFO là gì?
rwong

3
@Chetan: đây là một câu trả lời không có ích. Có lẽ bạn đã không làm việc với các lập trình viên rất tuyệt vời, bạn bắt đầu tự hỏi liệu bạn có xứng đáng không.
JBRWilkinson

Một siêu lập trình viên nên sống trong đám mây và cung cấp API công khai cho Ngôn ngữ truy vấn tâm trí của anh ta .
rwong

@rwong ngăn xếp nhập trước xuất trước, còn được gọi là hàng đợi.
thay thế

1
@mathepic: nếu bạn có thể gọi một hàng đợi một ngăn xếp, điều đó có nghĩa là LIFO và FIFO giống nhau không? (theo cách diễn giải Lincoln)
rwong

3

Yêu cầu người đó viết một chương của chính anh ta theo phong cách Coders at Work . Gửi nó cho một nhà xuất bản. Nếu nó bị từ chối, thì người đó không phải là một lập trình viên siêu hạng.


Là điều ngược lại trong tuyên bố của bạn là đúng? (Nếu được chấp nhận, bạn có thể cho rằng anh ấy / cô ấy là một lập trình viên siêu hạng không?) Tôi nghĩ điều này có thể sử dụng làm rõ.
thay thế

Tôi đã mất bất kỳ sự tôn trọng nào mà tôi có thể có đối với tác giả của cuốn sách đó ngay khi tôi đọc rằng ông ta từng là "kiến trúc sư của một hệ thống nhắn tin giao dịch dựa trên Java". Oh, tốt, ít nhất anh ấy có ý thức bỏ công việc đó.
Dan Mould

1
@Dan Moulding: Miễn là anh ấy tắt máy và để các lập trình viên mà anh ấy phỏng vấn trong cuốn sách đó thực hiện tất cả các cuộc nói chuyện, tôi không quan tâm đến những gì anh ấy tuyên bố. (Tôi mới mua cuốn sách đó và đang mong chờ được đọc nó. Hy vọng nó tốt như tôi nghĩ). =)
gablin

Ý tưởng là tốt, nhưng các nhà xuất bản có xu hướng chấp nhận các lập trình viên nổi tiếng hơn là các siêu lập trình viên. Chính xác?
Muhammad Alkarouri

@Alkarouri: nếu siêu có ý nghĩa tương tự như trong siêu sao , thì đúng vậy, trở thành một siêu lập trình viên cũng có nghĩa là nổi tiếng.
rwong

2

Có những người có thể tạo ra nhiều sản lượng hơn những người khác.

Có những người có thể sản xuất đầu ra với tỷ lệ lỗi thấp hơn những người khác.

Những người có thể ĐÁNG TIN CẬY sản xuất nhiều sản lượng hơn, với tỷ lệ lỗi thấp hơn bình thường, có thể xứng đáng được gọi là Siêu lập trình viên.

Được biết đến hoặc nghĩ như vậy thường chỉ rõ ràng đối với một người quản lý giác ngộ với lợi ích của tầm nhìn sau.

Ai đó mà họ là một siêu lập trình viên có thể có một cái tôi lớn và nghĩ rằng họ là tốt. Điều đó không làm cho họ tốt.

Thái độ <> Khả năng.


1

Siêu lập trình viên: một người có trí thông minh trên trung bình với sự cống hiến mạnh mẽ cho lập trình. Tôi đang nói về một người dành nhiều thời gian để lập trình, không dễ dàng bỏ cuộc và quyết tâm giải quyết một vấn đề cụ thể. Người này hiếm khi đi ngủ nếu có vấn đề / lỗi đang chờ xử lý. Siêu lập trình viết mã hiệu quả, nhanh chóng và đáng tin cậy. Siêu lập trình viên có kiến ​​thức sâu rộng và chuyên sâu về ít nhất một ngôn ngữ lập trình (và công nghệ), rất khéo léo trong một vài ngôn ngữ khác và có thể nhanh chóng học bất cứ điều gì khác cần thiết.


0

Bạn đã bắt gặp một siêu lập trình viên? Những gì xác định anh ấy hoặc cô ấy như vậy

Từ các chương trình / dự án đã tạo , mã nguồn của nó, nghiên cứu đã thực hiện.

tin rằng anh ấy là một lập trình viên siêu hạng

Như bạn nói anh ấy tin điều đó, điều này rất khó khiến anh ấy không tin điều đó. Suy nghĩ tồi tệ nhất là người đó đã dừng lại để trở thành lập trình viên giỏi hơn bởi vì anh ta nghĩ rằng tất cả đã sẵn sàng là siêu, và anh ta ngăn chặn sự tiến hóa của anh ta. Điều gì tồi tệ hơn thế trong lập trình. Dù sao, bạn luôn có thể yêu cầu bằng chứng ... và hỏi anh ấy / cô ấy so sánh anh ấy với ai để đưa ra giả định rằng anh ấy / cô ấy là siê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.