นักพัฒนาความสัมพันธ์

ทำไมโอเพนซอร์สถึงช่วยพัฒนาทักษะการเขียนโปรแกรมของโปรแกรมเมอร์?

2018-10-03
ความสัมพันธ์นักพัฒนา
th

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

การอ่านโค้ดทำให้คุณดีขึ้น

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

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

เหนือกว่าไวยากรณ์

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

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

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

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

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

โอเพนซอร์สอยู่ทุกที่

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

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

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

โค้ดไม่ดีก็คือไม่ดี ใช่ไหม?

บางคนอาจพูดว่า “โค้ดไม่ดีมีมากกว่าและเห็นได้ชัดกว่าโค้ดดี” sub-reddit หนึ่งทุ่มเทให้กับโค้ดไม่ดี

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

แล้วเราจะเรียนรู้จากโค้ดไม่ดีได้อย่างไร?

ยิ่งคุณอ่านโค้ดไม่ดีมากเท่าไหร่ คุณยิ่งเก่งในการค้นหาโค้ดไม่ดีมากเท่านั้น

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

คุณรู้ได้อย่างไรว่ามันเป็นโค้ดไม่ดี?

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

ทำให้มันกลายเป็นโค้ดดี

ส่ง pull request ที่ทำให้โค้ดดีขึ้น แก้ไขไวยากรณ์ ใช้วิธีที่ดีกว่า เพิ่มคอมเมนต์หรือแก้ไขการเยื้อง: นี่คือวิธีที่ยอดเยี่ยมในการปรับปรุงโค้ด เพิ่มคำอธิบายว่าทำไมคุณแนะนำให้เปลี่ยนโค้ด

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

การตอบแทน

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

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

แหล่งข้อมูล

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

โปรดระบุแหล่งที่มา: ความสัมพันธ์นักพัฒนา »


Similar Posts

Content icon
Content