ฉันจะรู้ได้อย่างไรว่าฉันเป็นโปรแกรมเมอร์ที่ดีหรือไม่?


301

เช่นเดียวกับคนส่วนใหญ่ฉันคิดว่าตัวเองเป็นคนที่ค่อนข้างสูงกว่าค่าเฉลี่ยในสาขาของฉัน ฉันได้รับค่าตอบแทนที่ดีฉันได้รับการโปรโมตและฉันไม่เคยมีปัญหาที่แท้จริงในการได้รับการอ้างอิงที่ดีหรือการหางาน

แต่ฉันก็ยังพอที่จะสังเกตเห็นว่าโปรแกรมเมอร์ที่แย่ที่สุดหลายคนที่ฉันเคยทำงานด้วยคิดว่าพวกเขาเก่งที่สุด โปรแกรมเมอร์ที่ไม่ดีซึ่งรายล้อมไปด้วยโปรแกรมเมอร์ที่ไม่ดีคนอื่น ๆ ดูเหมือนจะเป็นคนที่ไม่ชอบตัวเองมากที่สุด

แน่นอนว่าฉันไม่สมบูรณ์แบบ ฉันทำผิดพลาด ฉันพลาดกำหนดส่ง แต่ฉันคิดว่าฉันทำเรื่องจำนวนคนใจดำขยับเหมือนกันกับ "โปรแกรมเมอร์ที่ดีคนอื่น" ปัญหาคือฉันกำหนด "โปรแกรมเมอร์ที่ดีอื่น ๆ " ให้หมายถึง "คนที่เป็นเหมือนฉัน"

ดังนั้นฉันสงสัยว่ามีวิธีใดบ้างที่โปรแกรมเมอร์สามารถทำการประเมินตนเองได้อย่างเหมาะสม? เราจะรู้ได้อย่างไรว่าเราทำงานดีหรือไม่ดี?

หรือหากคำเช่นดีและไม่ดีมีคำจำกัดความที่ไม่ดีนักโปรแกรมเมอร์จะระบุจุดแข็งและจุดอ่อนของตนเองอย่างสุจริตได้อย่างไรเพื่อให้พวกเขาสามารถใช้ประโยชน์จากอดีตและการทำงานเพื่อพัฒนาสิ่งหลัง


ทำไมคุณถึงอยากรู้? ไม่มีใครสามารถกำหนดได้ว่า "ดี" คืออะไร หากคุณทำงานให้เสร็จตามที่คาดหวังและรับรายได้ดีนั่นก็เพียงพอแล้ว
Mert Akcakaya

คำตอบ:


325

โปรแกรมเมอร์ที่ดีเข้าใจว่าพวกเขาต้องเรียนรู้และเติบโตต่อไป พวกเขาพยายามทำอย่างดีที่สุดทุกความพยายามยอมรับความล้มเหลวและเรียนรู้จากพวกเขา

พวกเขาสื่อสารกันเป็นพิเศษ ไม่เพียง แต่พวกเขาจะสามารถอธิบายคำศัพท์ทางเทคนิคที่ซับซ้อนให้กับคนธรรมดา แต่พวกเขาออกไปทำหน้าที่เป็นผู้สนับสนุนปีศาจให้กับความคิดของพวกเขาเองเพื่อให้แน่ใจว่าพวกเขากำลังให้ทางเลือกที่ดีที่สุดแก่ลูกค้าของพวกเขา

โปรแกรมเมอร์ที่ดีที่สุดรู้และยอมรับว่ามีมากกว่าหนึ่งวิธีในการทำสิ่งต่าง ๆ นั่นไม่ใช่ทุกปัญหาคือการทำเล็บและนั่นเป็นเพราะมีวิธีที่ดีกว่าในการทำบางสิ่งมากกว่าวิธีการวางแผนพวกเขาพยายามเรียนรู้เทคนิคใหม่ ๆ อยู่เสมอ เทคโนโลยีและความเข้าใจ

โปรแกรมเมอร์ที่ดีชอบที่จะเขียนโปรแกรมและจะทำเช่นนั้นในเวลาว่างแม้ว่าพวกเขาจะใช้เวลาเขียนโปรแกรมมากกว่า 80 ชั่วโมงต่อสัปดาห์

โปรแกรมเมอร์ที่ดีรู้ว่าเขา / เธอไม่ใช่โปรแกรมเมอร์ที่ยอดเยี่ยม โปรแกรมเมอร์ที่ยิ่งใหญ่อย่างแท้จริงไม่มีอยู่จริงมีเพียงคนที่อ้างว่าเก่งและคนที่รู้ว่าพวกเขาไม่เก่ง


5
คุณตอกตะปูลงบนหัว! IMO!

13
และฉันคิดว่าข้อพิสูจน์ทั่วไปก็คือคุณเก่งในสิ่งที่คุณทำเมื่อคุณใส่ใจในสิ่งที่คุณทำ

7
พูดได้ดี. เกี่ยวกับอัตตา / ความอ่อนน้อมถ่อมตนฉันมาที่ MIT AI Lab ในยุค 70 ผู้เข้ารหัสที่ดีที่สุดมีความมั่นใจต่ำต้อย หากคุณคิดว่าคุณกำลังทำสิ่งที่สำคัญคุณอาจผิด แต่ถ้าคุณทำคุณอาจผิด
Mike Dunlavey

