Practice Archive

มาปรับปรุงการเขียน Test กันหน่อย

การเขียน Test หรือชุดการทดสอบนั้นเป็นสิ่งที่ดี เริ่มเขียนว่ายากแล้ว การเขียนให้ดียากยิ่งกว่า ดังนั้นจึงสรุปวิธีปรับปรุงการเขียน Test ให้ดีขึ้น โดยนำมาจากบทความเรื่อง Write Better Tests in 5 Steps เริ่มกันเลย

Read More…

รูปแบบของ code แย่ ๆ ที่มักพบเจอ

ช่วงวันหยุดนั่งดู code เขียน code ไปเรื่อย ๆ ได้เห็นรูปแบบของ code ที่น่าสนใจ ไม่ใช่เรื่องของการตั้งชื่อ แต่มันคือ รูปแบบการทำงานของ code แน่นอนว่าเป็น code ที่สามารถทำงานได้ดีตามที่ต้องการ แต่ดันเป็น code ที่มีคุณลักษณะเฉพาะตัว เช่น ทำความเข้าใจยากมาก ส่วนต่าง ๆ ของระบบสามารถแก้ไข state หรือค่าได้โดยตรง แน่นอนว่าว่าค่านี้ ใช้ทั้งระบบ !! แก้ไขที่หนึ่งกระทบที่อื่น ๆ อีกมากมาย ใช้เวลาในการเพิ่ม feature เยอะขึ้น เมื่อเกิดปัญหาบน production แล้วการค้นหาจุดเกิดเหตุยากมาก ๆ จึงทำการสรุปสิ่งที่เจอไว้นิดหน่อย

Read More…

สิ่งที่นักพัฒนามือใหม่ชอบทำผิดพลาด

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

Read More…

เมื่อ Test มีกลิ่นแปลก ๆ ก็ลงมือแก้ซะ

สำหรับนักพัฒนาที่เขียน test หรือชุดการทดสอบ นะ !! มาดูกันว่า ชุดการทดสอบมันส่งกลิ่นแปลก ๆ บ้างหรือไม่ ? ปกติ code ที่นักพัฒนาสร้างขึ้นมา มักจะมีสิ่งแปลก ๆ มักจะส่งกลิ่น หรือ ส่งสัญญาณของปัญหาออกมา ซึ่งเราเรียกว่า Code Smell ปัญหามันไม่ใช่ Code Smell เพียงอย่างเดียว แต่ …. มันมีอย่างอื่นอีกเช่น เรารู้หรือไม่ว่าสิ่งเหล่านั้นมันคือ Code Smell !! ถ้าพูดง่าย ๆ คือ เรามีจมูกที่ดีหรือไม่ เรามีสายตาที่ดีหรือไม่ เพื่อทำให้ได้กลิ่น ให้มองเห็น Code Smell หรือสิ่งที่ผิดปกติหรือไม่ ? นั่นคือสิ่งที่นักพัฒนาต้องสร้างและปรับปรุงความสามารถขึ้นมา

Read More…

ว่าด้วยเรื่อง Agile Security Manifesto

อ่านเจอเอกสารเกี่ยวกับ Agile Security Manifesto เห็นว่าน่าสนใจดี จึงนำมาแปลและสรุปไว้นิดหน่อย มีอยู่ 4 ข้อเท่ากับ Agile เลย เป็นแนวทางสำหรับการสร้าง software ที่มีความปลอดภัย ตามแนวทางของ Agile ดังนี้

Read More…

คำถาม :: เขียนส่วนของ Business Logic ไว้ที่ไหนกันบ้าง ?

จากการ์ตูนขำ ๆ เรื่อง Business logic on the Frontend ก่อให้เกิดคำถามหนึ่งขึ้นมาคือ เราเขียน Business logic ของระบบไว้ที่ไหนกันบ้าง ? Frontend ฝั่ง Client side เช่น JavaScript, Mobile app เป็นต้น Frontend ฝั่ง Server side หรือเรียกว่า Web/Presentation Tier Backend Database เช่น Store procedure เป็นต้น ผมเชื่อว่า developer หลาย ๆ คนน่าจะทำมาทั้งหมดแล้ว ล้วนแล้วแต่มีเหตุผล มีเงื่อนไข มีข้อจำกัดที่แตกต่างกันไป รวมทั้งต่างมีข้อดีและข้อเสีย แต่ถ้าทุกอย่างมันลงตัว จะอยู่ตรงไหนน่าจะสมเหตุสมผลมั้ง !!

Read More…

ว่าด้วยเรื่อง Twelve Factor App กับการพัฒนาระบบงาน

สิ่งที่นักพัฒนาน่าจะต้องรู้สำหรับการพัฒนาระบบงานในปัจจุบัน นั่นก็คือ The Twelve Factor App ซึ่งเป็นคำแนะนำสำหรับการพัฒนาระบบที่ดี โดยเฉพาะ Cloud Native App มีเป้าหมายเพื่อ Portability ระหว่าง environment ต่าง ๆ Scale ได้ง่ายทั้งขยายและลด ลดค่าใช้จ่ายและเวลาด้วยการทำงานแบบอัตโนมัติ Continuous Deployment สามารถนำมาปรับใช้กับระบบอื่น ๆ ได้ ดังนั้นมาดูกันดีกว่า ว่ามีอะไรบ้าง

Read More…

ความเข้าใจผิดเกี่ยวกับ Unit test คือทำแล้วไม่มี Bug !!

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

Read More…

วันนี้นักพัฒนาเขียน TODO และ FIXME ใน code แล้วหรือยัง ?

วันนี้นั่งดู code ช่วงบ่ายในขณะที่ฝนกำลังถล่ม กทม เจอชุด comment ที่น่าสนใจ ซึ่งนักพัฒนาทุกคนน่าจะเคยเห็นผ่านตามาแล้ว ทั้งเกิดจากการ generate แบบอัตโนมัติจาก IDE ทั้งเขียนจากคนอื่น รวมทั้งตัวเราเองด้วย นั่นคือ TODO และ FIXME คำถามที่น่าสนใจคือ มันคืออะไร ? เขียนไว้ทำไม ? ทำไมไม่มีใครมาลบมันออก ? มาหาคำตอบกัน

Read More…

ปัญหาจากการนำ DevOps มาประยุกต์ใช้งาน

จากบทความเรื่อง Why DevOps Efforts Fail ? เป็นเรื่องเกี่ยวกับปัญหาเมื่อนำเอา DevOps มาประยุกต์ใช้ จึงนำมาแปลและสรุปไว้นิดหน่อย เป้าหมายของ DevOps นั้นเรียบง่ายมาก ๆ คือ ส่งมอบ software ให้ราบรื่น ส่งมอบ software ให้รวดเร็ว ส่งมอบ software ที่มีความน่าเชื่อถือ ส่งมอบ software ที่มีคุณภาพ

Read More…