อะไรคือสิ่งที่มีประสิทธิภาพที่สุดในการพัฒนาทักษะการเขียนโปรแกรมของคุณ?


876

เมื่อมองกลับไปที่อาชีพและชีวิตของฉันในฐานะโปรแกรมเมอร์ฉันมีวิธีการมากมายที่ฉันพัฒนาทักษะการเขียนโปรแกรมของฉัน - รหัสการอ่าน, การเขียนโค้ด, การอ่านหนังสือ, การฟังพอดแคสต์, การดูหน้าจอและอื่น ๆ

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

ฉันคาดหวังคำตอบที่หลากหลายที่นี่และไม่มีคำตอบ "หนึ่งขนาดที่เหมาะกับทุกคน" - ฉันอยากรู้ว่าอะไรที่ใช้ได้ผลกับคนอื่น


18
ฝึกฝนฝึกฝนฝึกฝน และไม่เคยพอใจกับสิ่งแรกที่อยู่ในใจ
Mark Ransom

2
+1 สำหรับ Mark Ransom ... ความยากลำบากมาถึงเมื่อคุณยังไม่พอใจกับสิ่งที่ครบรอบ 100 ที่นึกถึง!
Stimul8d

5
การไม่เสียเวลาไปกับการเขียนโปรแกรมเว็บไซต์ Stack Exchange ช่วยให้ฉันพัฒนาทักษะการเขียนโปรแกรมอย่างมาก
งาน

3
@ Mark Trapp นี่เป็นวิธีที่ไม่สร้างสรรค์ได้อย่างไร
rightfold

1
@WTP - อ่านคำอธิบาย "คำถามนี้ไม่เหมาะกับรูปแบบคำถาม & คำตอบของเรา" - ในฐานะคนที่ถามคำถามนี้ฉันเห็นด้วย มันถูกถามในเวลาที่ผ่อนคลายมากขึ้น
Oded

คำตอบ:


753

ไม่มีคำสั่งเฉพาะ ...

  • การทำงานกับคนฉลาดกว่าฉันมาก

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

  • เรียนรู้กรอบ / ภาษาอื่น ๆ และดูว่าพวกเขาทำสิ่งต่าง ๆ อย่างไรและเปรียบเทียบสิ่งนั้นกับสิ่งที่ฉันรู้แล้ว

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

  • การเขียนโปรแกรมคู่

  • ไม่เห็นด้วยกับทุกสิ่งที่โจเอลพูด ;)


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

117
ดูว่าคนฉลาดจัดการกับข้อผิดพลาดได้อย่างไร - เมื่อฉันเรียนรู้จากพวกเขามากที่สุด

82
หากนี่คือรายการที่ไม่มีลำดับเฉพาะควรเป็นรายการที่ไม่เรียงลำดับแทนที่จะเป็นรายการที่เรียงลำดับหรือไม่ : P
Jon W

3
ฉันเห็นด้วยกับ mmyers เพียงเพราะคุณไม่เห็นด้วยกับใครบางคนไม่ได้หมายความว่าคุณจะเพิกเฉย ที่จริงแล้วมันตรงกันข้าม - เพื่อที่จะไม่เห็นด้วยกับพวกคุณคุณให้ความสนใจกับพวกเขา
Cristián Romo

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

557

การตัดสินใจที่จะเป็น 'แจ็คของทุกธุรกิจการค้า'

ในช่วงต้น ๆ ของอาชีพของฉันฉันเป็นผู้เชี่ยวชาญที่มีฐานข้อมูลเฉพาะและภาษาโปรแกรม น่าเสียดายที่ฐานข้อมูลเฉพาะนั้นสูญเสีย 'สงครามฐานข้อมูล' และฉันค้นพบว่าตัวเลือกอาชีพของฉันนั้นถูก จำกัด ... หลังจากนั้นฉันก็ตัดสินใจอย่างมีสติว่าฉันจะไม่ปล่อยให้ตัวเองเป็นแบบกล่องอีกครั้ง ดังนั้นฉันจึงศึกษาทุกสิ่งที่ฉันสามารถทำได้: Windows, Unix, C, C ++, Java, C #, Perl, Python, Access, SQL Server, Oracle, Informix, MySQL, ฯลฯ ไม่ว่าเครื่องมือและเทคโนโลยีจะแปลกหรือใหม่ก็ตาม กลายเป็น 'go-to-guy' - "ถามเครกถ้าเขาไม่รู้มันเขาจะได้เรียนรู้" ผลที่ตามมาฉันได้ทำงานในโครงการทุกประเภทตั้งแต่ระบบฝังตัวสำหรับ telemetry สิ่งแวดล้อมไปจนถึงระบบสั่งการและควบคุมเพื่อป้องกันขีปนาวุธ

