โปรแกรมเมอร์ทุกคนควรรู้อะไรบ้าง


245

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

พื้นหลังบางส่วน:

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

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

คำตอบ:


636

จะกลืนความภาคภูมิใจและยอมรับความผิดพลาดได้อย่างไร


60
นั่นคือสิ่งที่มนุษย์ทุกคนควรทำโดยไม่คำนึงถึงงานของพวกเขา (... เพศ, ศาสนา, วัฒนธรรม, สถานะทางสังคม ... ), คุณไม่คิดเหรอ? ;)

3
โอ้ใช่. แต่เราโปรแกรมเมอร์ (อย่างน้อยฉัน) มีแนวโน้มที่จะมีความภาคภูมิใจที่ชัดเจนมากขึ้นกว่า :-) มากที่สุด

17
ฉันหวังว่าฉันจะลงคะแนนคุณสองครั้ง

4
ฉันคิดว่านี่เป็นสิ่งหนึ่งที่ฉันเรียนที่มหาวิทยาลัย ในโรงเรียนมัธยมฉันมักจะเป็นเด็กที่ฉลาด ถ้าฉันไม่ได้ไปมหาวิทยาลัยฉันจะคิดว่าฉันฉลาดและมีอัตตาตัวใหญ่ จะไปมหาวิทยาลัยและมีปฏิสัมพันธ์กับผู้คนที่มีทักษะมากกว่าเดิมอย่างแท้จริงจากนั้นฉันก็ช่วยให้ฉันเห็นว่าฉันโง่แค่ไหน
Kibbee

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

309

จะคิดอย่างไรเหมือนผู้ใช้และไม่ชอบโปรแกรมเมอร์เทคนิค geek


2
ฉันมักจะพบว่ามันน่าขันที่สิ่งที่ดูเหมือนว่าพวกเราส่วนใหญ่ในอุตสาหกรรมขาดอาจเป็นหนึ่งในทักษะที่สำคัญที่สุดที่จะมี: ทักษะการสื่อสาร

ไม่เห็นด้วยกับสิ่งนี้อีก นี่ควรเป็น # 1

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

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

3
ผู้ใช้เป็นอย่างดีอาจเป็นโปรแกรมเมอร์ geek techie แต่มีแนวโน้มน้อย techie โปรแกรมเมอร์ geek ที่ยังดำเนินการรหัส หากแอปพลิเคชันมีความหมายและพฤติกรรมที่ละเอียดอ่อนและซับซ้อนมากบุคคลที่เขียนรหัสอาจเป็นเพียงคนเดียวที่สามารถเข้าใจวิธีการใช้แอปพลิเคชัน ...
Reuben

244

ควรขอความช่วยเหลือเมื่อใดและจะไม่ขอความช่วยเหลือเมื่อใด


2
จริงอยู่ เมื่อเร็ว ๆ นี้คำตอบก็โผล่เข้ามาในหัวของฉันเมื่อฉันถามใครบางคน :(
kevindaub

ดังนั้นคำตอบคืออะไร?)

28
ถามลูกยางของคุณก่อน ถ้าเขาไม่สามารถช่วยคุณได้ให้ถามคนอื่น ...
Dean Rather

3
upvoted เพราะเมื่อฉันเริ่มแรกฉันไม่ได้ตระหนักว่าฉันเป็นนักพัฒนาคนอื่น ๆ ที่น่ารำคาญโดยการถามพวกเขาสิ่งที่ง่ายฉันควรคิดออกเองจนกว่าฉันจะมี n00b ทำเพื่อฉัน

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

184

วิธีอ่านรหัสของคนอื่น


102
ภาคผนวก: วิธีการเขียนโค้ดที่คนอื่น ๆ สามารถอ่านได้

42
ภาคผนวก # 2: วิธีการอ่านรหัสของคุณเอง 6 เดือนต่อมา

10
@ นาธานคูป: น่าจะดีกว่า "วิธีเขียนโค้ดเพื่อให้คุณสามารถอ่านได้ด้วยตัวเอง 6 เดือนต่อมา"
Doc Brown

4
เมื่อมันผ่านไป 6 เดือนมันก็กลายเป็นรหัสของคนอื่นไปแล้ว ในแง่ที่ว่าคุณมีวิวัฒนาการมาตั้งแต่เริ่มได้ดีขึ้นและมันอาจจะเป็นคนอื่นที่เขียนมันตั้งแต่แรก
MPelletier

