ใช้เวลากับ Programmers.SE หรือ Stack Overflow แทนหนังสือการเขียนโปรแกรมที่ดีสำหรับผู้เริ่มต้นใช่ไหม [ปิด]


44

การใช้เวลา (และการมีส่วนร่วมอย่างแข็งขัน) ใน Programmers.SE และ Stack Overflow ช่วยให้ฉันพัฒนาทักษะการเขียนโปรแกรมของฉันได้ใกล้เคียงกับเวลาที่ใช้ในการอ่านหนังสือเช่น Code Complete 2 (ซึ่งจะเป็นอย่างอื่นในรายการการอ่านของฉัน)

ตกลงอาจเป็นคำตอบสำหรับคำถามนี้สำหรับคนที่เริ่มต้นด้วยการเขียนโปรแกรมอาจจะไม่ตรง แต่ฉันต้องการเพิ่มว่าคำถามนี้ฉันถามในบริบทเมื่อบุคคลคุ้นเคยกับภาษาโปรแกรม แต่ต้องการปรับปรุง ทักษะการเขียนโปรแกรมของเขา ฉันอ่านคำถามนี้ใน SO และหนังสือเล่มนี้ก็ได้รับการแนะนำจากคนอื่น ๆ อีกมากมาย (รวมถึงJeffและJoel )

จะเจาะจงมากขึ้นฉันยังเพิ่มที่แม้ว่าฉันจะเขียนโปรแกรมใน C, Java, Python ฯลฯ แต่ยังฉันไม่พอใจกับทักษะการเขียนโปรแกรมของฉันและอ่านความคิดเห็นของ CC2 ฉันรู้ว่าฉันยังคงต้องปรับปรุงมาก .

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


1
เป็นไปได้ที่ซ้ำกัน / เกี่ยวข้อง: Stack Overflow เป็นวิธีการเรียนรู้สิ่งใหม่

1
มันล้นหลามอย่างแน่นอนสำหรับโปรแกรมเมอร์มือใหม่
surfasb

คำตอบ:


102

ไม่มีก็ไม่ได้เป็นแทน แต่ลงตัวที่สมบูรณ์แบบ ฉันรู้สึกว่าการรวมกันของสองคนนี้มีพลังมาก

ทำไมการบรรยายที่ดีสอนคุณมากกว่าแค่อ่านหนังสือ ปฏิสัมพันธ์และความสามารถในการถามคำถาม

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


+1 สำหรับส่วนเติมเต็มที่สมบูรณ์แบบ ฉันนึกได้แค่ว่าคนแปดคนจะเป็นอย่างไรสำหรับฉันถ้า SE หรือ SO อยู่ใกล้ ๆ พวกเขาเป็นทรัพยากรที่ดี
Michael Riley - AKA Gunny

1
+1 เป็นคำชมที่สมบูรณ์แบบสำหรับความสมบูรณ์แบบ เพียงแค่อ่านคำถาม "โลกแห่งความจริง" และการพยายามตอบ (หรือทำซ้ำคำตอบที่มีอยู่เดิม) เป็นมินิคาตาที่ดีเพื่อเพิ่มทักษะความรู้และสัญชาตญาณ
Dave Newton

หากมีสิ่งใดความสามารถในการแสดงปัญหาและแนวทางแก้ไขในช่องทางที่เข้าใจได้ง่ายและเข้าถึงได้จะช่วยเพิ่มความสามารถของคุณในฐานะนักพัฒนาด้านบนของการพัฒนาทักษะการสื่อสารของคุณ
surfasb

+1 (อีกครั้ง) สำหรับคำชมที่สมบูรณ์แบบ ฉันอ่าน P.SE ทุกวัน ฉันไม่ได้อ่านคำตอบทั้งหมดเสมอไป แต่ฉันอ่านคำถามส่วนใหญ่และคำตอบที่ดีที่สุด มันเป็นวิธีที่ยอดเยี่ยมในการทำให้ตัวเองคิดเกี่ยวกับสิ่งต่าง ๆ ในสนามที่คุณอาจไม่เจอ บางครั้งฉันเห็นบางสิ่งบางอย่างในคำถาม & คำตอบไม่ตรงกับสิ่งที่ฉันทำซึ่งท้ายที่สุดก็มีประโยชน์เช่นกันซึ่งก็ดี
Andy Hunt

12

ฉัน (ปัจจุบัน) เป็นสมาชิกของ StackOverflow เป็นเวลา 1 ปี 10 เดือน ในช่วงเวลานี้ฉันได้กลายเป็นนักเรียนที่มีระเบียบวินัยของศิลปะ: รู้ทันกับสถาปัตยกรรม, รูปแบบ, decoupling, การทดสอบหน่วยและรายการสามารถไป ... แต่สิ่งที่บทบาทเล่นดังนั้น ???