ปัญหาเดียวที่ฉันเคยมีคือ บริษัท ที่ยืนยันใน pidgeon-holing ฉันเป็นพิเศษเมื่อ speciality ของฉันคือการเป็น Generalist [แก้ไข:ยังเป็นที่รู้จักกันในนามPolymathหรือ Renaissance Man หรือผู้เชี่ยวชาญหลายคน ]

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


224
"แจ็คของการซื้อขายทั้งหมด, ต้นแบบของไม่มี, แต่มักจะดีกว่าต้นแบบของหนึ่ง"
-Adam

9
คำแนะนำที่ดีเลิศโหวตขึ้น "เทคโนโลยีเด็กกำพร้า" ในอดีตของฉันคือ Atari 8 บิตของฉันซึ่งหายไปจาก C64 ฉันถึงข้อสรุปเดียวกัน - เพื่ออ้างถึงไฮน์ไลน์ "ความเชี่ยวชาญสำหรับแมลง"

17
มีการแลกเปลี่ยนกันอยู่เสมอและมีเพียง 86,400 วินาทีในหนึ่งวันคุณจะต้องตัดสินใจว่าคุณต้องการใช้เงินอย่างไร ในกรณีของฉันฉันเลือกที่จะใช้เวลาเพิ่ม (มากกว่าและสูงกว่า 'เวลาทำงาน') เพื่อเรียนรู้สิ่งต่าง ๆ ที่ฉันคิดว่าน่าสนใจหรือกำลังเป็นที่ต้องการในอนาคต คุณจะต้องเลือกเอง
Craig Trader

74
"ความเชี่ยวชาญสำหรับแมลง" - Heinlein
Kelly S. French

31
ตรา "Generalist" ของคุณอยู่ที่ไหน ^^
Arnis Lapsa

459

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

สิ่งนี้เตือนให้ฉันพยายามปรับปรุงตนเองอย่างมีสติและโดยเฉพาะอย่างยิ่งคุณภาพของรหัสที่ฉันเขียน

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

สิ่งที่สำคัญที่สุดที่ฉันเรียนรู้จากแอรอนคือการไม่หยุดเรียน

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

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

ฉันดีใจที่ได้พบกับแอรอน หากไม่มีเขาฉันอาจจะยังคงทำงานที่ บริษัท เก่ากับแก๊งค์เก่าไปไหนมาไหนและคิดถึงตัวเองมากเกินไป


54
ซึ่งมักใช้งานได้ทั้งสองวิธี ฉันเข้ามาในไม่กี่ บริษัท ในขณะนี้ในฐานะ 'แอรอน' และพบว่าเมื่อฉันได้รับ coders อื่นพลังที่พวกเขาเริ่มที่จะให้ฉันวิ่งหาเงินของฉันและสนับสนุนให้ฉันทวีความพยายามของตัวเอง โพสต์ที่ยอดเยี่ยม!

28
+1 สำหรับ "อาโรนก็มักจะพูดคุยเกี่ยวกับวิธีการที่ฉันไม่ควรหยุดอยู่ที่รุ่นที่ทำงานแรก แต่ refactor และปรับแต่งจนรหัสเป็นสง่า"

17
"ไม่หยุดที่เวอร์ชันการทำงานแรก" ??? - คุณควรจะทำงานส่วนที่เหลือให้เสร็จเมื่อไหร่? :)

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

27
ปัญหาคือคนจำนวนมากเกินไปคิดว่าพวกเขาคือ "แอรอน"
cinqoTimo

257

สองสิ่ง:

  1. อ่านรหัสที่เขียนโดยคนอื่น
  2. เขียนเอกสารสำหรับรหัสที่เขียนโดยคนอื่น

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


42
และเป็นหนึ่งในวิธีที่ดีที่สุดที่จะเรียนรู้สิ่งที่ไม่ทำ :)
Avid