7
ภาคผนวก # 3: วิธีอ่านรหัสของคุณในภายหลัง 6 นาที
mpen

152

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


และการควบคุมการแก้ไขไม่ได้เป็นซอฟแวร์
jrhicks

4
ฉันจะเพิ่มว่ามีความแตกต่างอย่างมีนัยสำคัญเพียงพอระหว่าง SCM แบบรวมศูนย์ (เช่นการโค่นล้ม, CVS) และ SCM แบบกระจาย (เช่น git, mercurial, bazaar) ที่สำคัญในการเรียนรู้สิ่งใดสิ่งหนึ่ง
intuited

128

นี่คือ 10 บิตของฉัน:

  • ทำอย่างไรถึงจะเจียมเนื้อเจียมตัว เราทุกคนอยู่ที่นี่เพื่อเรียนรู้ คุณอาจฉลาดกว่าคนอื่น ๆ แต่ก็มีคนมากมายที่ฉลาดกว่าคุณ
  • วิธีการศึกษา / บริโภคข้อมูล ฉันไม่รู้เกี่ยวกับคุณ แต่ฉันเรียนตลอดไป! หนังสืออินเทอร์เน็ตอะไรก็ตาม!
  • พจนานุกรมคืออะไรและใช้อย่างไรและจะหาคำย่ออย่างไร
  • เครื่องมือพื้นฐานทางการค้าคืออะไรและทำอะไร (IDE, CVS และคณะ)
  • รู้จักจุดจบทั่วไปและสิ่งที่พวกเขาหมายถึง: รูปแบบการออกแบบการใช้งานการทดสอบ (ฮ่า!) กอง ฯลฯ
  • มีความเข้าใจ OOP
  • เป็น "ความสามารถ" อย่างน้อยหนึ่งภาษาไม่มีอะไรน่าอัศจรรย์เพียงรู้วิธีระบุตัวแปรและวิธีการ ฯลฯ จากที่นี่คุณสามารถเรียนรู้ FAST ได้
  • เข้าใจว่าในที่สุดผู้คนใช้ซอฟต์แวร์และต้องการทำให้คนเหล่านั้นมีความสุข

38
นี่จะต้องเป็นโพสต์ฐานแปด
แม้เมี่ยน

10
เกี่ยวกับบิตแรก .... "อย่าอ่อนน้อมถ่อมตนมากเหลือเกิน
แมกนัส

@TheOtherScott จับดีฮ่า ๆ แต่ผมจริงว่า 2 บิต: D;)

3
สำหรับประเด็นที่ 3: www.acronymfinder.com
Jasper Bekkers

1
@ jasper / intuited: เพียงพิมพ์คำย่อลงใน google และมันจะดึงขึ้นหนึ่งหรืออื่น ๆ ... คำตอบคือมักจะเป็นหนึ่งในผลการค้นหา 10 อันดับแรกต่อไป ข้อมูลเพิ่มเติมสามารถรับได้โดยคลิก!
mpen

104

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


4
ตกลงเห็นด้วยกังวลเกี่ยวกับสถานการณ์กรณีการใช้งานที่มีผู้ใช้เพียงไม่กี่คนเท่านั้นที่จะได้พบกับแทนที่จะใช้ฟังก์ชั่นหลักมากขึ้นเป็นกับดักที่พบบ่อยเกินไป! ฉันยังคงเรียนรู้หนึ่งวิธีการนี้ยาก ...
เอียนโรบินสัน

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

4
ฉันรักที่คุณพูดว่า "โปรแกรมเมอร์จำนวนมาก (และคนทั่วไป)" :-)

95

วิธีการพักผ่อน มันเป็นความลับในการเพิ่มผลผลิต

ในที่สุดจิตตานุภาพและคาเฟอีนก็ไม่เพียงพอ การหดตัวคงที่ที่เราทำนั้นสร้างความเสียหายได้มาก

นี่เป็นเรื่องใหญ่


1
คุณหมายถึงอะไรโดยการหดตัว

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

@Egg เขาหมายถึงการหดตัวของกล้ามเนื้อที่ไม่ได้ใช้