4
ฉันเห็นด้วยกับย่อหน้าบางส่วน # 2 "ไม่เพียง แต่พวกเขาสามารถอธิบายคำศัพท์ทางเทคนิคที่ซับซ้อนให้กับคนธรรมดา ... " ฉันรู้จักโปรแกรมเมอร์ที่ดี แต่พวกเขาไม่สามารถอธิบายอะไรกับใครก็ตามที่อยู่นอกวง และพวกเขาไม่สามารถเข้าใจสิ่งที่คนธรรมดากำลังพยายามพูด พวกเขาทั้งสองมองหน้ากันด้วยดวงตา "กวางอยู่ในไฟ" ฉันจะบอกว่าพวกเขาสื่อสารกันเป็นพิเศษ สำหรับจุดที่เหลือของคุณฉันจะสรุปพวกเขาโดยบอกว่าโปรแกรมเมอร์ที่ดีนั้นถ่อมตนและเต็มใจที่จะแบ่งปันความรู้ของเขา / เธอในลักษณะที่ดีที่สุดที่เขา / เธอรู้
IAbstract

101
"และจะทำเช่นนั้นในเวลาว่างแม้ว่าจะใช้เวลาในการเขียนโปรแกรมมากกว่า 80 ชั่วโมงต่อสัปดาห์" กำจัดข้อความที่งี่เง่าออกไปและฉันก็เห็นด้วยกับที่เหลือทั้งหมด 'โปรแกรมเมอร์ที่ดี' อย่างแท้จริงตระหนักว่าเมื่อทำงาน 80+ ชั่วโมงต่อสัปดาห์ในการทำสิ่งอื่นนอกเหนือจากการเขียนโปรแกรม (ในเวลาว่าง) เป็นสิ่งจำเป็นสำหรับสุขภาพร่างกายและจิตใจและประสิทธิภาพในการทำงาน

91

พอลเกรแฮมชี้ให้เห็นอย่างชัดเจนในตัวละครนักแสดงคุณไม่สามารถทำได้ มีเพียงเพื่อนร่วมงานของคุณเท่านั้นที่สามารถบอกคุณได้


4
คำตอบนี้ดีกว่าคำตอบที่ได้รับการยอมรับอย่างมาก ...

125
เพื่อนร่วมงานของคุณไม่สามารถบอกได้ว่าคุณมีความสามารถหรือไม่หากพวกเขาไร้ความสามารถ พวกเขาจะคิดว่าคุณมีความคิดเห็นแปลก ๆ และถกเถียงอย่างจริงจังเกี่ยวกับเรื่องที่ไม่เกี่ยวข้อง

2
เห็นด้วย, keysersoze ไม่มีใครสามารถบอกคุณได้และคุณจะไม่มีทางรู้เว้นแต่คุณจะได้เพื่อนร่วมงานใหม่มาหาคุณ ฉันคิดว่ามันไม่คุ้มค่าในระยะยาวที่จะทำงานกับใครที่มีความสามารถ

1
@keysersoze แต่ถ้าฉันไร้ความจริงร่วมงานของฉันอาจจะมีอำนาจและฉันแค่โง่เกินไปที่จะรู้ว่ามัน;)

1
พอลเกรแฮมยังเขียนบทความเกี่ยวกับโปรแกรมเมอร์ยอดเยี่ยมชี้ให้เห็นว่าเขาสูญเสียชื่อที่ยิ่งใหญ่เพราะเขาไม่เคยทำงานกับตัวเลือกที่ชัดเจน (เช่น Richard Stallman, Linus Torvalds, et al.)
David Thornley

59

ฉันพบเสมอว่าเป็นการง่ายที่สุดในการตัดสินการแสดงของคุณด้วยการทำสองสิ่ง

  1. ล้อมรอบตัวเองด้วยโปรแกรมเมอร์ที่ดีคนอื่น ๆ
  2. ดูว่าพวกเขาบ่นเกี่ยวกับรหัสที่คุณเขียนมากแค่ไหน

ปัญหาของหลักสูตรคือการค้นหาโปรแกรมเมอร์ที่ดีและการเป็นโปรแกรมเมอร์ที่ดีนั้นไม่ได้เป็นเพียงการเขียนโปรแกรม คุณต้องสามารถทำงานได้ดีในกลุ่ม แต่ก็ทำงานได้ดีด้วยตัวเอง

ตอนนี้เพื่อออกไปหัวข้อฉันจะพูด Robert A. Heinlein และมุมมองของเขาในเรื่อง:

"[โปรแกรมเมอร์เตะ - ตูด] ควรจะสามารถเปลี่ยนผ้าอ้อมวางแผนการบุกรุกสังหารหมูหมูเรือออกแบบอาคารเขียนโคลงบัญชีดุลสร้างกำแพงตั้งกระดูกปลอบตาย รับออเดอร์สั่งให้ร่วมมือร่วมมือทำตามลำพังแก้สมการวิเคราะห์ปัญหาใหม่ปุ๋ยคอกตั้งโปรแกรมคอมพิวเตอร์ทำอาหารอร่อยต่อสู้อย่างมีประสิทธิภาพและตายอย่างกล้าหาญความเชี่ยวชาญสำหรับแมลง "
- จากสมุดบันทึกของ Lazarus Long


12
ค่อนข้างทำให้ฉันนึกถึงคำพูด: "คนโง่ล้อมรอบตัวเองด้วยคนฉลาดคนฉลาดล้อมรอบตัวเองกับคนฉลาดที่ไม่เห็นด้วยกับพวกเขา"
Sam Hasler

ฉันกล้าที่จะพูดว่านี่เป็นคำพูดที่ดีที่สุดของไฮน์ไลน์

1
ปัญหาคือโปรแกรมเมอร์คนอื่น ๆ อาจจะหรืออาจจะไม่ได้อยู่ในหรือเหนือระดับของคุณ แต่พวกเขาอาจไม่ต้องการดูถูกคุณ ฉันยังไม่ได้อากาศมากในทางของการตอบรับจากสามโปรแกรมเมอร์ผมเคยทำงานกับและน้อยมากจาก 2 คนอื่น ๆ หนึ่งซึ่งผมจะพิจารณา "ดี" ...