9
คุณสามารถดูว่าพวกเขาทำอะไร บางทีพวกเขาอาจทำได้ดีกว่าคุณ?

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

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

จริงอยู่นั่นเป็นงานที่ยากที่สุดของฉันมาเป็นเวลานาน

199

ตียิมอย่างสม่ำเสมอ

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


30
ความจริงที่น่าเศร้าที่คนส่วนใหญ่ไม่ออกกำลังกายหรือยืดเยื้อในทุก ๆ ประเภทเป็นปัญหาใหญ่ในโลกปัจจุบัน
ส่อเสียด

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

1
ใช่ว่าเป็นปัญหาใหญ่ในวันนี้ เราไม่มีเวลาโดยเฉพาะอย่างยิ่งในปากีสถานที่มีเวลาทำงานมากขึ้น
maz3tt

2
+1 เพื่อเป็นการเตือนตัวเองให้ออกกำลังกายมากขึ้น
SingleNegationElimination

ฉันพบว่ากีฬาเป็นแรงผลักดันที่ยอดเยี่ยม - สำหรับฉันมันคือบาสเก็ตบอล
Adel

181

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


4
ฉันเห็นด้วย. การทำให้มือของฉันสกปรกในโครงการน่าจะเป็นผู้มีส่วนร่วมที่ใหญ่ที่สุดในการพัฒนาของฉัน ; )
Mike Grace

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

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

172

รับงาน Part-time สอนนักเรียน CS ที่มหาวิทยาลัยของฉัน มันบังคับให้คุณเข้าใจบางสิ่งบางอย่างในระดับที่แตกต่างอย่างสิ้นเชิงเมื่อคุณต้องอธิบายให้คนอื่น


1
ฉันรับรองได้

1
อาจารย์ผู้สอนที่มหาวิทยาลัยบอกฉันเกี่ยวกับการเปิดเมื่อฉันยังเป็นนักเรียน ฉันพักอยู่เกือบปี (นอกเวลา) หลังจากเรียนจบ
Bill the Lizard

29
ดังที่ดักลาสอดัมส์เขียนไว้ใน "Holistic Detective Agency": "วิธีที่ดีที่สุดคือการพยายามอธิบายให้คนอื่นรู้ซึ่งบังคับให้คุณจัดเรียงมันออกมาในใจของคุณและยิ่งช้าและทำให้มัวหมองนักเรียนของคุณ ยิ่งคุณต้องแบ่งสิ่งต่าง ๆ ออกเป็นแนวคิดง่าย ๆ มากขึ้น "

2
จริงเกินไป การสอนการถ่ายภาพทำให้ฉันเป็นช่างภาพที่ดีขึ้น ไม่ได้เป็น coder tho :(
CAD bloke

9
สถานที่ที่น่ากลัว, และ homines dum docent discunt - Seneca

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

  2. เริ่มโครงการสัตว์เลี้ยง สมการส่วนบุคคลของฉันสำหรับโครงการสัตว์เลี้ยงที่ดีคือสิ่งที่คุณมีประสบการณ์กับ + สิ่งที่คุณไม่ = แอพที่คุณจะพบว่ามีประโยชน์ ตัวอย่างเช่น Migratr (โครงการ caffeinated ของฉัน - เปิดอย่างต่อเนื่องในวันหยุดสุดสัปดาห์) เริ่มต้นจาก "ฉันรู้ c # แต่ฉันไม่เคยเขียนโค้ดกับ API เว็บและฉันต้องการย้ายภาพถ่ายทั้งหมดของฉันไปที่ Zooomr" มันเป็นเรื่องง่ายเหมือนกันว่า "ฉันเคยเขียนโปรแกรมกับ API ของเว็บมาก่อน แต่ฉันไม่รู้ C #"

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

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


ฉันเห็นด้วยเท่านั้น "โครงการสัตว์เลี้ยงในภาษาที่ไม่รู้จักมาก่อน" เป็นสิ่งที่ดีฉันสามารถยืนยันได้

คำแนะนำที่ดีมากในการเรียนรู้สิ่งที่คุ้นเคย

ข้อเสนอแนะที่ดี "สิ่งที่คุณมีประสบการณ์กับ + สิ่งที่คุณทำไม่ได้"! ขอบคุณ
sica07

ฉันต้องการสัตว์เลี้ยงตอนนี้
Adel

118

สอนตัวเอง ใช้ชิป 6502 อันเก่าเมื่อฉันอายุ 13 ปี 14? นานมาแล้ว แต่ฉันไม่สามารถคิดอะไรที่จะปรับปรุงการพัฒนาของคุณได้มากกว่าการลงสู่ระดับบิต

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

ชิป 65xx มีการลงทะเบียนสามครั้ง (แอคคิวมูเลเตอร์, X และ Y) และไม่มีคำสั่งระดับเครื่องสำหรับการคูณหรือหาร ฉันจำได้ว่าการเขียนกิจวัตรประจำวันเพื่อคำนวณความเสียหายจากการต่อสู้มองผ่านหนังสือและทันใดนั้นฉันก็รู้ว่าฉันจะต้องเขียนห้องสมุดคณิตศาสตร์ของตัวเอง ใช้เวลาสองสามสัปดาห์ในการขีดเขียน 1 และ 0 ไปทั่วสมุดบันทึกของฉันพยายามหาว่า 'หาร' และ 'ตำแหน่งทศนิยม' หมายถึงอะไรจริงๆ

ฉันเรียน C ++, ปาสคาล,. NET และอื่น ๆ อีกมากมายตั้งแต่นั้นมา ... แต่ไม่มีพวกเขาสอนฉันมากสนใจฉันมากหรือทิ้งฉันไว้กับความรู้สึกของ 'ว้าว' ที่ประกอบบนสินค้าเก่าของฉันทำ .


16
ฉันต้องโหวตให้คุณเพื่อนำความทรงจำที่ยอดเยี่ยมกลับมา! บางทีฉันก็ร้องไห้ขึ้น :) น้อย
ชาร์ลีดอกไม้