2
เมื่อพูดถึงกาแฟและการหดตัวคุณรู้หรือไม่ว่ากาแฟนั้นทำให้หลอดเลือดแดงหดตัวเพื่อส่งเลือดไปเลี้ยงสมอง ที่ทำให้สมองตื่น กาแฟไม่ใช่สิ่งที่ดีเลย tl; dr ดื่มน้ำ
Reno

83

ชนิดข้อมูลและทฤษฎีอัลกอริทึมพื้นฐาน สิ่งต่าง ๆ เช่นสัญลักษณ์ Big O, อาร์เรย์, คิว ฯลฯ


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

3
ทุกวันนี้อัลกอริทึมมาตรฐานถูกนำไปใช้ในไลบรารี / กรอบงาน แต่ฉันยอมรับว่าการคิดแบบคล้ายอัลกอริทึมบางอย่างนั้นมีประโยชน์ แต่ไม่บ่อยนัก

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

3
ตกลงกับ Greg Rogers คุณอาจจำเป็นต้องใช้อัลกอริทึม แต่คุณเข้าใจความซับซ้อนและการแลกเปลี่ยนได้ดีขึ้น เช่น. อัลกอริทึมบางตัวใช้หน่วยความจำเพิ่ม แต่เร็วกว่า

6
คุณจะไม่รู้ว่าจะใช้อันไหนถ้าคุณไม่เข้าใจ อัลกอริทึมมีความสำคัญมาก

60

วิธีการเลือกเครื่องมือที่เหมาะสมสำหรับงานที่ถูกต้องและไม่เข้าร่วมในสงครามโง่ ๆ เกี่ยวกับเครื่องมือการเขียนโปรแกรมที่เขาชื่นชอบ


+1 เพื่อให้คนนี้ไม่ได้อยู่ที่ 42 :)
CharlesB

54

นี่คือ. 02 $ ของฉัน:

  • การเรียนรู้ไม่เคยหยุดนิ่ง ไม่ว่าคุณคิดว่าคุณเก่งแค่ไหนมีคนดีกว่าคุณเสมอและมีบางสิ่งที่คุณสามารถปรับปรุงเกี่ยวกับตัวเองได้เสมอ หากคุณหยุดเรียนรู้คุณจะลดระดับลงอย่างหลีกเลี่ยงไม่ได้ในฐานะโปรแกรมเมอร์ อ่านหนังสือ. อ่านบล็อก พูดคุยกับโปรแกรมเมอร์คนอื่น ๆ
  • พยายามเรียนรู้หลายภาษา อย่างน้อยหนึ่งของพวกเขาเชิงวัตถุ นอกจากนี้คุณควรรู้อะไรเกี่ยวกับเทคโนโลยีต่าง ๆ ที่เกี่ยวข้องกับภาษาที่คุณเรียนรู้ (เช่นถ้าคุณเรียนรู้ Java มันคงจะดีถ้าคุณรู้อะไรเกี่ยวกับ Spring และอื่น ๆ .. )
  • refactoring ไม่ช้าก็เร็วคุณจะต้องมีความรู้นั้น
  • เรียนรู้วิธีจัดการกับรหัสเดิม
  • เขียนการทดสอบหน่วย เรียนรู้เกี่ยวกับ TDD
  • เรียนรู้การทำงานเป็นทีม
  • เขียนโค้ดที่หรูหราและอ่านได้ อย่างที่คำพูดเก่า ๆ พูดว่า: "เขียนโค้ดของคุณราวกับว่าคนที่กำลังจะรักษามันคือฆาตกรต่อเนื่องที่เป็นโรคจิตที่รู้ว่าคุณอยู่ที่ไหน"
  • เรียนรู้วิธีการขี้เกียจและมีระเบียบวินัยในเวลาเดียวกัน โปรแกรมเมอร์ที่ดีต้องมีคุณสมบัติทั้งสองอย่างนี้ แปลกอย่างที่เห็นพวกเขาไม่ได้ขัดแย้งกัน แต่อย่างสมบูรณ์

นั่นคือ. 02 ดอลลาร์หรือ. 02 เซนต์ ฮ่า ๆ! :-D

"เขียนรหัสของคุณราวกับว่าบุคคลที่จะรักษามันเป็นฆาตกรต่อเนื่องที่ทำให้รู้ว่าคุณอยู่ที่ไหน" +1
Ben

