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