4
... แม้ว่าเราจะทำตัวเป็นคนต่อต้านสังคม แต่โปรแกรมเมอร์คนอื่น ๆ อาจป้องกันโค้ดล่วงหน้าโดยเพียงแค่ไม่ให้ข้อเสนอแนะเกี่ยวกับปัญหา ซึ่งจริงๆแล้วอาจมองข้ามรหัสปัญหาจริงเพื่อที่จะไม่สร้างปัญหาสังคม

55

นี่คือเมทริกซ์ความสามารถของโปรแกรมเมอร์สำหรับคุณเท่านั้น: http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm


ฉันอยู่ที่ 3-4 รายการ 90% ของรายการเหล่านั้นและฉันไม่สามารถเขียนรหัสอึได้ ไม่เร็วเกินไปอย่างน้อย

-1 สำหรับรายการช้อปปิ้ง

6
-1 - ความรู้เกี่ยวกับอัลกอริทึมนั้นดี แต่ไม่มีทางที่ทุกอย่างจะถูกเก็บไว้ในหัวของคุณเมื่อมีคนสัมภาษณ์คุณ นั่นคือสิ่งที่ wikipedia, google และ stackoverflow ใช้

1
ยอมรับว่ารายการส่วนใหญ่นั้นไร้ประโยชน์ มันเป็นแหล่งความคิดที่ดีหากคุณกำลังมองหาแบบฝึกหัด แต่ไม่มีประโยชน์เท่าที่ควรเพราะคุณตั้งใจว่าคุณเป็น "โปรแกรมเมอร์ที่ดี" "โปรแกรมเมอร์ที่ดี" เป็นทัศนคติมากกว่ารายการโดยพลการ

2
+1 ในขณะที่ฉันไม่เห็นด้วยกับสิ่งที่กล่าวข้างต้นฉันยังคงคิดว่านี่เป็นรายการที่ดีมาก ขอบคุณสำหรับการโพสต์ เหล่านี้เป็นเกณฑ์ประเภทที่ฉันจะประเมินโปรแกรมเมอร์ที่สมัครงาน และ @macnnicken มันจะไปที่ระดับ 3 เท่านั้น :)
EMP

38

Jeff มีหนึ่งในบล็อกโพสต์ที่ชื่นชอบในหัวข้อนี้ ... ทำไมฉันจึงเป็นโปรแกรมเมอร์ที่ดีที่สุดในโลก

"... ไม่ใช่หน้าที่ของเราที่จะต้องดีกว่าคนอื่น แต่เราต้องดีกว่าเราเมื่อปีที่แล้ว"


3
ฉันชอบคำพูดนั้นดีมาก และมันคือสิ่งที่เกี่ยวกับการเขียนโปรแกรม "จะดีกว่าในสิ่งที่คุณทำและรู้ทุกวัน"

1
ทุก ๆ ปีในช่วง 12 ปีที่ผ่านมาฉันดูย้อนหลังไปที่รหัสที่ฉันเขียนเมื่อปีก่อนและคิดว่ามันน่ากลัวที่สุด บางทีฉันอาจทำสิ่งที่ถูกต้อง! ไม่มีอะไรจะเลวร้ายยิ่งไปกว่าโปรแกรมเมอร์ที่ซบเซา

28

ฉันคิดว่าความจริงที่ว่าคุณกำลังถามคำถามพิสูจน์ให้เห็นว่าคุณไม่ใช่โปรแกรมเมอร์ที่ไม่ดีดังนั้นในความคิดของฉันคุณมีครึ่งทาง :)

โปรแกรมเมอร์ที่ไม่ดีมักคิดว่าพวกเขาเป็นโปรแกรมเมอร์ที่ยอดเยี่ยมในประสบการณ์ของฉัน


คุณมีประสบการณ์มากแค่ไหน

1
ประสบการณ์ของฉันเห็นด้วยกับประสบการณ์ของคุณซึ่งเป็นสาเหตุที่ทำให้ฉันกังวลเมื่อใดก็ตามที่ฉันเริ่มคิดว่าฉันดี
Kristopher Johnson

21

@ คำแถลงของ Nick "โปรแกรมเมอร์ที่ไม่ดีมักคิดว่าพวกเขาเป็นโปรแกรมเมอร์ที่ยอดเยี่ยม ... " อธิบายโดยDunning Kruger Effectซึ่งพูดถึงว่าคนที่รู้เรื่องเล็ก ๆ น้อย ๆ มักจะประมาณว่าพวกเขารู้จริงแค่ไหน

การเป็นคนขี้อายนิดหน่อย ... ยิ่งคุณคิดว่าคุณรู้มากน้อยเท่าไหร่คุณก็ยิ่งทำ ... เว้นแต่ว่าคุณเป็นคนงี่เง่าที่รู้ตัว

ตอบคำถามเดิมแม้ว่าฉันมักจะคิดว่ายิ่งคุณมีอิทธิพลมากขึ้น (ไม่ใช่การควบคุม) เป็นตัวบ่งชี้ที่ดี หากคุณเห็นผู้อื่นติดตามการรอคอยของคุณหรือรับการปฏิบัติของคุณแล้วคุณจะอยู่ในเส้นทางที่ถูกต้อง


เอฟเฟ็กต์ Dunning-Kruger นั้นดูนอบน้อมมาก ฉันชอบที่จะลองและจำไว้เมื่อใดก็ตามที่ฉันรู้สึกดีกับสิ่งที่ฉันทำ!

โปรแกรมเมอร์ที่ดีไม่ถามคำถามแล้วลงคะแนนตอบเพราะพวกเขาไม่ชอบ พวกเขาไม่ทำตัวเหมือนพวกเขารู้ทุกอย่างในหัวข้อใหม่และเมื่อผู้เชี่ยวชาญตอบคำถามพวกเขาพวกเขาจะไม่ลงคะแนนเพราะไม่ใช่คนที่พวกเขาต้องการ