3
ฉันยังแปลใจ C / C ++ เป็นภาษาแอสเซมบลี 68K มันวิเศษมากที่ช่วยให้คุณเขียนโค้ดที่มีประสิทธิภาพสำหรับแพลตฟอร์มใด ๆ
Bob Murphy

1
อา 6502 นำความทรงจำที่ดีกลับมา ฉันเรียนรู้มากมายกับผู้ประกอบบนชิปนี้

5
นักเรียนทุกคนของการเขียนโปรแกรมควรมีการสัมผัสในเชิงลึกเพื่อประกอบในช่วงต้นของการศึกษา!

2
ฉันทำสิ่งเดียวกันกับวัยรุ่น มันสอนวิธีการทำงานของคอมพิวเตอร์มากกว่าภาษาระดับสูงอย่างที่เคยทำได้
CAD bloke

110

มองย้อนกลับไปที่สิ่งเก่า ๆ ที่ฉันเขียนและรู้ตัวว่ามันแย่แค่ไหน


ฉันสองที่ ... ฉันแทบจะไม่สามารถอ่านสิ่งเก่าของฉัน
Unkwntech

28
เมื่อฉันข้ามสิ่งเก่า ๆ ของฉันไปแล้วฉันก็แทบจะต้านทานไม่ได้ที่จะลบไฟล์ทั้งหมด บางครั้งไดเรกทอรีทั้งหมด
Christopher Mahan

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

ฉันทำสิ่งนี้แล้ว - ฉันเขียนล่ามสคริปต์ทั้งหมดนี้ใน VB6 ฉันเขียนมันมากกว่าสองปี มันสามารถสร้างหน้าต่างจัดการกับกิจกรรมของพวกเขา ฯลฯ มันใหญ่ขึ้นและควบคุมไม่ได้ที่ฉันจะไม่สามารถเพิ่มมันได้โดยไม่ทำลายทุกอย่าง นั่นคือสิ่งสุดท้ายที่ฉันเขียนก่อนที่ฉันจะเลิกเขียนโปรแกรมสำหรับหนังสือเกี่ยวกับการเขียนโปรแกรม ตอนนี้ผมดีขึ้นมากวุ้ย การอ่านย้อนกลับไปที่โครงการมอนสเตอร์ตัวนั้นทำให้ฉันรู้ว่าฉันมาไกลแค่ไหนแล้ว
Carson Myers

3
@ คริสโตเฟอร์มาฮัน: และในโอกาสที่เลวร้ายจริงๆปริมาณทั้งหมด
Thanatos

93

อ่าน

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