50

คุณไม่สามารถทดสอบคุณภาพเป็นผลิตภัณฑ์


2
ดังนั้นผู้เชี่ยวชาญ "การประกันคุณภาพ" จึงมีชื่อที่ไม่ถูกต้อง

1
เทคนิคการพูด QA และการทดสอบนั้นไม่เหมือนกันถึงจุดที่คุณไม่แน่ใจว่าองค์กรส่วนใหญ่ฝึกฝนความแตกต่าง
เจฟฟ์ Tall

5
พบล่าสุด - และค้าง: "ผลลัพธ์ของการทดสอบไม่ใช่คุณภาพ แต่เป็นความรู้"
peterchen

richdiet: ผู้เชี่ยวชาญด้าน SQA James Bach เชื่อว่า "A" ใน SQA / QA ควรยืนหยัดเพื่อ "ความช่วยเหลือ" ฉันเห็นด้วยอย่างยิ่งกับความคิดเห็นและคำแถลงของคุณ

44

โปรแกรมเมอร์ทุกคนควรเข้าใจรูปแบบการออกแบบ


13
ฉันต้องการเพิ่มว่าพวกเขาต้องการความเข้าใจด้วยว่าไม่ใช่ทุกสิ่งที่จะถูกทำให้เป็นรองเท้าในรูปแบบการออกแบบที่กำหนด
tloach

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

2
รูปแบบการออกแบบสำหรับ desingers ไม่ใช่ "โปรแกรมเมอร์" - โปรแกรมเมอร์จะต้องรู้ว่าเมื่อเขา / เธอจะกลายเป็น "นักออกแบบ"

10
มีคนสองประเภท .. คนที่สนุกกับการเขียนโค้ดและคนที่ชอบพูดคุยเกี่ยวกับการเข้ารหัส รูปแบบการออกแบบเป็นสิ่งจำเป็นสำหรับกลุ่มที่สอง ..
Bjorn Reppen

1
รูปแบบดังกล่าวเป็นวิธีที่จะเอาชนะข้อ จำกัด ของภาษา โปรแกรมเมอร์ควรเข้าใจพวกเขาเท่านั้นเพราะเขาควรเข้าใจและสามารถเอาชนะจุดอ่อนของภาษาของเขาได้

44

ฉันสายไปนิดหน่อย แต่ฉันจะไปกับความรู้ที่ Edsger Dijkstra วางไว้:

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

หากคุณไม่สามารถเขียนย่อหน้าที่ดีได้โอกาสที่คุณจะไม่สามารถเขียนรหัสที่ดีได้เช่นกัน


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

1
@cheduardo นั่นเป็นเพราะเมื่อคุณคอมไพล์หรือรันโปรแกรมในภาษาส่วนใหญ่คุณจะได้รับการบอกกล่าวเกี่ยวกับข้อผิดพลาดด้านการสะกดคำไวยากรณ์หรือเครื่องหมายวรรคตอนซึ่งสามารถแก้ไขได้อย่างง่ายดาย ไม่ใช่สำหรับข้อผิดพลาดเชิงตรรกะ
Inshallah

@Inshallah: if (BlowUpTheSystem = 1)จนกว่าคุณจะทำบางสิ่งบางอย่างเช่น ได้รับจากการทดสอบหน่วยที่เหมาะสมคุณมีแนวโน้มที่จะประหยัดเวลาเท่านั้น แต่เวลานั้นสำคัญมาก
intuited

2
เห็นด้วย .. อืม ... ลบส่วน "ภาษาแม่" พวกเราบางคน (น่าเสียดาย?) สื่อสารได้ดีขึ้น / ชัดเจนขึ้นในภาษาที่ไม่ใช่เจ้าของภาษาของเรา

39

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

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

และเมื่อเวลาผ่านไปพยายามที่จะเข้าใจและซาบซึ้งกับบรรพบุรุษมรดกและสามัญชนของเทคโนโลยีต่าง ๆ ซึ่งจะช่วยให้คุณมีมุมมอง ตระหนักว่าตัวอย่างเช่นในขณะที่ต้นไม้วิวัฒนาการมีการแตกแขนงและเต็มไปด้วยจุดจบ แต่เทคโนโลยีเมื่อเวลาผ่านไปมีแนวโน้มที่จะบรรจบกันรอบ ๆ 'การปฏิบัติที่ดีที่สุด' และ 'การประหยัดจากขนาด' ( เช่นสังเกตว่า Mac ไม่ใช่สิ่งที่แตกต่าง PC ภายใต้ประทุนวันนี้ ... )

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


