ทักษะการคิดที่จะเป็นโปรแกรมเมอร์ที่ดี [ปิด]


10

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

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

ดังนั้นฉันสงสัยว่ามีทักษะการคิดอื่น ๆ ที่จะเป็นโปรแกรมเมอร์ที่ดีหรือไม่ ฉันได้ติดตาม Q & As ด้านล่างและอ่านหนังสือแนะนำจริง ๆ แต่ฉันไม่สามารถเลือกวิธีการที่ดีจริงๆที่ใช้โดยตรงกับงานเขียนโปรแกรมของฉัน

ผู้อ่านควรเขียนโปรแกรมใดที่ไม่ใช่การเขียนโปรแกรมเพื่อช่วยพัฒนาทักษะการเขียนโปรแกรม / การคิด

/software/44654/skills-and-habits-to-develop-to-be-good-at-programming-im-a-newbie

คำตอบ:


10

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

นี่คือรายการเรื่องรออ่าน (ตามลำดับโดยเฉพาะอย่างยิ่งนอกเหนือจากเป็นลำดับที่พวกเขานึกถึง)

  1. การเขียนโปรแกรม Pearls (Jon Bentley)
  2. การเขียนโปรแกรมเพิ่มเติม Pearls (Jon Bentley)
  3. ศิลปะแห่งการเขียนโปรแกรมคอมพิวเตอร์ (Donald Knuth)
  4. อัลกอริทึมใน C ++ (Robert Sedgewick)
  5. คู่มือการออกแบบอัลกอริทึม (Steven Skiena)
  6. การฝึกเขียนโปรแกรม (Kernighan และ Pike)
  7. องค์ประกอบของการเขียนโปรแกรม (Stepanov)
  8. วิธีแก้ปัญหา (Polya)
  9. โครงสร้างและการตีความโปรแกรมคอมพิวเตอร์ (Abelson and Sussman)

ฉันได้รับมากจากการเขียน Solid Codeเมื่อฉันอ่านในช่วงกลางทศวรรษที่ 90 แต่มันไม่ได้อยู่ในรายชื่อเพราะมันไม่ได้เกี่ยวข้องอย่างมากกับทักษะการคิดเช่นนั้น (เกี่ยวข้องกับการออกแบบ API มากขึ้นเพื่อลดโอกาสในการใช้งานที่ไม่ถูกต้องโดยไม่ตั้งใจ - หรืออย่างน้อยนั่นก็เป็นสิ่งที่ฉันใช้

ฉันยังได้รับมากจากGödel, Escher, Bach (Hofstadter) เป็นวัยรุ่น แต่มันถูกกล่าวถึงแล้วในคำตอบสำหรับคำถามที่คุณชี้ไปแล้ว มันเป็นหนังสือสำหรับอ่านเพื่อความเพลิดเพลินแทนที่จะพัฒนาทักษะด้านวิทยาศาสตร์คอมพิวเตอร์โดยตรง

ผมทำงานที่มีจำนวนมากสวยของโปรแกรมเมอร์ที่มีความสามารถและเกือบจะครอบคลุมพวกเขาเป็นแฟนคลับของไข่มุก Programming แน่นอนว่าฉันต้องการผู้สมัครที่ฉันสัมภาษณ์มากขึ้นอ่านบทที่ 4 ของหนังสือเล่มนั้น


4

ครั้งแรก; สำหรับวินัยใด ๆ จะมีใครบางคนที่ดีกว่านั้นในบางวิธี ไม่ต้องกังวลกับส่วนนั้น

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

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


2

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

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


0

มีหนังสือที่ไม่ใช่การเขียนโปรแกรมสองเล่มที่ฉันคิดว่าสำคัญ

ข้อแรกคือ "เลดี้หรือเสือ" โดย Raymond Smullyan นี่คือชุดของปริศนาตรรกะที่ยอดเยี่ยมที่แอบรวมถึงการจัดเรียงของทฤษฎีออโตมาตะ สิ่งที่ดี

ข้อที่สองคือ "Godel, Escher, Bach: Eternal Golden Braid" โดยดักลาสฮอฟสตาดเตอร์ซึ่งทำให้คุณนึกถึงทฤษฎีการวนรอบและทฤษฎีภาษา

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


0

ฉันสนใจที่คุณประเมินทักษะของโปรแกรมเมอร์คนอื่น ๆ

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

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


0

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

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

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