ฉันหวังว่าฉันจะมีเงื่อนงำเกี่ยวกับ DK กลับไปเรียนที่วิทยาลัยเมื่อฉันเป็นตัวอย่างที่ดีของปลายด้านหนึ่งของสเปกตรัม!
DarenW

18

คำตอบที่ได้รับคะแนนโหวตมากที่สุดนั้นน่าวิตกจริงๆ โดยทั่วไปมันบอกว่าคุณไม่มีชีวิตนอกการเขียนโปรแกรม แล้วครอบครัวล่ะ ชุมชน? งานอดิเรก? เรามีอาชีพแบบไหนที่คุณจะต้องหมกมุ่นอยู่กับความหลงใหลเพียงเพื่อจะได้รับการพิจารณาว่า "ดี"? ฉันคิดว่าเราจำเป็นต้องได้รับมุมมองที่นี่


2
ฉันเห็นด้วย. เราควรพยายามเป็นคนดีก่อนที่เราจะเป็นโปรแกรมเมอร์ที่ยอดเยี่ยม

สถานที่ที่ดีในการอ้างถึงโปรแกรมเมอร์ 501 คำ: hanselman.com/blog/…
ChrisFletcher


9

ฉันไม่สมบูรณ์แบบ. ฉันทำผิดพลาด ฉันพลาดกำหนดส่ง แต่ฉันคิดว่าฉันทำเรื่องจำนวนคนใจดำขยับเหมือนกันกับ "โปรแกรมเมอร์ที่ดีคนอื่น"

การตระหนักรู้เพียงอย่างเดียวทำให้คุณเป็นโปรแกรมเมอร์ที่ดีกว่าโปรแกรมเมอร์ที่เสียส่วนใหญ่

โปรแกรมเมอร์ที่เลวร้ายที่สุดจำนวนมากมักคิดว่าพวกเขารู้ทุกอย่างที่ต้องรู้และไม่ทราบถึงข้อ จำกัด ของพวกเขา เป็นผลให้พวกเขาไม่เคยพัฒนาทักษะของพวกเขา


9

ถ้าคุณดูโค้ดของคุณจากหนึ่งปีก่อนและคิดว่า jeez ฉันทำได้ดีกว่านี้มากคุณน่าจะดี :)


ฉันเพิ่งดูรายการ Hello world ของฉันและคิดว่าตอนนี้มันมีประสิทธิภาพมากขึ้นฉันดีหรือไม่? jks jks

9

นี่คือตัวอย่างชีวิตจริงของการเขียนโปรแกรมที่ไม่ดี แน่นอนว่ารหัสที่คล้ายกันนั้นมีอยู่ทั่วสถานที่ที่คัดลอก / วางใน 100 แห่ง Guy ถูกไล่ออก แต่ฉันได้ยินมาว่าเขาได้งานที่ดีอีกครั้ง สนุก:

ก)

if (! TableObject.loadList("sql condition").isEmpty()) {  
    List<TableObject> myList = TableObject.loadList("sql condition");  
    ...  
}

ข)

public static Type getInstance() {  
    if (instance == null) {  
        return new Type();  
    }  
    return instance;  
}

c)

getForeignKeyObjectProperty1() {  
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getProperty1();  
}  

getForeignKeyObjectProperty2() {  
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getProperty2();  
}  

...

getForeignKeyObjectPropertyN() {
    return ForeignKeyObject.loadByPrimaryKey(foreignId).getPropertyN();
}

ง)

public boolean isHasImage() throws SQLException {
    StringBuilder query = new StringBuilder();
    query.append("select user_name");
    query.append(" from user");
    query.append(" where has_image = 1");
    query.append(" and user_name ='"+getUserName()+"' and user_image is not null");
    Connection c = Database.getInstance().getConnection();
    Statement st = c.createStatement();

    try {
        ResultSet rs = st.executeQuery(query.toString());
        if (rs.hasNext()) {
            return true;
        } else {
            return false;
        }
    } finally {
        st.close();
    }
}

หากคุณสร้างรหัสประเภทนี้ให้หยุดการเขียนโปรแกรม หากคุณไม่เห็นอะไรแปลก ๆ ในรหัสนี้ให้หยุดเขียนโปรแกรม ไม่อย่างนั้นคุณก็ไม่ได้แย่ดังนั้นคุณอาจจะทำได้ดี :)

แก้ไข: เพื่อตอบความคิดเห็น: ฉันได้งานก่อนสำเร็จการศึกษาและผู้ชายคนนี้มีประสบการณ์การเขียนโปรแกรมไม่กี่ปี เขาโดนไล่ออกไม่กี่เดือนหลังจากที่ฉันทำงานดังนั้นฉันจึงไม่สามารถสอนใครได้ ตัวอย่างด้านบนมาจากหัวของฉัน - ความสงบสุขของรหัสที่เขาสัมผัสทุกอย่างนั้นมีข้อบกพร่องในรูปแบบที่หลากหลายและมีจินตนาการ สิ่งของส่วนใหญ่เริ่มเล็ดลอดออกมาหลังจากที่เขาไปจาก บริษัท เพราะมี แต่คนอื่นเท่านั้นที่เห็นบางส่วนของรหัส โดยทั่วไปแล้วเขาเป็นคนดีมีความสุขที่ได้พูดคุยกับคนอื่น ๆ แต่เขาจะไม่เป็นโปรแกรมเมอร์ที่ดีเช่นเดียวกับที่ฉันจะไม่เคยเป็นจิตรกรที่ดีหรือนักเขียนหรืออะไรก็ตาม