เพียงแค่พัฒนาความอยากอาหารสำหรับการอ่าน


2
บวก frickin ', 1 ฉันเริ่มสงสัยว่าตัวเลือกนี้อยู่ที่ไหน
Thanatos

87

การเขียนโปรแกรม

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


8
หากคุณต้องการได้สิ่งที่ดีกว่าไม่มีอะไรจะดีไปกว่าการทำมัน
Jeff Siver

4
+1 - นี่ทำให้ฉันนึกถึงการค้นหา Forrester : "กุญแจแรกในการเขียนคือ ... การเขียน"
Wizard79

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

1
สิ่งที่ดีที่สุดที่ฉันทำเพื่อปรับปรุงการเขียนโปรแกรมคือการได้งาน
Matt Ellen

1
ฉันเดาว่าคำถามที่บอกเป็นนัย "นอกเหนือจากการเขียนโปรแกรม" ...
UncleZeiv

81

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

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

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


7
และเขาอาจมีทักษะน้อยลงเพราะความรู้บางอย่างของเขาล้าสมัย ..

72

หลายคนแนะนำให้เขียนรหัส ฉันต้องบอกว่าการอ่านรหัสของคนอื่นนั้นมีประโยชน์มากกว่า


11
การผสมผสานของทั้งสองเป็นจริงสิ่งที่ดีที่สุดสำหรับฉัน; การอ่านรหัสของคนอื่นและ refactoring มันเพื่อให้อ่านง่ายขึ้นคือการออกกำลังกายที่ดี

อ่านรหัสที่ดีแน่นอน ... และเข้าใจมัน และแก้ไขหรือเขียนการทดสอบ

4
การอ่านรหัสกำลังรบกวน แต่มันไม่ได้อยู่ใต้ผิวหนังของคุณจนกว่าคุณจะทำจริง ๆ

คุณต้องทำมันเพื่อเรียนรู้มัน มันก็เหมือนกับการขี่จักรยาน ...

70

โปรแกรมคู่กับคนที่มีความหลากหลายและมีความเห็นอกเห็นใจ


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

67

สิ่งพื้นฐานที่ช่วยฉันในฐานะโปรแกรมเมอร์:

  • เรียนรู้ Touch Typing
  • เรียนรู้ที่จะเอาชนะความเขินอายและถามคำถาม

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

และถ้าคุณไม่ถามไม่มีใครจะบอกคุณ


15
Touch Typing เป็นทักษะที่สำคัญที่สุด อาชญากรรมที่ยิ่งใหญ่ที่สุดในการเขียนโปรแกรมได้เกิดขึ้นโดยผู้ที่พยายามบันทึกการกดแป้นบางครั้ง

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

2
ฉันเคยเห็นคนยิงธนูขึ้น 15 ลูกเพื่อกู้คืนคำสั่ง 2 ตัวอักษร ค่อนข้างเศร้า มันเหมือนเด็กบางคนที่ไม่มี IDE ... ไร้ความสามารถอย่างสมบูรณ์

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

2
ตำแหน่งมือไม่สำคัญ - สิ่งสำคัญคือคุณสามารถพิมพ์ได้โดยไม่ต้องมอง ในแล็ปท็อปของฉันฉันจะไม่วางข้อมือ

56

การมีส่วนร่วมในโครงการโอเพ่นซอร์สนั้นเป็นสิ่งที่ยิ่งใหญ่ที่สุดสำหรับฉัน


53

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

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

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


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

48

แผนการเรียนรู้


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

46

การเขียนโค้ดและจำนวนมาก


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

อ่านรหัสและมันมากมาย
Stefan

3
การอ่านและการเขียนโค้ดจำนวนมาก ... โอเพนซอร์สนั้นเป็นประโยชน์อย่างยิ่งสำหรับเรา;)
46411 Oded

45

เรียนรู้การแสดงออกปกติ


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

การแสดงออกปกติไม่เพียงมีประโยชน์ แต่ยังช่วยให้คุณคิดด้วยวิธีที่แตกต่าง
Tikhon Jelvis

+1 เห็นด้วยอย่างสมบูรณ์ ฉันประหลาดใจที่ทำให้คนประหลาดใจบ่อยครั้งที่ทำสิ่งพื้นฐานค่อนข้างใน vi, sed หรือ grep

39

