Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สิ่งที่นักพัฒนาชอบทำผิด

$
0
0

เขียน code โดยไม่ทำการวางแผน

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

แต่การวางแผนหรือคิดมากไปก็ใช่จะเป็นสิ่งที่ดี !!

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

ชอบใช้ solution หรือวิธีการแก้ไขแรกที่ทำได้ หรือ คิดได้

บ่อยครั้งพบว่า วิธีการแก้ไขปัญหาแรก ๆ มักจะเป็นวิธีการชั่วคราว ไม่ดี แต่ทำงานได้ แต่เรามักจะเลือกใช้ ทั้ง ๆ ที่อาจจะมีวิธีการอื่น ๆ อีก ดังนั้น สิ่งที่ควรต้องทำคือ ลองหาวิธีการอื่น ๆ บ้าง เพื่อทำให้เห็นข้อดีและเสีย เพื่อทำให้เข้าใจปัญหา จากนั้นจึงทำให้เราเลือกวิธีการที่ดีกว่าได้
สิ่งที่นักพัฒนาทำนั้น ไม่ใช่หาวิธีการแก้ไขปัญหาเท่านั้น แต่วิธีการเหล่านั้นต้องแก้ไขปัญหาได้ดี มีประสิทธิภาพที่ดี รวมไปถึงง่ายต่อการอ่าน ทำความเข้าใจและดูแลรักษา
ยังไม่พอนะ !! เมื่อต้องมาแก้ไข code ที่ทำไว้แล้ว พบว่า code เหล่านั้นมันไม่ดี มีวิธีการที่ดีกว่า สิ่งที่ทำคือ การพยายามแก้ไข code เหล่านั้นให้ทำงานได้ตามที่ต้องการ แต่ไม่ได้ทำให้ code นั้นดีขึ้น !! หรือไม่ยอมเขียน code ด้วยวิธีการใหม่ ๆ ทั้ง ๆ ที่ใช้งาน version control ด้วยนะ แปลกดีนะ !! อีกอย่างที่สำคัญ ปัญหาที่เราเจอนั้น เชื่อเถอะว่าคนอื่น ๆ น่าจะเจอแล้วและแก้ไขแล้ว ดังนั้นลองค้นหาดูสิ แต่ต้องระมัดระวังให้มาก เพราะว่า สำหรับมือใหม่ชอบ copy and paste มาใช้โดยที่ไม่เข้าใจเลย แต่มันทำงานได้ตามที่ต้องการเท่านั้นเอง

ปัญหาที่หนักมาก ๆ คือ Data Structure ที่ใช้มักจะผิดหรือไม่เหมาะสม

เนื่องจากบางครั้งสนใจ algorithm มากจนเกินไป จนหลงลืมเรื่องของ data structure ที่เหมาะสมกับปัญหา ทำให้มักจะเลือกใช้งานผิดบ่อยมาก ๆ

มักเขียน code แย่ ๆ ขึ้นอย่างต่อเนื่อง

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

ชอบถามหา Best Practice !!

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

ยังไม่พอนะ ชอบใช้ Shared หรือ Global State มากจนเกินไป

ทำให้เกิดปัญหา หรือ side-effect ตามมาเยอะมาก แถมหา root cause ไม่เจออีกด้วย เพราะว่าทำการ shared state ทั้งระบบกันไปเลย ไม่รู้ว่ามีใคร ตรงไหน มาทำการแก้ไขหรือเปลี่ยนแปลง ดังนั้น ลด ละ เลิก กันนะ หรือใช้แต่พองาม

มีอะไรอีกละ เยอะจริง ๆ อีกเรื่องคือ ไม่ยอมพัก

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

Viewing all articles
Browse latest Browse all 1997

Trending Articles