เพื่อเปรียบเทียบสิ่งนี้กับอีกตัวอย่างหนึ่งคนที่มาแทนที่เขาก็เป็นคนที่อยู่ในระดับต่ำกว่า เขาศึกษาวิทยาลัยมีชื่อเสียงมากขึ้นสำหรับการจัดการแล้วการเขียนโปรแกรม เขาไม่ได้รู้สึกเกินเลยไปในแง่ที่ว่าเขาตั้งโปรแกรมอะไรเพื่อความสนุกหรือจะนั่งที่บ้านและอ่านเกี่ยวกับจาวาหรือการเขียนโปรแกรม แต่เขาก็ทำได้ดี เขาปรับอย่างรวดเร็วและเริ่มผลิตโค้ดที่มีประโยชน์และสามารถบำรุงรักษาได้ บางคนสามารถทำอย่างนั้นคนอื่นไม่สามารถ - แค่ถามทุกวัน wtf


11
ทุกคนสามารถโพสต์รหัสโดยพลการและอ้างว่าคนที่ไม่เข้าใจมันโง่ ฉันจะยืนเป็นเส้นทึบ

20
โปรแกรมเมอร์ที่ดีจะต้องใช้เวลา (อาจจะ 2 นาที) เพื่ออธิบายให้เพื่อนร่วมงานของเขา / เธอทราบว่าเกิดอะไรขึ้นกับรหัสเช่นนี้

4
ตกลงโปรแกรมเมอร์ที่ดีจะได้ชี้ให้เห็นว่าทำไมรหัสนี้ไม่ดีและจะช่วยเพื่อนร่วมงานของเขาให้ดีขึ้นแทนที่จะเยาะเย้ยเขา

7
ฉันหวังว่าผู้ชายคนนั้นจะหางานทำที่เพื่อนร่วมงานของเขาช่วยให้เขาเติบโตมากกว่าที่จะตะครุบเขา
Robert S.

8
@Morph: instanceฟิลด์ไม่เคยกำหนดTypeอินสแตนซ์และยังคงเป็นnull=) อยู่เสมอ
หายไป faktor

8

มีบางสิ่งที่คุณสามารถลองได้เพื่อให้ได้มาตรวัดที่ดีขึ้น

  • เปรียบเทียบความคิดเห็นรหัส ดูว่าใครรีวิวพบปัญหามากขึ้น
  • ถามเมื่อครั้งสุดท้ายที่พวกเขาอ่านหนังสือที่ต่อพ่วงกับหลักสูตรการศึกษาปกติของพวกเขา จากนั้นถามตัวเองในสิ่งเดียวกัน
  • ถามตัวเองว่าใครเป็นคนนำความคิดใหม่ ๆ มาสู่ บริษัท (และทำงานได้ดีแค่ไหน)
  • ที่ผ่านมา (และอย่างน้อยที่สุด) มีการรับรู้ของ บริษัท บางรูปแบบหรือไม่?

(ผมใส่ที่คนสุดท้ายเพราะที่ บริษัท ล่าสุดของฉันหนึ่งโปรแกรมเมอร์ที่ได้รับ "การพัฒนาของปี" เป็นครั้งที่สองในรอบสามปี. หลังจากที่เขาทิ้งเราพบอย่างน้อย 20 TDWTF สมควรโค้ด. เขาพัฒนารหัสได้อย่างรวดเร็วแต่ไม่จำเป็นต้องดี ผู้บริหารไม่ทราบความแตกต่าง)


1
+1 สำหรับ "เปรียบเทียบความเห็นเกี่ยวกับรหัส" ดูเหมือนว่าจะเป็นเรื่องแปลกใหม่และใช้งานได้จริงมาก
j_random_hacker

6

อนุญาตให้นักพัฒนาซอฟต์แวร์รายอื่นที่คุณเคารพทำงานหรือดูรหัสของคุณ

ให้คนอื่นใช้สิ่งที่คุณชอบและดูว่าพวกเขาคิดอย่างไร

- เควินแฟร์ไชลด์


6

คุณเข้าใจสิ่งนี้ได้ไหม

if(rp->p_flag&SSWAP) {
	rp->p_flag =& ~SSWAP;
	aretu(u.u_ssav);
}

:-)


Modded down ??!?!?!?! บางคนไม่รู้ประวัติของพวกเขา :-)
Iain Holder

5
คุณไม่คาดหวังที่จะเข้าใจสิ่งนี้

นี่คือการอ้างอิงถึงบางสิ่งบางอย่าง? ไม่ว่าในกรณีใดถ้าเป็นรหัส C / C ++ คุณอาจหมายถึง "& =" แทนที่จะเป็น "= &" ในบรรทัดที่ 2 (ผมพูดว่า "อาจจะ" เพราะโดยดำเนินงานมาก ~ () ใน C ++ คุณสามารถทำให้การรวบรวมข้างต้น ... แต่ผมค่อนข้างมั่นใจว่านั่นไม่ใช่สิ่งที่คุณต้องการ.)
j_random_hacker

1
@j_random_hacker ฉันสงสัยว่า = & ถูกต้องเนื่องจากรหัสนี้เขียนโดย Dennis Ritchie ดูcm.bell-labs.com/who/dmr/odd.html
ผู้ถือ Iain

1
@IainMH, dmr ก็ยอมรับว่ามันเป็นบั๊กกี้

4

เพียงแค่ความคิดที่ว่าคุณจำเป็นต้องประเมินตนเองเท่านั้นที่จะทำให้คุณเป็นคนที่เหลือ

วิธีหนึ่งที่ฉันตัดสินตัวเองอยู่เสมอคือการฟังสิ่งที่เพื่อนร่วมงานของฉันพูดถึงฉัน เคล็ดลับในการหาคนที่เหมาะสม


4

มันเป็นเรื่องส่วนตัวเสมอที่เป็นโปรแกรมเมอร์ที่ดี ฉันเห็นด้วยกับ Nick ว่าการถามคำถามเป็นขั้นตอนในทิศทางที่ถูกต้อง ฉันคิดว่าความปรารถนาอย่างต่อเนื่องในการเรียนรู้เพิ่มเติมและปรับปรุงคือสิ่งที่ทำให้โปรแกรมเมอร์ดี


