Vossen
hero

บทความ

บทความ ความรู้ทั่วไปต่างๆ ที่น่าสนใจ

จะเป็นโปรแกรมเมอร์ที่ดีกว่าเดิมได้อย่างไร

จะเป็นโปรแกรมเมอร์ที่ดีกว่าเดิมได้อย่างไร เรียบเรียงจากบทความเรื่อง Want to be a Better Developer? Cheat! และ Open Plan Offices Must Die! งานโปรแกรมเมอร์ เป็นทักษะพื้นฐานอย่างหนึ่ง (subset) ของนักพัฒนาซอฟต์แวร์ ทักษะกว้างๆ 3-4 อย่างของคนที่จะเป็นโปรแกรมเมอร์ที่ดี คือ คณิตศาสตร์ ภาษาอังกฤษ ตรรกะ การคิดวิเคราะห์ และความอยากแก้ปัญหา สิ่งเหล่านี้เรียกว่าปัจจัยภายใน ซึ่งต้องใช้เวลาศึกษาและพัฒนาตนเองอยู่ตลอดเวลา ส่วนในโลกของการทำงานจริงนั้นจะมีปัจจัยภายนอกอื่นๆ เข้ามาเกี่ยวข้องด้วย เช่น ความสูงของโต๊ะเก้าอี้ นั่งแล้วสบายตัวไหม? เหมาะกับการนั่งนานๆ หรือเปล่า? คีย์บอร์ด เม้าส์ จอมอนิเตอร์, แสงสว่าง, เสียง … สิ่งเหล่านี้มีผลต่อคุณภาพของโค้ดหมด เพราะคนเราไม่ใช่เครื่องจักร ถ้ามีอะไรทำให้เรารู้สึกอึดอัด งานที่ออกมาก็ย่อมไม่ดีเท่าที่ควร แต่เหนือสิ่งอื่นใด สิ่งสำคัญที่สุดสำหรับวิชาชีพนี้ คือ สมาธิ (concentration) อันหมายถึงความสามารถในการจดจ่ออยู่กับสิ่งใดสิ่งหนึ่งได้โดยไม่วอกแวก เป็นระยะเวลานานพอที่จะแก้ปัญหานั้นๆ ให้สำเร็จได้ […]

จะเป็นโปรแกรมเมอร์ที่ดีกว่าเดิมได้อย่างไร

จะเป็นโปรแกรมเมอร์ที่ดีกว่าเดิมได้อย่างไร

