ต้องคิดอย่างไร รู้อะไร และทำอย่างไร เพื่อให้เกิด Automated Test

หลังจากได้เขียนอธิบายเรื่อง “จะทำระบบให้รองรับ Automated Test ได้อย่างไร (Testable)” ไปคราวก่อน ได้รับผลตอบรับด้วยดี คราวนี้เลยมาเขียนเพิ่มเติมเพื่อเป็นตัวอย่างแก่ผู้ที่ต้องการนำไปพัฒนาระบบจริง โดยในบล็อกนี้ผู้อ่านจะได้เห็นภาพของสิ่งเหล่านี้ คือ

  • กระบวนการคิดเพื่อเตรียมทำ Automated Test
  • Unit Test
  • Integration Test
  • DI (Dependency Injection)
  • Stub (Test Double)
  • Code Coverage

Continue reading “ต้องคิดอย่างไร รู้อะไร และทำอย่างไร เพื่อให้เกิด Automated Test” »

A Brief History of Agile — (Day 1 Agile for Software Development at RMUTT)

ช่วงนี้ได้มาช่วยสอนอาจารย์ที่มหาวิทยาลัยเทคโนโลยีราชมงคลธัญบุรี 3 วัน เรื่อง Agile for Software Development กับชาวคณะ มี Prathan D. , aj.jammy และ Nitipat Lowichakornthikun ก็ได้ทบทวนเรื่องราว อัพเดทเทคนิคการสอน และอัพเดทข้อมูลจากทางพี่หนุ่มด้วย

อาจเพราะผมไม่ได้เข้ามาร่วมทีมสัมนาของบริษัทหลายครั้ง พบว่าเทคนิคการเล่าเรื่องของพี่หนุ่มเปลี่ยนไป ฟังเพลิน เหมือนประวัติศาสตร์ ที่มันมี Timeline และการเชื่อมโยงเหตุการณ์ กับหัวข้อต่างๆ เลยอยากจั่วหัวบล็อกว่า A Brief History of Agile ดูเข้าท่าดี (ล้อชื่อหนังสือ A Brief History of Time และรำลึกถึง Stephen Hawking ผู้เขียน) Continue reading “A Brief History of Agile — (Day 1 Agile for Software Development at RMUTT)” »

วิถีความสำเร็จแบบตะวันตก

นั่งดูคลิปไปเรื่อยๆใน Youtube จนมาเจอคลิปนี้ นั่งดูแล้วชอบ เป็น 10 นาทีที่ดีมากครับ สรุปเนื้อหาสะกิดต่อมได้ประมาณนี้

  • ปราชญ์ คือ คนสามัญที่ลงมือทำ คนสามัญ คือ คนที่ไม่ได้ลงมือทำ
  • ระยะทางร้อยลี้ ครึ่งนึงคือ 90ลี้ อีก 10ลี้ที่เหลือใช้ความพยายาม ความอดทนเท่ากับที่ผ่านมา
  • ตะวันตกให้ค่ากับความฝัน แรงบันดาลใจ แต่ตะวันออกให้ค่ากับความพยายาม ลงมือทำ ความขยัน
  • คำชมมีผลกับคนฟัง เช่น ที่บอกว่า “เก่งมากเลย” กับ “มีความพยายามมากเลย” ให้ผลที่ต่างกัน กลุ่มแรกยึดเป้าเป็นหลัก ทำอย่างไรก็ได้ เพื่อไม่ให้ล้มเหลว แต่กลุ่มสองมองคุณค่าของของความพยายาม เห็นแต่ความท้าทายที่จะไปถึงเป้า
  • ญี่ปุ่น พูดให้กำลังใจด้วยคำว่า กัมบัตเตะ เพราะเขาบูชาความพยายาม

จะทำระบบให้รองรับ Automated Test ได้อย่างไร (Testable)

ตอนที่หัดเขียน Automated  Test ผมเคยเจอปัญหาว่า โค้ดเก่าที่เขียนมา มันไม่รองรับการเขียน Unit Test, Integration Test เอาซะเลย แกะยากเหมือนกัน จนแล้วจนรอดก็ลองทำใหม่ แล้วฝึกกับโจทย์ไปเรื่อยๆ จนพอตกผลึกได้บ้าง ว่าถ้าจะทำระบบให้รองรับการ Test (Testable) จะต้องทำอย่างไร

วันก่อน มีน้องในทีมถามว่า “ผมจะเขียน Integration Test อย่างไรดี” ก็เลยได้ย้อนไปทบทวนประสบการณ์ หาข้อมูล และถามจากผู้รู้เพิ่มเติม จึงกลับไปเล่าให้น้องฟัง ก็คิดว่ามีประโยชน์ จึงอยากแชร์ไว้มาแลกเปลี่ยนความรู้กัน Continue reading “จะทำระบบให้รองรับ Automated Test ได้อย่างไร (Testable)” »

สร้าง API Document กับ .NET Core ง่ายๆ ด้วย Swagger

เมื่อโปรแกรเมอร์เขียน API เสร็จ และส่งให้ทีมอื่นๆไปใช้งานต่อ จะต้องอธิบายวิธีการใช้งานด้วย แต่ที่ต้องทำ คือควรมีเอกสารการใช้งาน หรือเรียกว่า API Document ส่งให้กับผู้ใช้เสมอๆ หรือเก็บไว้อ้างอิงที่ใดที่หนึ่ง

แต่กระนั้น โปรแกรมเมอร์อย่างเรามักไม่ชอบทำ API Document หรอกครับ เขียนๆไปแค่ให้มี สิ่งที่ได้มักเป็นเอกสารที่ใช้งานได้บ้างไม่ได้บ้าง เพราะเป็นภาษาที่คนเขียนเข้าใจแค่ตัวเอง หรือตัวอย่างไม่ชัดเจน หรือมีข้อมูลใช้งานไม่ครบถ้วน หนักไปกว่านั้นคือ บ่นว่าไม่มีเวลา แล้วก็ไม่ทำมันซะเลย (แต่มีเวลาไปอธิบายให้ผู้ใช้ทีละคนๆ 555)

ดังนั้น จะดีกว่าไหม ถ้าเราเขียนโค้ด API เสร็จ แล้วมีเครื่องมือสร้าง API Document ให้เราได้เลยอัตโนมัติ, อ่ะ ตอบแทนละกัน “ดีว่ะ!” Continue reading “สร้าง API Document กับ .NET Core ง่ายๆ ด้วย Swagger” »