4

สำหรับฉันโปรแกรมเมอร์ที่ดีที่สุดไม่เคยหางานทำ พวกเขายืนข้อเสนอสำหรับตำแหน่งใหม่ตามเพียงชื่อเสียง ดังนั้นโปรแกรมเมอร์ที่ดีอาจมีข้อเสนอจากนายจ้างก่อนหน้าเพื่อส่งคืนหากพวกเขาต้องการ หรือโปรแกรมเมอร์ที่ดีจะมีข้อสงสัยจากอดีตเพื่อนร่วมงานเกี่ยวกับการทำงานให้พวกเขาที่ บริษัท ใหม่

ในแง่ของจุดแข็ง / จุดอ่อนคุณอาจรู้อยู่แล้ว ถ้าไม่ใช่ให้ถามคนอาวุโสในทีมของคุณ มันไม่จำเป็นต้องเป็นนักพัฒนาเลย ผู้จัดการโครงการที่ดีรู้จุดแข็ง / จุดอ่อนของโปรแกรมเมอร์ นอกจากนี้คุณสมบัติที่กำหนดโปรแกรมเมอร์ที่ดีไม่ได้ จำกัด เพียงแค่โค้ด การทำความเข้าใจเกี่ยวกับธุรกิจทักษะการสื่อสารการตัดสิน ฯลฯ ล้วน แต่ดำเนินการนอก IDE ของคุณ


2
คุณอาจเป็นโปรแกรมเมอร์ที่ดีและเป็นคนที่น่ากลัว คุณอยากทำงานกับคนที่น่ารักซึ่งอาจจะไม่รู้จักมากนัก แต่ก็ยินดีที่จะเรียนรู้หรือกับกระตุกทั้งหมดที่เป็นโปรแกรมเมอร์ที่ยอดเยี่ยมในทุก ๆ ทาง? ดังนั้นสิ่งที่คุณอธิบายจะทำให้พนักงานดีไม่ใช่โปรแกรมเมอร์ที่ดี ;)

2
ฉันไม่เข้าใจว่าความคิดเห็นนี้มาจากที่ใด คำถามหลักสองข้อที่ฉันพูดถึงคือ 'ฉันจะรู้ได้อย่างไรว่าฉันเป็นโปรแกรมเมอร์ที่ดี?' และ 'ฉันจะรู้จุดแข็ง / จุดอ่อนของฉันได้อย่างไร' ทั้งหมดนี้พูดคุยเกี่ยวกับกระตุกและคนที่น่ากลัวคืออะไร ฉันมีความคิดเห็นเกี่ยวกับสิ่งเหล่านั้น แต่ฉันไม่คิดว่าพวกเขาจะเกี่ยวข้องกับคำตอบของฉัน

2
การได้รับชื่อเสียงมักเป็นเรื่องของการประชาสัมพันธ์และความมั่นใจมากกว่าความสามารถที่แท้จริง
David Thornley

สมมติว่า "ความสามารถ" เป็นความสามารถด้านเทคนิคจากนั้นการเป็นโปรแกรมเมอร์ที่ดีนั้นเป็นมากกว่า ความถนัดด้านเทคนิคเป็นเพียงส่วนหนึ่งของปริศนา

3

ฉันคิดว่านี่เป็นเรื่องเกี่ยวกับการสงสัยว่าคุณจะรู้ได้อย่างไรว่าคุณเป็นคนดี

ฉันคิดว่าน่าเสียดายคำตอบคือมีเพียงคนที่น่าเชื่อถือเท่านั้นที่สามารถบอกคุณได้ ฉันไม่คิดว่ามันเป็นสิ่งที่คุณสามารถกำหนดเองได้อย่างถูกต้อง (อย่างน้อยก็ยากมาก - แต่ฉันคิดว่ามันอาจเป็นไปไม่ได้)


3

ฉันแค่พูดว่า: ถ้าคุณหลงใหล (ฉันหมายถึงหลงใหลจริงๆ) เกี่ยวกับสิ่งที่คุณทำถ้าคุณมีความยืดหยุ่น (ภาษาอื่นเทคโนโลยีใหม่การสร้างโครงการเก่าที่สมบูรณ์ - ลองทำดู!) ถ้าคุณยังคงเรียนรู้ และพัฒนาทักษะของคุณและไม่เคยอย่าคิดว่าคุณดีพอที่จะหยุดแล้วคุณก็เป็นโปรแกรมเมอร์ที่ดี!


3

95% ของโปรแกรมเมอร์ทั้งหมดคิดว่าพวกเขาอยู่ใน 5 อันดับแรกของโปรแกรมเมอร์ส่วนอีก 5% เป็นผู้จัดการ ดังนั้นหากคุณเป็นผู้จัดการคุณอาจไม่ใช่โปรแกรมเมอร์ที่ดีมิฉะนั้นคุณอาจเป็น


... และ 25% รู้ว่าพวกเขาอยู่ในด้านบน 1%;)

3

ฉันคิดว่ามันเป็นเรื่องของสิ่งที่คุณทำกับทักษะการเขียนโปรแกรมของคุณ การเป็นโปรแกรมเมอร์ที่ยอดเยี่ยมนั้นใช้ได้ดี แต่สิ่งที่สำคัญถ้าคุณกำลังเข้ารหัสซอฟต์แวร์ธนาคารทุกวัน (ไม่มีความผิด) มันไม่ได้เพิ่มขึ้น