เรียบเรียงจากบทความเรื่อง Want to be a Better Developer? Cheat! และ Open Plan Offices Must Die!
งานโปรแกรมเมอร์ เป็นทักษะพื้นฐานอย่างหนึ่ง (subset) ของนักพัฒนาซอฟต์แวร์ ทักษะกว้างๆ 3-4 อย่างของคนที่จะเป็นโปรแกรมเมอร์ที่ดี คือ คณิตศาสตร์ ภาษาอังกฤษ ตรรกะ การคิดวิเคราะห์ และความอยากแก้ปัญหา
สิ่งเหล่านี้เรียกว่าปัจจัยภายใน ซึ่งต้องใช้เวลาศึกษาและพัฒนาตนเองอยู่ตลอดเวลา ส่วนในโลกของการทำงานจริงนั้นจะมีปัจจัยภายนอกอื่นๆ เข้ามาเกี่ยวข้องด้วย เช่น ความสูงของโต๊ะเก้าอี้ นั่งแล้วสบายตัวไหม? เหมาะกับการนั่งนานๆ หรือเปล่า? คีย์บอร์ด เม้าส์ จอมอนิเตอร์, แสงสว่าง, เสียง … สิ่งเหล่านี้มีผลต่อคุณภาพของโค้ดหมด เพราะคนเราไม่ใช่เครื่องจักร ถ้ามีอะไรทำให้เรารู้สึกอึดอัด งานที่ออกมาก็ย่อมไม่ดีเท่าที่ควร
แต่เหนือสิ่งอื่นใด สิ่งสำคัญที่สุดสำหรับวิชาชีพนี้ คือ สมาธิ (concentration) อันหมายถึงความสามารถในการจดจ่ออยู่กับสิ่งใดสิ่งหนึ่งได้โดยไม่วอกแวก เป็นระยะเวลานานพอที่จะแก้ปัญหานั้นๆ ให้สำเร็จได้ โปรแกรมเมอร์ทำงานภายใต้สภาวะที่เรียกว่า โฟลว์ (flow) มันคือขั้นตอนการทำความเข้าใจกับปัญหา รวมไปถึงจดจำโครงสร้างของโค้ด ตัวแปร คลาส ออปเจ็คท์ต่างๆ โดยก่อนจะเริ่มเขียนโปรแกรมทุกครั้ง โปรแกรมเมอร์จะต้องหาทางให้ตัวเองเข้าไปอยู่ในโฟลว์นั้นให้ได้ ระยะเวลาที่ใช้อุ่นเครื่องของแต่ละคนอาจไม่เท่ากัน ค่าเฉลี่ยอยู่ที่ประมาณ 15-30 นาที แต่บางครั้งอาจจะหาทางเข้าโฟลว์ไม่ได้เลยก็มี (เช่นในวันที่ฟุ้งซ่านหรือปัญหาชีวิตรุมเร้า) ส่วนระยะเวลาที่อยู่ในโฟลว์ควรนานระดับหนึ่ง เพียงพอที่จะปิดงาน (task) ได้ เนื่องจากพอหลุดโฟลว์แล้วจะต้องเสียเวลาอุ่นเครื่องใหม่อีก ช่วงเวลาที่อยู่ในโฟลว์จะเป็นช่วงเวลาที่มีความสุขที่สุด ประสิทธิภาพการทำงานพุ่งปรี้ด ยิ่งถ้าได้ใช้เครื่องมือที่ชอบ ภาษาที่ชอบ ได้แก้ปัญหาที่อยากแก้ มันสนุกชนิดว่าเอาอะไรมาแลกก็ไม่ยอม แต่เมื่อไหร่ก็ตามที่หลุดโฟลว์ เมื่อนั้นเราจะแก้ปัญหาไม่ได้ ถึงแก้ได้ก็ไม่ใช่วิธีที่ดี ถึงดีก็ไม่ใช่วิธีที่ดีที่สุด

การเข้าถึงโฟลว์เป็นเรื่องยากดังที่ได้กล่าวมาแล้ว แต่การออกจากโฟลว์นั้นเป็นเรื่องง่ายอย่างเหลือเชื่อ มีปัจจัยล้านแปดอย่างที่สามารถดึงเราออกจากโฟลว์ได้ง่ายๆ ไม่ว่าจะเป็นโซเชียลเน็ตเวิร์ค เฟซบุ๊ค ทวิตเตอร์ IM IRC อีเมล เว็บไซต์ โทรศัพท์ เสียงคนคุยกัน เสียงทีวีวิทยุ เสียงอึกทึกครึกโครม ฯลฯ … หากอยากเขียนโปรแกรมให้ออกมาดี มีกฎเหล็กและคำแนะนำบางอย่างที่เราควรรู้ไว้

 

1. ห้ามฟังเพลง มีงานศึกษาวิจัยที่บอกว่าการฟังเพลงทำให้เราไม่สามารถแก้ปัญหายากๆ ได้ ถึงแม้แก้ได้ก็ไม่ใช่วิธีที่ดีที่สุด (optimization) ส่วนตัวผมเอง ลองมาหมดเกือบทุกแนว ไม่ว่าจะเป็น Classic, Piano Sonata, Acoustic Guitar, New Age, Smooth Jazz, เสียงธรรมชาติ เสียงน้ำไหล เสียงนกร้อง (ของตาลุง Dan Gibson) เพลงแนวไหนที่ว่าเหมาะสำหรับเปิดเป็นแบ็คกราวน์เวลาทำงาน ลองหมด … จนปัจจุบันไม่ฟังอะไรเลย ซึ่งผมพบว่าตัวเองทำงานได้ดีที่สุดตอนที่ไม่มีเสียงแปลกปลอมใดๆ เข้าหูเลย ยิ่งเป็นตอนกลางคืน เงียบๆ ประสิทธิภาพยิ่งเต็มเม็ดเต็มหน่วย

 