35

วิธีการเขียนโปรแกรมใน C


ฮ่าฮ่า เจฟฟ์อยู่ที่ไหนเมื่อคุณต้องการเขา? ;)
Kevin Fairchild

12
ไม่ต้องพูดถึงภาษาแอสเซมบลี
Ferruccio

12
ไม่ต้องพูดถึง X.
Ali

7
สกรูมัน ... ไบนารี

เจฟฟ์ !!!! ผู้คนกำลังพูดถึงเรื่องไร้สาระในเว็บไซต์ของคุณ: P
Andrei Rinea

35

วันที่คุณหยุดเรียนควรเป็นวันที่คุณไม่ได้เป็นโปรแกรมเมอร์


ถ้าฉันมีความปรารถนาอย่างใดอย่างหนึ่งมันจะเป็นว่าซานต้าเป็นพ่อของฉัน

เพราะซานต้า ...

1
วันที่คุณหยุดเรียนควรเป็นวันที่คุณตาย :) +1 ต่อไป
ShdNx

ดังนั้นจะมีชีวิตตลอดไปคุณจะต้องเรียนรู้อยู่เสมอ? ตอนนี้มีความคิดที่ฉันสามารถรับรอง!
canadiancreed

34

การทดสอบหน่วยและการดีบัก


ครั้งแรกลบความต้องการที่สอง ;-)

4
ไม่เมื่อการทดสอบหน่วยล้มเหลวนั่นต้องแก้จุดบกพร่อง ทั้งสองไปด้วยกัน
Zan Lynx

ไม่สามารถเครียดได้เพียงพอ
fastcodejava

33

มันถูกกล่าวถึงก่อนหน้านี้ แต่ฉันคิดว่ามันสมควรได้รับคำตอบของมันเอง


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

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

9
บางคนเมื่อเผชิญกับปัญหาคิดว่า "ฉันรู้ฉันจะใช้สำนวนปกติ" ตอนนี้พวกเขามีสองปัญหา - "Jamie Zawinski": jwz.livejournal.com , ใน comp.lang.emacs
Bjorn Reppen

การใช้เครื่องมือแก้ไขที่สร้างขึ้นโดยรอบเป็นวิธีที่ดีในการเรียนรู้สิ่งที่น่ารังเกียจ ประสบการณ์ของฉันอยู่กับกลุ่มที่ใช้ส่วนใหญ่เทียบเท่ากับ PCREs มาตรฐานโดยพฤตินัย - แต่ฉันได้รับความประทับใจที่ใช้กฎเดียวกันนี้ในโลกของ emacs
intuited

1
บางคนเมื่อต้องเผชิญกับการแสดงออกปกติคิดว่า“ ฉันรู้ว่าฉันจะพูด Jamie Zawinski” ตอนนี้พวกเขามีปัญหาสองประการ (หนึ่งในนั้นคือพวกเขาอาจไม่รู้ว่าพวกเขากำลังทำอะไรในตอนแรก) .
Donal Fellows

29

ไม่มีใครต้องการใช้ซอฟต์แวร์ พวกเขาต้องการแก้ไขปัญหา


7
เผง เมื่อฉันได้ยินนักพัฒนาที่พยายามอธิบายฐานข้อมูลให้ผู้ใช้ปลายทางเป็นคำตอบสำหรับคำถามของพวกเขาว่าทำไมบางสิ่งไม่สามารถทำได้ฉันก็ประจบประแจง พวกเขาไม่จำเป็นต้องรู้ว่าเราจะทำอย่างไร พวกเขาต้องการให้มันทำงาน และนั่นคือวิธีที่ควรจะเป็น
Kevin Fairchild

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

ไม่สามารถตกลงเพิ่มเติม อย่างไรก็ตามสิ่งนี้ยังใช้กับ API ไม่มีใครต้องการเรียนรู้ API ใหม่เพราะมันตลกดี เราต้องการฟังก์ชันการทำงานของ API ไม่ใช่รหัสที่แสดงถึง
Blub

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

