Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

การเรียนรู้เขียนโค้ดเหมือนการเรียนภาษาต่างประเทศ

ฉันรู้ว่ามัน聽起來 странный แต่สิ่งคือมีทรัพยากรมากมายสำหรับการเรียนเขียนโค้ดจนทำให้ง่ายที่จะรู้สึกหลงทางและท่วมท้น แต่การเข้าใกล้การศึกษาเขียนโค้ดของคุณเหมือนว่าคุณกำลังเรียนภาษาอื่นจะให้กรอบงานที่ช่วยเหลือให้คุณปฏิบัติต่อไปได้

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

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

ดูไม่錯? เริ่มต้นด้วยแบบฝึกหัดเล็กๆ ที่สนุก:

เป้าหมายสูงสุดของคุณคืออะไร?

เมื่อคุณเรียนภาษา เป้าหมายไม่ได้เป็นแค่การเรียนรายการคำศัพท์และวลีสุ่มเกือบไม่มีใครพยายามเรียนภาษาเพื่อแค่เรียนคำใหม่ๆ เสมอมีการประยุกต์ใช้ในโลกจริงในใจ คุณต้องการจะทำอะไรที่มีประโยชน์ด้วยมันในที่สุด phảiไม่? คุณอาจมีเป้าหมายปลายทางเฉพาะเจาะจงในใจ อาจจะเป็นการสนทนาอย่างคล่องแคล่วกับใครบางคน การเดินทางในประเทศนั้น หรือการอ่านหนังสือในภาษานั้น

การเรียนเขียนโค้ดควรเป็นเช่นเดียวกัน คุณควรมีเป้าหมายสูงสุดนอกเหนือจากแค่ "เรียนเขียนโค้ด" มันอาจจะเป็นการหางานประจำใหม่ การขายแอปมือถือ หรือการทำงานให้ตัวเอง เป้าหมายนั้นจะให้คุณแรงจูงใจให้เรียนรู้ต่อแม้จะยาก มันจะเป็น True North ของคุณขณะที่คุณนำทางในโลกของการเขียนโปรแกรม

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

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

ตอนนี้ มาเริ่มต้นที่จะเก่งภาษาเขียนโค้ดกัน!

ภาษาแรกเป็นอันยากที่สุด

โฟกัสเรียนรู้แค่อย่างเดียวในแต่ละครั้ง

เหมือนกับที่มีภาษาพูดมากมายในโลก (จริงๆ แล้วมากกว่า 6,000 ภาษา!) — ก็มีภาษาเขียนโปรแกรมมากมายที่คุณสามารถเลือกเรียนได้ หากคุณเพิ่งเริ่มต้น ผมไม่แนะนำให้คุณพยายามเรียน Python, Ruby, JavaScript, React และ Java พร้อมกัน นั่นจะไม่เป็นไปได้ในทางปฏิบัติ คุณไม่ลองเรียนจีน สเปน เยอรมัน และโปรตุเกสพร้อมกันหรอก?

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

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

ตอนนี้คุณเลือกภาษาแรกแล้ว มาเริ่มที่ขั้นตอนแรกในการเดินทางของคุณ:

ระดับมือใหม่ (Beginner level)

Hello, world!

สิ่งแรกที่คุณเรียนพูดในภาษาต่างประเทศคืออะไร? ปกติคือการทักทายพื้นฐานที่สุด วิธีพูด "สวัสดี" ไม่ได้เป็นเรื่องบังเอิญที่การเรียนรู้วิธีแสดงผล "Hello, world!" มักเป็นสิ่งแรกที่คุณเรียนรู้ในภาษาเขียนโปรแกรม

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

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

นี่คือหนึ่งวิธีที่คุณสามารถทดลองได้:

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

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

ระดับกลาง (Intermediate level)

นำชิ้นส่วนมารวมกัน

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

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

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

คุณยังสามารถขอความช่วยเหลือและสนับสนุนจากโปรแกรมเมอร์คนอื่นในฟอรัมออนไลน์อย่าง Stack Overflow, กลุ่ม Facebook, และช่อง Slack มีคนเยอะมากที่ยินดีช่วยคุณแก้บั๊กและชี้ทางที่ถูกต้อง มีชุมชนโลกเต็มไปด้วยคนที่กำลังเรียนรู้เขียนโค้ด!

ช่วงซึม (Hitting the slump)

ตอนนี้ผมต้องบอกข่าวร้ายนิดหน่อย… ที่บางจุดในการเรียนรู้ของคุณ คุณจะรู้สึกว่าคุณพัฒนาอยู่ที่ระดับคงที่ (plateau) ในขณะที่คุณจะไม่อยู่ที่ด้านชันของเส้นโค้งการเรียนรู้แล้ว คุณอาจรู้สึกว่ามีระยะทางอีกมากที่ต้องเดิน ไม่มีปลายทางในสายตา มาจริงใจ มันสucks

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

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

ระดับขั้นสูง (Advanced Level)

"เฮ้ ฉันคิดว่าฉันอาจจะเก่งอยู่แล้วนะ!"

เมื่อเรียนภาษาต่างประเทศ การกลายเป็นผู้เชี่ยวชาญ (proficient) คือจุดหมายปลายทางที่ส่วนใหญ่พยายามไปถึง Proficient หมายความว่าคุณค่อนข้างมั่นใจว่าคุณสามารถแสดงความคิดหรือความรู้สึกในภาษานั้นได้ทุกอย่างที่คุณต้องการ คุณเกือบ fluent แล้วในขั้นนี้!

การถึงระดับ proficient ในภาษาเขียนโค้ดหรือเทคโนโลยีรู้สึกดีจริงๆ แม้คุณอาจยัง掙扎กับ impostor syndrome บ้าง แต่โดยรวมคุณจะรู้สึกมั่นใจมากขึ้นในทักษะและคุณค่าของคุณในฐานะโปรแกรมเมอร์ คุณจะสามารถจัดการกับทุกอย่างที่ลูกค้าหรือหัวหน้าซะได้ คุณรู้ว่าแม้คุณจะไม่รู้อย่างแน่นอนว่าจะทำอย่างไร คุณก็มีเครื่องมือที่จะ research (คือ Google) และหาโซลูชันได้ในเวลา

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

เป้าหมายสูงสุดของคุณคืออะไร? ทิ้งความคิดเห็นด้านล่าง…

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