จะเป็นนักพัฒนาซอฟต์แวร์/โปรแกรมเมอร์ที่ดีกว่าเดิมได้อย่างไร

จะเป็นนักพัฒนาซอฟต์แวร์/โปรแกรมเมอร์ที่ดีกว่าเดิมได้อย่างไร

 

 

 

 

เรียบเรียงจากบทความเรื่อง 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 จะช่วยพัฒนาทักษะได้อย่างรวดเร็ว

 

ทั้งนี้หากสามารถสนับสนุนปัจจัยภายนอกให้โปรแกรมเมอร์ได้อยู่ในสภาวะที่เหมาะสมก็จะเป็นการดี

  • การใช้จอ 2 จอ จะช่วยเพิ่มประสิทธิภาพการทำงานได้ 15%-30% แต่ถ้าใช้จอเดียว ควรมีขนาด 23 นิ้วขึ้นไป
  • เลือกใช้เม้าส์และคีย์บอร์ดที่ถูกออกแบบมาให้สำหรับนั่งทำงานได้นานๆ เช่น Microsoft Natural Ergonomic 4000 (ไม่ได้ค่าโฆษณา)
  • เลือกความสูงของโต๊ะให้เหมาะสม ขนาดมาตรฐานอยู่ที่ 75 เซนติเมตร ส่วนเก้าอี้ ควรเลือกแบบที่มีพนักพิง และบังคับให้เรานั่งหลังตรง ถ้าเป็น ergonomic chair อย่าง Aeron Chair by Herman Miller ตัวละ 45,000 บาท ได้ก็จะเป็นการดีทีเดียว (ฝัน)

ปล. สถิติตัวเลขและทฤษฎีต่างๆ มีแหล่งอ้างอิง ดูได้จากต้นฉบับภาษาอังกฤษ

 

 

 

 

Credit : http://blog.elf.in.th/2012/how-to-be-a-better-developer.html

 4822
ผู้เข้าชม

myAccount Cloud Accounting โปรแกรมบัญชีออนไลน์สำหรับ SMEs โปรแกรมบัญชีออนไลน์ที่ทำให้การทำบัญชีของคุณ เป็นไปอย่างง่ายดาย สะดวก รวดเร็ว

ข่าวสารล่าสุด

เมื่อวันศุกร์ที่ 22 สิงหาคม 2557 เวลา 13.30-16.00 น. อาจารย์นิลาวรรณ วงศ์ศิลปมรกต อาจารย์ประจำสาขาวิชาวิศวกรรมซอฟต์แวร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยนอร์ท-เชียงใหม่ พร้อมคณะอาจารย์ และ ...
1932 ผู้เข้าชม
หัวหน้าภาควิชาเทคโนโลยีสารสนเทศ วิทยาลัยเทคนิคเชียงใหม่ พร้อมคณะอาจารย์ และ นักศึกษาระดับชั้น ปวช.ปีที่ 1 รวมทั้งสิ้น 73 คน ได้เข้าเยี่ยมชม บริษัท โปรซอฟท์ คอมเทค จำกัด
2533 ผู้เข้าชม
เมื่อวันที่ 4 มิถุนายน 2557 เวลา 14.00 น. Mr. Marc Miller Vice Consul ได้เข้าเยี่ยมชมบริษัท โปรซอฟท์ คอมเทค จำกัด
2038 ผู้เข้าชม

สร้างเว็บไซต์สำเร็จรูปฟรี ร้านค้าออนไลน์