27

Coffee และIntelliSenseเป็นเพื่อนที่ดีที่สุดของคุณตลอดไป


ฉันหวังว่าฉันจะให้มากกว่า 1 upvote นี้!
Dinah

ฉันหวังว่าจะมีกาแฟมากขึ้น !!!! ñ_ñ

ฉันคิดว่าฉันเห็นด้วยกับเรื่องนี้มากกว่าสิ่งอื่นใดใน SO
Unkwntech

ฉันไม่เคยดื่มกาแฟจริงนอกเสียจากว่าฉันจะต้องทำโครงการให้เสร็จภายในเวลา X ชั่วโมงเมื่อ: จำนวนชั่วโมงที่ใช้หมด + X> 8 ต่อวัน
Blub

กาแฟไม่ได้ให้พลังงานใด ๆ แก่คุณ มันบีบบางส่วนจากเงินสำรองภายในของคุณ ไม่ดี / ไม่ดีต่อสุขภาพ
Andrei Rinea

18

วิธีสังเกตวัตถุที่ซับซ้อนขนาดใหญ่และย่อยสลายในวัตถุง่าย ๆ ขนาดเล็กที่ยังคงทำงานเดียวกันเมื่อรวมกันอีกครั้ง


18

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

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


1
นี่เป็นลักษณะทั่วไปเกินไป ลัทธินิยมนิยมบางคนก็ดีเช่นกัน
mafu

18

ที่โปรแกรมเมอร์ไม่รู้จักทุกอย่างและควรพยายามเรียนรู้ภาษา / เทคโนโลยีใหม่ ๆ อยู่เสมอ


16

พื้นฐานของการออกแบบ UI ที่ดีและการสื่อสาร (aka กราฟิก) การออกแบบ

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

หนังสือที่แนะนำคือหนังสือออกแบบที่ไม่ใช่นักออกแบบโดย Robin Williams

นี่คือสิ่งที่Joel Spolsky พูดถึง :

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


1
ฉันจะรองสิ่งนั้นด้วยการพยักหน้าเพิ่มเติมเพื่อ 'ออกแบบสิ่งต่าง ๆ ในชีวิตประจำวัน' amazon.com/Design-Everyday-Things-Donald-Norman/dp/0385267746
Stimul8d

14

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


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

14

การควบคุมเวอร์ชัน และเพื่ออ้างถึงเพื่อนสาวของฉัน: "ฉันไม่ต้องการให้คุณทำอาหาร แต่ฉันต้องการให้คุณชอบ !"


10

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

มีการหลาย คำถาม ที่นี่ที่เกี่ยวข้องกับหัวข้อที่ได้รับผลกระทบจากการนี้


10

ปิดส่วนหัวของฉัน:

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

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

  3. คนที่ให้สเป็คคุณไม่ค่อยรู้ทุกอย่างที่เขาต้องการจนกว่าคุณจะแฮ็กมัน

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

  5. รหัสที่ดีนั้นถูกเขียนขึ้นเพื่อให้คนอ่านอ่านได้มากเท่าที่คอมไพเลอร์ของคุณจะอ่าน

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

  7. เครื่องมือที่ยอดเยี่ยมไม่สามารถสร้างโปรแกรมเมอร์ที่ยอดเยี่ยมได้ แต่เครื่องมือที่ไม่ดีนั้นทำให้เราน่ากลัวอย่างเท่าเทียมกัน

  8. ไม่เคยดูถูกเทคโนโลยี แต่มักจะมองหาทางเลือกที่ดีที่สุด

  9. ยิ่งคุณรู้ภาษามากเท่าไหร่คุณก็จะยิ่งเก่งภาษาที่คุณใช้

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


หมายเลข 10 ทำให้ฉันหัวเราะ หลายครั้งที่ฉันต้องทำงานเกี่ยวกับปัญหาในการทำงาน แต่อยู่บนเตียงเวลา 22.00 น. เท่านั้นซึ่งในที่สุดฉันก็พบคำตอบ!

9

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

สิ่งนี้จะช่วยให้คุณเขียนโปรแกรมgedankenexperimentและบางครั้งคุณอาจพบว่ามีคนกำลังใช้งานบางอย่างที่ดีกว่า! ชอบในทางที่ดีขึ้น

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

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