เพื่อพิสูจน์ตัวเองว่าคุณเป็นโปรแกรมเมอร์ที่ดีลองทำโครงการยาก ๆ ที่น่าสนใจ สิ่งนี้แสดงให้เห็นบางสิ่ง: คุณสนใจที่จะเขียนโปรแกรมด้วยเวลาว่างของคุณเองและเพลิดเพลินไปกับเรื่องนี้อย่างแท้จริง - สิ่งสำคัญคือการเป็นโปรแกรมเมอร์ที่ดี มันแสดงให้เห็นถึงความเก่งกาจในการที่คุณสามารถขยายทักษะของคุณนอกเหนือจากสิ่งที่คุณทำในสภาพแวดล้อมการทำงานของคุณ มันแสดงให้เห็นถึงแรงบันดาลใจและความคิดสร้างสรรค์เช่นกัน: คุณได้กำหนดปัญหาด้วยตัวคุณเองและกำลังดำเนินการเพื่อแก้ไขปัญหา

ทุกแง่มุมเหล่านี้กำหนดโปรแกรมเมอร์ที่ดีให้ฉัน


3

คำตอบของฉันจะไม่ถูกต้องทางการเมือง อย่างไรก็ตามฉันเป็นผู้ก่อตั้ง บริษัท จริงและหน้าที่ของฉันคือจ้างโปรแกรมเมอร์ที่ดีที่สุด

ฉันจะรู้ได้อย่างไรว่าคนไหนจะเป็นโปรแกรมเมอร์ที่ดีหรือเป็นโปรแกรมเมอร์ที่ดีได้?

1 คำ: IQ

IQ ใช้สำหรับการเขียนโปรแกรมเป็นส่วนสูงสำหรับผู้เล่นบาสเก็ตบอล

ฉันจะใช้ทักษะคณิตศาสตร์เป็นตัวบ่งชี้ที่ถูกต้องทางการเมืองมากกว่า ครูวิทยาศาสตร์คอมพิวเตอร์ของฉันบอกฉันว่ามีเกณฑ์หนึ่งที่ทำนายได้อย่างถูกต้องว่าใครจะประสบความสำเร็จในหลักสูตรการเขียนโปรแกรม คะแนนคณิตศาสตร์ของโรงเรียนมัธยม นั่นคือ IQ อย่างมีประสิทธิภาพ

นี่อาจเป็นเรื่องที่น่าประหลาดใจ เราบอกว่าการเขียนโปรแกรมเป็นงานในระดับวิทยาลัย คาดเดาสิ่งที่ฉันไม่สนใจเกี่ยวกับการศึกษาระดับปริญญา ฉันสนใจแค่ 3 อย่างเท่านั้น

  1. ทักษะการเขียนโปรแกรม (ที่สามารถทดสอบได้)
  2. ความถนัด
  3. สามัญสำนึก (ไม่ต่ำเกินไป) ทักษะของผู้คน

น่าเสียดายที่ IQ มีเพียงสิ่งเดียวเท่านั้น ดังนั้นฉันจะทำการทดสอบบางอย่าง

ฉันถามคำถามผู้คน คำถามง่ายๆที่ฉันคาดหวังว่าเด็กนักเรียนชั้นประถมควรจะสามารถตอบได้

ฉันถามคำถามเช่น:

  1. ระยะห่างระหว่างเข็มสั้นและเข็มยาวของนาฬิกาคือ 7:35
  2. ถ้าฉันไปจากจาการ์ต้าถึงเซมารังและต้องการรักษาความเร็ว 60 กม. / ชม. จากนั้นใน 2 ชั่วโมงแรกฉันขับรถ 100km / ชั่วโมง ฉันจะไปได้เร็วแค่ไหนสำหรับการเดินทางที่เหลือเพื่อความเร็วเฉลี่ยของฉันคือ 60km / ชั่วโมง?

ถ้าคุณดูอย่างระมัดระวังคำถามเหล่านั้นไม่จำเป็นต้องใช้ความคิดสร้างสรรค์เลย สามัญสำนึกเท่านั้น เด็กประถมที่มี IQ สามารถตอบคำถามนั้นได้

บัณฑิตวิทยาลัยส่วนใหญ่ไม่สามารถ ทีนี้ลองคิดดูถ้ามีคนไม่สามารถตอบได้ เขาเขียนโปรแกรมได้ไหม ลองคิดดู บ่อยแค่ไหนที่คุณจะต้องระบุสิ่งที่เขาควรทำ?

คุณสามารถถามคำถามเช่น Microsoft ที่ต้องการความคิดสร้างสรรค์ คุณสามารถถามคำถามเกี่ยวกับวิธีชั่งน้ำหนักลูกบอล 8 ลูกในระดับสมดุลเพื่อรู้ว่าลูกไหนที่หนักที่สุด ปัญหาเกี่ยวกับคำถามดังกล่าวคือมันเกี่ยวข้องกับโชค อย่างไรก็ตามบางอันค่อนข้างง่ายมันควรเป็นข้อกำหนดขั้นต่ำ

การได้โปรแกรมเมอร์ที่ยอดเยี่ยมสามารถปรับปรุงขวัญกำลังใจของโปรแกรมเมอร์คนอื่น ๆ การมีโปรแกรมเมอร์ที่ชอบด้วยกฎหมายคนหนึ่งสามารถลดขวัญและกำลังใจของคนอื่นได้

หลังจากที่ผู้คนสามารถตอบคำถามเช่นนั้นได้ง่ายฉันจะทำให้พวกเขาเขียนโค้ด Google jam

โปรแกรมเมอร์ที่ดีสามารถแก้ปัญหา google jam code และสามารถคาดการณ์ได้ว่าปัญหาใดจะง่ายขึ้น


2

imho คุณเป็นโปรแกรมเมอร์ที่ดีถ้า

- คุณมีพื้นหลังทางทฤษฎีเสียง การสร้างล้อใหม่รวมทั้งอัลกอริทึมหรือเฟรมเวิร์กเป็นการเสียเวลาส่วนใหญ่