2. กำจัดสิ่งรบกวนทุกอย่าง ฝรั่งเรียกสิ่งเหล่านี้ว่า distraction อันได้แก่ Facebook, Twitter, MSN, IM, IRC และสารพัดเว็บไซต์ที่จะดึงความสนใจของเรา รวมไปถึงการแจ้งเตือน (notification) อื่นๆ ที่ปรากฎบนหน้าจอ สำหรับอีเมล มีคำแนะว่าให้เช็คเป็นเวลาที่แน่นอน และให้ปิดการตั้งเตือนอีเมลใหม่ ส่วนโทรศัพท์มือถือนั้นให้ปิดเสียง หากสามารถปิดสั่นและเช็คเป็นเวลาได้ก็จะยิ่งดี

 

 

3. ทำงานในห้องเล็กๆ ที่มีประตูปิด เพื่อป้องกันสิ่งรบกวนจากเรื่องที่ไม่เกี่ยวข้องกับงาน ความเงียบควรเป็นสมบัติสาธารณะ แต่ถ้าอยากใส่หูฟังเพื่อฟังเพลง ให้ย้อนกลับไปอ่านข้อ 1 สำหรับทีมที่ใช้ Agile และจำเป็นต้องมีการสื่อสาร ควรมีขนาดไม่เกิน 6-7 คนต่อห้อง และอย่าประชุมบ่อย ยืนสรุปงาน (standup meeting) ตอนเช้าวันละครั้งก็พอ และแต่ละคนต้องมีวินัย ไม่โม้เกินความจำเป็น

 

4. ทำงานเพียงหนึ่งอย่าง อย่าเยอะ มีงานวิจัยบอกว่ามนุษย์ไม่เหมาะทำงานหลายอย่างในช่วงเวลาเดียวกัน (multi-tasking) ดังนั้นจัดความลำดับความสำคัญของงานให้ดี

 

 

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

 

 

6. เขียนโค้ดให้ง่ายเข้าไว้ ภาษาอย่าง Ruby หรือ Python ช่วยให้เราเขียนโค้ดได้สั้นและอ่านง่าย ซึ่งจะช่วยลดบั๊กได้ เมื่อรู้สึกว่าโค้ดเริ่มยาก ให้สำนึกตัวว่าเราอาจมาผิดทาง อาจจะมีวิธีที่ง่ายกว่านี้ อาจจะเป็นเพราะว่าเราจมกับโค้ดมานานเกินไป คงถึงเวลาพักผ่อน ลองไปออกกำลังกายสักหน่อย กลับมาดูโค้ดอีกทีอาจจะงงว่าโค้ดบ้านี่ใครเขียนกันวะ … นี่ มันต้องเขียนแบบนี้สิ

 

 

7. หัดค้นคว้า Google, StackOverflow คือเพื่อนแท้ของเรา ปัญหาที่เราเจอ ล้วนถูกค้นพบมาก่อนเกือบหมดแล้ว

 

8. เขียนเทส ลองไปศึกษา TDD (Test-Driven Development) เพิ่มเติม เทสช่วยชีวิตผู้คนมานักต่อนักแล้ว สำคัญมาก แต่มีรายละเอียดที่ต้องรู้เกี่ยวกับเทสพอสมควร ถ้าไม่อย่างนั้นจะเป็นการทำเทสเทียม ซึ่งไม่เกิดประโยชน์อะไร

9. เลียนแล้วเรียน มีโค้ดตัวอย่างดีๆ อยู่มากมายบน Github การได้เข้าร่วมเป็น contributor กับโครงการ open source จะช่วยพัฒนาทักษะได้อย่างรวดเร็ว

 

ที่มาhttp://blog.elf.in.th

Leave a Comment

Your email address will not be published. Required fields are marked *