การแข่งขันในการแข่งขัน TopCoder อัลกอริทึม


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

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

2
@hstoerr - ไม่ต้องพูดถึงความจริงที่ว่าคู่แข่งได้รับรางวัลสำหรับการทำให้โค้ดของพวกเขาอ่านยาก (โซลูชันของพวกเขายากที่จะท้าทาย)
Shane Fulmer

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

2
TopCoder เป็นวิธีที่จะแสดงให้คุณเห็นว่าคุณจะดีขึ้นเพียงใด

38

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


36

ออกจากงานสุดท้ายของฉัน


2
ฉันด้วย! (ต้องการตัวอักษรเพิ่มเติม ... )

6
หากคุณจะบอกเราว่าทำไมนี่อาจเป็นคำตอบ ;-)

2
การสนับสนุนโครงการที่ทำด้วยกรอบการทำงานภายใน (อิง EJB2) ไม่ใช่ความคิดของฉันที่สนุก ไม่มีสิ่งใหม่เพียงอึเก่า และมุมมองในงานใหม่ไม่ได้ดีกว่า :(
mihn

เคยทำมาแล้ว
Allbite

+1 ขอให้โชคดีในการลงจอดงานที่ไม่ใช่จุดจบ
Tomek Szpakowicz

29

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

ดูเหมือนว่าฉันมี 2 หรือ 3 ครั้งเมื่อฉันคิดว่ารหัสของฉันสมบูรณ์แบบจากนั้นฉันก็รู้ว่าฉันต้องไปไกล

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

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


29

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

คนเหล่านี้เป็นใคร "พวกเขา" และ "พวกเขา" อยู่ที่ไหน


28

ทักษะการเขียนโค้ดของฉันดีขึ้นมากเมื่อฉันเริ่มสงสัยก่อนนำสิ่งที่ฉันจะบันทึกสิ่งนี้มาใช้

"สิ่ง" ที่นี่ควรมีความละเอียดที่เป็นไปได้ทั้งหมด จากวิธีการผลิตภัณฑ์ทั้งหมด เช่นในระดับวิธีการจะป้องกันการเพิ่มวิธีการใน API ที่ไม่เหมาะสมหรือไม่ชัดเจนก่อนที่จะเขียนจริง และถ้าฉันจำเป็นต้องใช้วิธีการที่ฉันไม่สามารถจัดทำเอกสาร (ง่าย) จริง ๆ มันเป็นสัญญาณว่ามีปัญหาการออกแบบบางแห่ง ...

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


28

เรียนรู้อย่างต่อเนื่องและฝึกฝนสิ่งที่คุณเรียนรู้

โดยวิธีการ:

  1. โครงการส่วนตัว:ตั้งแต่ฉันเริ่มเขียนโปรแกรมฉันได้ทำโครงการส่วนบุคคล ตั้งแต่เกมเล็ก ๆ การประมวลผลภาพซูรินาเมการใช้ข้อกำหนดชนิดไฟล์การใช้โพรโทคอลต่าง ๆ ตั้งแต่เริ่มต้น

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


10
+1 สำหรับการกล่าวถึงหนังสือ ประสบการณ์จำนวนมากไม่คุ้มค่ามากนักหากใช้เวลาทั้งหมดทำสิ่งที่ผิด
mbillard

27

นี่เป็นลำดับตามลำดับของฉันในการเรียนรู้เทคโนโลยีใหม่ ๆ :

  1. อ่านบล็อกดีๆอย่างสม่ำเสมอ(Atwood, Martin Fowler และอื่น ๆ ) ติดตามข่าวเทคโนโลยีล่าสุดติดตามสิ่งต่าง ๆ เกี่ยวกับเทคโนโลยีใหม่ที่น่าสนใจ ขั้นตอนเหล่านี้จะให้ฉันตัดสินใจว่าฉันพบสิ่งที่น่าสนใจในการสำรวจเพิ่มเติมหรือไม่

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

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

  4. ฉันจะดูว่าฉันสามารถใช้สิ่งที่ทำงาน (เช่นแม้ว่าเราจะไม่ใช้การโค่นล้มในที่ทำงานฉันใช้มันเป็นที่เก็บข้อมูลในพื้นที่ของฉัน แต่ฉันใช้ Ruby สำหรับงานที่อาจจำเจเกินไปและใช้เวลานาน)

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


24

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

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