ผมชอบ Class นี้ครับ

ทำไมผมถึงชอบนะ ?

เนื่องจากผมประกอบอาชีพรับจ้างเขียนโปรแกรม และสิ่งที่ผมมักได้ยินเสมอหรือมีคนมาถามเสมอก็คือ “เขียนแบบนี้ดีไหม?”

ซึ่งเป็นคำถามที่ผม “ตอบไม่ได้”

สำหรับ source code ผมจะมีตัวประกอบในการมองเพียงว่าแค่มัน “Good enough” เพียงพอไหม? อยู่ประมาณ 2 อย่างคือ

  1. มันทำงานถูกต้องตามสิ่งที่ผู้ใช้งานต้องการ
  2. คนในทีมสามารถดูแลได้ (อ่าน code นั้นได้, แก้ไข code ได้, เพิ่ม code จาก feature ใหม่ได้โดยง่าย)

แต่ใน Class นี้ผมได้เรียนรู้ว่าทำอย่างไร ถึงจะไปให้เหนือกว่าคำว่า “Good enough”

ทำให้ผมได้เรียนรู้วิธีการกำหนดเหตุและผลของสิ่งที่ผมจะเขียนมันลงไป

ทำให้ผมได้มองย้อนกลับไปที่ปัญหาที่เราต้องการจะแก้มากกว่าสนใจแต่ Solutions ที่เราจะใช้

ทำให้ผมได้เรียนรู้ประวัติศาสตร์ และรากฐานของ Functional Programming

เปลี่ยนมุมมองในการมองปัญหาระหว่าง Reality กับ Abstraction

แต่สิ่งที่สำคัญที่สุดสำหรับการมาลง Class นี้ก็คือ ผมได้รีวิวตัวผมเองว่า “ผมไม่รู้อะไรบ้าง” และ “ผมเข้าใจอะไรผิดไปบ้าง” เพื่อที่จะนำมาปรับปรุงและแก้ไขตัวผมเองได้ และสิ่งที่ผมต้องฝึกเพิ่มเติมมีอะไรบ้าง

สำหรับท่านใดที่สนใจ Class นี้ แนะนำให้นอนให้พอครับ เพราะว่าเนื้อหาเยอะมาก และขอให้ตั้งใจฟังการอธิบายมากกว่าตัว Slide นะครับ

--

--

ให้เราลองคิดภาพตามตอนเราเล่น Dominoes โดยเราทำการเรียง dominoes ให้ระยะห่างของ domino แต่ละอันพอดีกับอันที่ติดกันล้มลงได้ โดยกำหนดให้คุณสมบัติของ domino ที่เรียงกันดังนี้ ถ้าเราออกแรงผลัก domino ตัวแรกสุดไปในทิศทางที่มี domino ตัวที่สองเรียงติดกันอยู่ domino ตัวแรกจะล้มลง และสำหรับ domino ทุกตัวที่ล้มลงจะทำให้ domino ตัวที่อยู่ถัดไปล้มลงด้วยเสมอ จากคุณสมบัติที่กำหนดให้มาทั้ง 2 ข้อ ถ้าเราล้ม domino ตัวแรกสุด จะทำให้ dominos ทุกตัวที่เรียงอยู่ล้มลงทั้งหมด โดยเมื่อเราออกแรงผลัก domino ตัวแรก ไปในทิศทางที่มี domino ตัวที่สองเรียงอยู่ถัดไป จะทำให้เกิดคุณสมบัติข้อที่ 1คือ domino ตัวแรกล้มลงไปในทิศทางที่มี domino ตัวที่สอง และจากคุณสมบัติข้อที่ 2 เมื่อ domino ตัวแรกล้มลงแล้วจะทำให้ domino ตัวที่…

Mathematical induction คืออะไร
Mathematical induction คืออะไร

Successor function หรือ Successor operation คือ function ที่รับ natural number และเพิ่มค่า natural number นั้นไปอีก 1 ดังนี้ Succ(x) = x+ 1 ตัวอย่างเช่น Succ(0) = 1, Succ(1) = 2

โดยที่ Domain คือ natural number หรือ {0, 1, 2, 3, …} และ (Co-)Domain หรือ ผลลัพท์ที่ได้จาก Successor function ก็ยังคงเป็น natural number และนอกจากนี้ Successor function ยังเป็น total function อีกด้วย

--

--

นักพัฒนาหลาย ๆ ท่าน อาจคุ้นเคยกับคำนี้กันมาบ้าง เมื่อมีการทำ feature ใหม่ หลายที่มักจะให้เปิด branch ใหม่ เพื่อทำงาน และจะทำการรวมเข้ากับ branch หลักเมื่อทำการพัฒนาเสร็จแล้ว ถ้าเป็น feature เล็ก ๆ และใช้เวลาไม่นานก็คงไม่มีปัญหาอะไรมากนัก แต่สิ่งที่เจอในบางครั้งคือ ใช้เวลาในการพัฒนานาน กว่าจะถูกรวมเข้ากับ branch หลัก แล้วปัญหามันคืออะไรนะ ? จาก Official Teaser Doctor Strange in the Multiverse of Madness กล่าวถึงปัญหาที่ตามหลังจากการที่แทรกแซงกาลอวกาศ ถ้าหากเปรียบทียบกับการเปิด branch ใหม่เพื่อทำงานแล้วก็คือ เรากำลังทำการสร้างความจริง บนเส้น branch (เส้นเวลา) ใหม่ โดยถ้าเราเปิด 10 branch สำหรับพัฒนา…

A Feature branch: เมื่อนักพัฒนาอยู่ในจักรวาลแห่งความบ้าคลั่ง
A Feature branch: เมื่อนักพัฒนาอยู่ในจักรวาลแห่งความบ้าคลั่ง