- คุณสามารถเห็นสิ่งต่าง ๆ และปัญหาจากมุมมองที่เบ้บางครั้ง สิ่งนี้อาจนำคุณไปสู่การแก้ปัญหาที่เป็นนวัตกรรม

- คุณใช้เวลาและความพยายามที่จะมีเครื่องมือที่ดีที่สุดและปรับปรุงทักษะที่ดีที่สุด

- รหัสของคุณง่ายต่อการแก้ไข หากคุณออกแบบโค้ดที่สะอาดหรูหราและเข้าใจได้การดัดแปลงมันจะไม่เจ็บปวด

หากอัตราโค้ด / บั๊กของคุณสูงพอสมควร ฉันรู้ว่านี่อาจดูไม่สำคัญ แต่ฉันรู้ว่านักพัฒนาที่มีความคิดสร้างสรรค์และมีฝีมือจำนวนมากที่กระนั้นก็มีแนวโน้มที่จะทำข้อบกพร่องเล็กน้อย สิ่งนี้บั่นทอนประสิทธิภาพและประโยชน์ของมันอย่างมาก

คนรอบตัวคุณรู้ว่าคุณสามารถช่วยในการตัดสินใจเลือกสิ่งที่จะทำ

- คุณสามารถแก้ปัญหาโดยใช้เครื่องมือต่าง ๆ โปรแกรมเมอร์ที่ไม่ดีใช้เครื่องมือเดียวกัน (ไม่ว่าจะเป็นภาษาหรือเทคโนโลยีหรือสถาปัตยกรรมและอื่น ๆ ) สำหรับปัญหาที่พวกเขาได้รับ

- คุณเรียนรู้ต่อไปคุณอยากรู้อยากเห็น

- คุณมีการเขียนโปรแกรมสนุกหลังจากปีเหล่านี้ทั้งหมด


2

"เซอร์ฉันผ่านมาตั้งแต่อัลฟ่าถึงโอมาฮาแล้วฉันก็บอกคุณว่ายิ่งมีคนรู้น้อยเท่าไรเขาก็ยิ่งมีเสียงดังขึ้นและเงินเดือนที่เขาสั่งก็ยิ่งสูงขึ้น" มาร์คทเวน

... ข้อสรุปของฉันคือโปรแกรมเมอร์ที่ดีสั่งเงินเดือนน้อยและทำเสียงดัง ... :)


2

โปรแกรมเมอร์ที่ดีที่สุด: ทำงานให้สำเร็จด้วยจำนวนงบน้อยที่สุดตรงเวลา


1

รหัสของคุณมีข้อบกพร่องกี่ตัวต่อหนึ่งเมตริก (เช่นข้อบกพร่องต่อบรรทัด) ต้องเพิ่มรหัสของคุณอีกเท่าไรเมื่อต้องเพิ่มคุณสมบัติใหม่ เพื่อนร่วมงานของคุณมีปัญหาในการปรับเปลี่ยนรหัสของคุณหรือไม่

ท้ายที่สุดคำถามจะอยู่ถัดจากคำตอบที่เป็นไปไม่ได้เนื่องจากคำถามของ "รหัสคุณภาพคืออะไร" ยังคงเป็นหัวข้อที่ถกเถียงกันอย่างถึงพริกถึงขิงหลังจากหลายปีที่ผ่านมา


1

ฉันชอบสิ่งที่อดัมวีพูดข้างต้น

นอกจากสิ่งที่คนอื่นพูดแล้วดูที่การบำรุงรักษาและการสนับสนุนประวัติการทำงานของคุณ หากรหัสของคุณมีข้อกำหนดการบำรุงรักษาจำนวนมากและมีการแก้ไขอยู่ตลอดเวลาหรือเปลี่ยนแปลงได้ยากรหัสเหล่านี้อาจเป็นตัวบ่งชี้คุณภาพ แต่สิ่งเหล่านี้อาจเป็นตัวบ่งชี้ความต้องการที่ไม่ดี


1
"แต่สิ่งเหล่านี้อาจเป็นตัวบ่งชี้ความต้องการที่ไม่ดี" ส่วนใหญ่อาจเป็นกรณีของเราที่นี่ ความต้องการที่ไม่ดีทำให้เราเขียนโมดูลใหม่ทั้งหมด

1

มันยากมากที่จะประเมินตนเอง คนที่ไร้ความสามารถมีแนวโน้มที่จะประเมินความสามารถของตัวเองสูงเกินจริง

ตัวชี้วัดที่ดีคือบุคคลอื่นที่คุณให้ความเคารพในฐานะโปรแกรมเมอร์ต้องการทำงานกับ / ด้วยรหัสที่คุณเขียนหรือไม่ มีโอกาสที่จะทำงานร่วมกับคุณโดยตรงหรือรับรหัสที่คุณเขียนมานั้นจะเปิดใช้งานหรือไม่ เห็นด้วยอย่างเสียไม่ได้? หรือกระโดดที่มีโอกาสเรียนรู้จากงานของคุณ? เทคนิคนี้ใช้งานได้ดียิ่งขึ้นถ้าเป็นเพียร์ไม่ใช่ลูกน้องหรือคนที่คิดว่าอาจมีประโยชน์สำหรับพวกเขาจากการทำให้คุณรู้สึกดี


1

หากคุณต้องการค้นหาจริงๆให้ส่งรหัสไปยังเพื่อนของคุณและขอตรวจสอบรหัส (สร้างสรรค์) ในกรณีที่เลวร้ายที่สุดคุณเรียนรู้บางสิ่ง ความจริงที่ว่าคุณมาที่นี่ในไซต์นี้เพื่อค้นหาการรู้แจ้งนั้นทำให้คุณแตกต่างจากคนทั่วไปที่ไม่เคยอาบน้ำมาก่อน (นอกเสียจากว่าคุณจะมาที่นี่เพื่อดูอัตตา Stroking :-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.