ก่อนอื่นมันตอบคำถามของฉันทันที แต่เมื่อฉันเริ่มสำรวจ SO ฉันก็ค้นพบว่าฉันเป็นโปรแกรมเมอร์ที่แย่มาก ปรารถนาที่จะเป็นช่างฝีมือในงานฝีมือของฉันฉันซื้อหนังสือ ... แต่มันไม่ใช่ C # Unleashed, เรียนรู้การเขียนโปรแกรม C # หรือข้อความเริ่มต้นที่ต่ำกว่ามาตรฐานอื่น ๆที่ฉันต้องการ ฉันซื้อหนังสือประเภทที่เหมาะสมที่พื้นที่ทักษะเป้าหมายที่ฉันค้นพบนั้นไม่เพียงพอ แน่นอนฉันใช้เวลาเพื่อดูว่าผู้เชี่ยวชาญแนะนำอะไร

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

เห็นได้ชัดว่า SO ไม่สามารถแทนที่หนังสือหรือทรัพยากรบนเว็บอื่น ๆ ทั้งหมด (แม้ว่าถ้าฉันสามารถรวม MSDN และ SO เป็นทรัพยากรเนื้อหาเดียว ... ); แทนดังนั้นเติมเต็มทรัพยากรอื่น ๆ เหล่านี้ ครูที่ดีที่สุด แต่ยังคงเป็นประสบการณ์


11

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

การเขียนโปรแกรมเพิ่มเติม การอ่านหนังสือและหน้าเว็บเป็นเรื่องรอง

คุณเรียนรู้ได้ดีที่สุดโดยการทำ


17
ใช่และไม่. การทำมากขึ้นสามารถทำได้โดยไม่ต้องเรียนรู้เพิ่มเติม ฉันสามารถเขียนโปรแกรมในบางภาษาปีแล้วปีเล่าและไม่ได้เรียนรู้สิ่งใหม่ การอ่านและโรงเรียนสอนสิ่งที่คุณอยู่นอก "เขตความสบาย" ของคุณ ไม่เพียงพอสำหรับ downvote แต่ก็ยังไม่ได้เป็นความคิดเห็นที่ดี
WernerCD

1
ความจริงก็คือฉันเขียนโปรแกรมมากโดยไม่เรียนรู้ ดังนั้นฉันจึงสร้างเว็บไซต์ใน PHP โดยไม่ต้องรู้วัตถุหรือใช้เฟรมเวิร์ก คุณต้องก้าวออกจากรหัสและไปและเรียนรู้
Bojan Kogoj

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

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

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

5

การเรียนรู้ต้องการส่วนผสมบางอย่าง:

  1. ผู้เรียน (ซึ่งแน่นอนคุณ)
  2. เวลา (ซึ่งคุณควรจัดการและอุทิศ)
  3. ทรัพยากร (ซึ่งไซต์ SE เป็นเพียงส่วนเล็ก ๆ )

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

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


5

สองสิ่งที่ SO และ P.SE เสนอให้ที่ไม่ได้อ่านหนังสืออื่น ๆ หรือเขียนโค้ดด้วยตัวคุณเอง: การทดสอบและการสอน ถ้าคุณแค่ถามคำถามแบบสุ่มสี่สุ่มห้า

ทำไมไม่คอมไพล์

wall
of
code
100
lines
long

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

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

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


3

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

  1. เขียนโค้ดตามความรู้ปัจจุบัน
  2. ประเมินผล
  3. เรียนรู้จากการประเมินเกี่ยวกับสิ่งที่ต้องทำและสิ่งที่ไม่ควรทำ
  4. ไปที่ 1

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


2
หนังสือ (และบล็อกและอื่น ๆ ) สามารถเปิดเผยแนวคิดที่คุณอาจไม่ได้ทำด้วยตัวเอง แต่คุณเป็นโปรแกรมเมอร์ที่ดีขึ้นโดยการเขียนโค้ด
Annika Backstrom

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

การอ่านจากภายนอกจะเกิดขึ้นใน # 2

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

2

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


1

จำเป็นต้องมีความคิดและการวิเคราะห์ที่สำคัญ

ในและของตัวเองไม่ วิธีเดียวที่จะทำให้แหล่งการเรียนรู้ (หนังสือบล็อกเว็บไซต์ SO ฯลฯ ) คือความเข้าใจวิเคราะห์และรวบรวมซ้ำแล้วซ้ำอีก สิ่งที่ผู้คนเขียนในฟอรัมเช่นนี้ไม่ใช่ข่าวประเสริฐและไม่ควรได้รับการปฏิบัติเช่นนี้ไม่ว่าจะมีการโหวตกี่ครั้งก็ตาม คุณจำเป็นต้องทำการวิเคราะห์ของคุณเองเกี่ยวกับความคิดเห็นที่แสดงให้เห็นว่ามัน:

  1. ความคิดที่ดี
  2. แนวคิดที่เหมาะสมกับสถานการณ์ของคุณ

วิธีที่ดีที่สุดในการปรับปรุง

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


0

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

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