บทความนี้มีลิงค์พันธมิตร ดู การเปิดเผยข้อมูลในเครือ ของฉันสำหรับข้อมูลเพิ่มเติม
วิธีที่ดีที่สุดในการทำให้การเขียนโปรแกรมดีขึ้นคือการเขียนโปรแกรมทั้งหมด ใช่ไหม
ไม่เชิง. แต่ยังใช่ คุณต้องฝึกฝนบ่อยๆ แต่การปฏิบัติทั้งหมดไม่เท่ากัน ถ้าคุณไม่ตั้งใจฝึกฝน มีเป้าหมายที่ชัดเจนและระบบวัดความสำเร็จ คุณจะติดอยู่ที่ที่ราบสูง
แต่การฝึกฝนโดยเจตนามีลักษณะอย่างไรสำหรับการเข้ารหัส?
การปฏิบัติโดยเจตนาคืออะไร?
มีเนื้อหามากมายเกี่ยวกับแนวปฏิบัติโดยเจตนาสำหรับการเขียนโปรแกรม
ฉันได้ผลลัพธ์ 103 ล้านครั้งเมื่อค้นหาคำว่า “การฝึกฝนโดยเจตนาสำหรับโปรแกรมเมอร์” ขณะค้นคว้าบทความนี้
บทความยอดนิยมที่ฉันเห็นให้คำแนะนำที่ดี ซึ่งสรุปได้เป็นห้าขั้นตอนสำคัญ:
- แยกส่วนงานออกเป็นงานย่อยที่มีขนาดเล็กลง
- กำหนดการวัดความสำเร็จสำหรับงานย่อยแต่ละงาน
- ฝึกปฏิบัติภารกิจย่อย
- รับคำติชมและสะท้อนผลงานของคุณ
- ปรับตามความคิดเห็นและทำซ้ำจนกว่าจะบรรลุเป้าหมาย
เป็นสูตรที่ดีและใช้ได้ผลเมื่อทำได้ดี โดยเฉพาะอย่างยิ่งเมื่อคุณมีระบบตอบรับที่ดีอยู่แล้ว
แต่มันไม่ใช่การปฏิบัติโดยเจตนา
แนวทางนี้คือสิ่งที่นักจิตวิทยา K. Anders Ericsson ผู้เขียนหนังสือ Peak: Secrets From The New Science Of Expertise เรียกว่า การฝึกฝนอย่างมีจุดมุ่งหมาย
อย่าเข้าใจฉันผิด: การฝึกฝนอย่างเด็ดเดี่ยวนั้นยอดเยี่ยม เป็นพื้นฐานของการปฏิบัติโดยเจตนา แต่มีความแตกต่างที่สำคัญ ดังที่ Ericsson เขียนไว้ใน Peak :
การฝึกฝนโดยเจตนาคือการฝึกอย่างมีจุดมุ่งหมายที่รู้ว่ากำลังจะไปที่ไหนและจะไปที่นั่นได้อย่างไร
กล่าวอีกนัยหนึ่ง การฝึกปฏิบัติโดยเจตนาคือโปรแกรมการฝึกปฏิบัติที่มีจุดประสงค์ซึ่งออกแบบมาเพื่อนำคุณจากมือใหม่ไปสู่ระดับผู้เชี่ยวชาญ
คำที่ ออกแบบมา นั้นสำคัญมาก
Coders สามารถฝึกปฏิบัติโดยเจตนาได้หรือไม่?
เพื่อให้การฝึกฝนโดยเจตนาเป็นทางเลือก จำเป็นต้องมีสามสิ่ง:
- แนวคิดที่เป็นที่ยอมรับในระดับสากลและมีวัตถุประสงค์ของความเชี่ยวชาญ
- ความเข้าใจถึงวิธีการบรรลุความเชี่ยวชาญ
- ชุดเทคนิคที่ได้รับการพิสูจน์แล้วสำหรับความก้าวหน้าสู่ความเชี่ยวชาญ
นี่คือเหตุผลที่การฝึกฝนโดยเจตนาเป็นเรื่องธรรมดาในกิจกรรมต่างๆ เช่น ดนตรีและกรีฑา มีมาตรฐานที่ชัดเจนสำหรับความชำนาญ โดยเฉพาะอย่างยิ่งในด้านกรีฑา ในกีฬาแต่ละประเภท เช่น การวิ่งและว่ายน้ำ ความชำนาญสามารถวัดได้อย่างเป็นกลางโดยการแสดงอย่างสม่ำเสมอภายใต้เวลาที่กำหนด
โค้ชที่ดีสามารถออกแบบได้ — มีคำนั้นอีกแล้ว — โปรแกรมที่เหมาะสำหรับนักกีฬาแต่ละคนซึ่งรวบรวมความรู้หลายร้อยปีเกี่ยวกับสิ่งที่ใช้ได้ผลและไม่ได้ผล
แล้ววิศวกรรมซอฟต์แวร์ล่ะ?
ไม่มีคำจำกัดความที่เป็นสากลว่าการเป็นผู้เชี่ยวชาญวิศวกรรมซอฟต์แวร์หมายถึงอะไร คุณจะรู้ได้อย่างไรว่าความเชี่ยวชาญนั้นเป็นอย่างไรถ้าคุณไม่สามารถกำหนดมันได้ คุณออกแบบโปรแกรมฝึกหัดสำหรับเป้าหมายที่ไม่ได้กำหนดไว้อย่างไร? คุณไม่สามารถ การฝึกฝนโดยเจตนาในความหมายที่เข้มงวดที่สุดของคำศัพท์นั้นแทบจะเป็นไปไม่ได้เลย
บางทีเราอาจใช้ตาข่ายกว้างเกินไปที่นี่
แทนที่จะมุ่งเน้นไปที่วิศวกรรมซอฟต์แวร์โดยรวม ให้เน้นที่ทักษะส่วนบุคคล
Coder ฝึกทักษะอะไรบ้างอย่างจงใจ?
ทักษะด้านวิศวกรรมซอฟต์แวร์มีสองประเภท:
- ทักษะทางกายภาพ เช่น การพิมพ์แบบสัมผัสและ การควบคุมแป้นพิมพ์ลัด
- ทักษะทางปัญญา เช่น ไวยากรณ์ โครงสร้างข้อมูล อัลกอริธึม สถาปัตยกรรม การดีบัก และการแก้ปัญหา
ทักษะทางกายภาพค่อนข้างดีในการฝึกฝนโดยเจตนา
การพิมพ์แบบสัมผัสเป็นตัวอย่างที่ดี มีเครื่องมือดีๆ มากมายที่ให้คุณฝึกฝนอย่างตั้งใจ รวมถึง TypingClub และ printing.io ในความคิดของฉันผู้เขียนโปรแกรมมืออาชีพทุกคนควรเชี่ยวชาญ
ทักษะทางปัญญานั้นยากขึ้นเล็กน้อยในการฝึกฝนอย่างตั้งใจ
ความท้าทายหลักคือการตอบรับ
เพื่อให้การฝึกปฏิบัติโดยเจตนาในการทำงาน คุณต้องระบุตำแหน่งที่คุณกำลังดิ้นรนและวางแผนปรับปรุง วากยสัมพันธ์อาจเป็นทักษะทางปัญญาที่ง่ายที่สุดในการรับคำติชม เนื่องจากคอมไพเลอร์และล่ามสามารถบอกคุณได้เมื่อมีบางสิ่งที่ไม่ถูกต้องทางวากยสัมพันธ์ เครื่องมือวิเคราะห์แบบคงที่ เช่น linters ก็สามารถช่วยได้เช่นกัน
แต่โค้ดที่ถูกต้องเชิงวากยสัมพันธ์ไม่จำเป็นต้องเป็นโค้ด ที่ดี เสมอไป และการได้รับคำติชมเกี่ยวกับสิ่งต่างๆ เช่น สถาปัตยกรรมซอฟต์แวร์และการแก้ปัญหานั้นยากกว่ามาก
การตรวจสอบโค้ดสามารถช่วยได้ แต่เป้าหมายของการตรวจสอบโค้ดในที่ทำงานคือการจัดส่งผลิตภัณฑ์ให้สำเร็จ ไม่ได้ช่วยให้คุณเชี่ยวชาญในการเขียนโปรแกรม และผู้ตรวจสอบโค้ดก็ไม่ใช่โค้ชที่ดีที่สุดเสมอไป
คุณฝึกเขียนโปรแกรมอย่างตั้งใจอย่างไร?
เน้นที่ทักษะทางกายภาพ วากยสัมพันธ์ และเครื่องมือ
เป้าหมายของการฝึกปฏิบัติโดยเจตนาคือการพัฒนาแบบจำลองทางจิต แบบจำลองทางจิตช่วยแบ่งเบางานบางอย่างที่ หน่วยความจำในการทำงาน ของคุณทำระหว่างการเข้ารหัสลงใน “หน่วยความจำของกล้ามเนื้อ”
การย้ายทักษะต่างๆ เช่น การพิมพ์โดยการสัมผัส แป้นพิมพ์ลัด และคำสั่งไวยากรณ์และคำสั่ง git ที่ใช้กันทั่วไปไปยังหน่วยความจำของกล้ามเนื้อ หมายความว่าคุณจะใช้พลังงานจิตน้อยลงกับมันและพบกับการหยุดชะงักน้อยลงในขณะที่คุณกำลังเขียนโค้ด
ระบุจุดอ่อนของคุณ
ขั้นตอนแรกคือการประเมินประสิทธิภาพปัจจุบันของคุณและระบุสิ่งที่รั้งคุณไว้
มีไวยากรณ์ที่คุณมีปัญหาหรือลำดับของคำสั่ง git ที่คุณต้องค้นหาทุกครั้งที่คุณต้องการหรือไม่? สิ่งเหล่านี้เป็นผู้สมัครที่ดีสำหรับการฝึกฝนโดยเจตนา
วางแผนการปฏิบัติ
ฉันจะไม่โกหก โค้ชหรือที่ปรึกษามีประโยชน์อย่างเหลือเชื่อสำหรับขั้นตอนนี้ อย่างไรก็ตาม ในบางกรณี คุณสามารถสร้างแผนของคุณเองได้
ตัวอย่างเช่น หากคุณมีปัญหากับรายการความเข้าใจใน Python คุณสามารถค้นหา GitHub for
ตัวอย่างของลูปและฝึกเขียนใหม่เป็นความเข้าใจ หากคุณมีเวลาที่ยากลำบากในการจัดการกับข้อขัดแย้งในการผสานใน git คุณสามารถแยก repo และฝึกสร้างข้อขัดแย้งในการผสานและแก้ไขปัญหาได้
แต่แผนการที่ออกแบบมาอย่างดี คำนั้นก็โผล่ขึ้นมาเรื่อยๆ! — ไม่ใช่แค่เรื่องซ้ำซากจำเจ
กำหนดเป้าหมายที่วัดได้
แผนที่ดีจะกำหนดเป้าหมายที่ชัดเจนและวัดผลได้ รวมถึงแบบฝึกหัดที่ออกแบบมาเพื่อหลีกเลี่ยงความเข้าใจผิดทั่วไป
สำหรับงานบางอย่าง เช่น การฝึกใช้แป้นพิมพ์ลัดหรือการจัดโครงสร้างใหม่ for
วนซ้ำเพื่อทำความเข้าใจรายการ คุณสามารถกำหนดเป้าหมายเวลาได้ สร้างสถานการณ์สมมติสำหรับตัวคุณเองและบันทึกระยะเวลาที่คุณต้องทำ จากนั้นทำงานเพื่อลดเวลาของคุณ
คุณยังสามารถตั้งเป้าที่จะลดจำนวนข้อผิดพลาดทางไวยากรณ์ที่คุณทำขณะพิมพ์โค้ด หรือลดจำนวนครั้งในการค้นหาสิ่งต่างๆ ขณะใช้เครื่องมือ
สะท้อนประสิทธิภาพของคุณ
หากคุณต้องการยกระดับขึ้นจริง ๆ ให้บันทึกหน้าจอของคุณในขณะที่คุณฝึกฝนและใช้เวลาทบทวนการบันทึก ให้ความสนใจกับจุดที่คุณชะลอตัวและสิ่งที่คุณต้องดิ้นรน
การฝึกฝนโดยเจตนานั้นยาก ต้องใช้สมาธิและความสนใจเป็นอย่างมาก แต่ถ้าความเชี่ยวชาญคือเป้าหมายของคุณ นั่นเป็นวิธีที่ดีที่สุดที่จะไปถึงที่นั่น
ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการฝึกฝนโดยเจตนาหรือไม่?
ดูหนังสือของ K. Anders Ericsson Peak: Secrets from the New Science of Expertise
สำหรับหัวข้อเฉพาะการเข้ารหัส รวมถึงการรักษาแบบจำลองทางจิตและเทคนิคการฝึกฝนในเชิงลึก ฉันขอแนะนำหนังสือ The Programmer’s Brain ของ Felienne Hermann
ต้องการมากกว่านี้?
อีเมลหนึ่งฉบับทุกวันเสาร์พร้อมเคล็ดลับที่นำไปใช้ได้จริง
เวลาของคุณน้อยกว่า 5 นาทีเสมอ
สมัครสมาชิกตอนนี้
อาร์ตเวิร์คโดย @goodstudio ผ่าน Canva.com