บทส่งท้าย KBTG Kampus ClassNest Java รุ่น 2: สู่การเรียนรู้บทใหม่

jo@sabotender
KBTG Life
Published in
7 min readMay 2, 2024
การเรียนรู้ไม่มีที่สิ้นสุด (Credit: Bing Create)

สวัสดีผู้อ่านทุกท่าน บทความนี้เป็นบทความแรกของผมในปี 2024 และใช่ครับ กระผมอู้ไม่ได้เขียนบทความมา 3 เดือนเต็ม สาเหตุมาจากการจัดการเวลาของตัวเองที่ไม่ดีเพียงพอในภาวะที่มีงานเข้ามาพร้อม ๆ กันหลายอย่าง แล้วพอเราจัดลำดับไม่ได้ สุดท้ายก็ไม่ได้ทำอะไรเป็นชิ้นเป็นอันสักอย่าง อาการนี้คือ Netflix Syndrome ที่ไม่ได้เกิดเวลาเราเข้าไปดู Netflix แต่มันดันลามมาเกิดเวลาทำงานด้วย! (ใครไม่คุ้นลองอากู๋ดูได้ครับ Netflix Syndrome = ไถเป็นชั่วโมง ไม่ได้ดูหนังสักเรื่อง)

ช่วง 3 เดือนมานี้จะว่าไม่ได้ทำอะไรเลยก็เกินไปครับ เดี๋ยวจะโดนเขาเลย์ออฟเอา จะว่าไป… หนึ่งในงานที่ผมมีส่วนร่วมในช่วงหลายเดือนที่ผ่านมานี้ก็คือ

KBTG Kampus ClassNest for Software Engineers

KBTG Kampus ClassNest

โครงการนี้เป็นโครงการที่ KBTG ร่วมกันกับทีมงานอาจารย์ผู้ช่ำชองจากภายนอกอีกหลายท่าน ช่วยกันนำความรู้ในการพัฒนาซอฟต์แวร์ที่สั่งสมมากว่าร้อยปี (จำนวนปีนี่รวม ๆ กันหลายคนนะครับ :P) มาจัดทำเป็นหลักสูตร Software Engineering เปิดให้ผู้ที่สนใจทั่วไปสมัครเข้ามาเรียนรู้กันแบบจุก ๆ ซึ่งในคอร์สจะมีการเรียนการสอนทั้งในรูปแบบ Video Recordings, Live Coach Sessions และมีส่วนกิจกรรมที่เป็น Intensive Onsite Workshop ด้วย (หมายเหตุไว้นิดหนึ่งว่า KBTG Kampus ClassNest มีหลักสูตรด้าน Infrastructure และ Cyber Security ด้วยนะครับ ซึ่งทั้งสองอันนี้ทยอยจบหลักสูตรกันไปก่อนหน้านี้แล้ว ตอนที่ผมเขียนบทความอยู่ขณะนี้ ก็เหลือแค่ Go Software Engineering ที่ยังออนแอร์ แต่ก็ใกล้จะจบแล้วเช่นกัน)

The end is the beginning

อยู่มาวันหนึ่ง ทีมงาน KBTG Kampus ก็ติดต่อผมมาว่าอยากให้ไปเจอะเจอและพูดอะไรกับน้อง ๆ ใน Java Kampus Workshop หน่อย อารมณ์แบบพูดปิดโครงการอะไรประมาณนั้น ด้วยความ Introvert ที่มีอยู่ ผมก็ได้แต่กังวลไปต่าง ๆ นานา เอาเป็นว่าบทความนี้คือบันทึกของสิ่งที่ผมอยากพูด (ซึ่งก็ได้พูดไปแล้วบ้าง และไม่ได้พูดบ้าง) ในวันสุดท้ายของ Java Software Engineering Intensive Workshop นั่นเอง

Java Intensive Workshop ทั้งสองรอบจัดที่ K-Stadium อาคาร KBTG แต่ดูเหมือนว่า Workshop ของภาษา Go จะเปลี่ยนไปจัดที่ตึก K+

ตัว Workshop นั้นแบ่งจัดเป็นสองรอบ รอบละสองวันด้วยกันคือวันเสาร์และวันอาทิตย์ ถ้าจัดเป็นรอบเดียวคงดูแลกันได้ไม่ทั่วถึง เพราะจำนวนคนค่อนข้างเยอะและจะไม่ Intensive เท่าที่ควรแน่ ดังนั้นผมเองเลยมีโอกาสไปพูดปิดท้ายโครงการถึงสองรอบด้วยกัน! ฮืออออ… ทีนี้ปัญหาหน้างานของคนที่ไม่ได้พูดในที่สาธารณะบ่อย ๆ อย่างผมคือมันจะพูดไม่ค่อยรู้เรื่องครับ บางอย่างที่ตั้งใจไว้แต่แรกว่าจะพูด สุดท้ายลืมพูด บางครั้งออกนอกเรื่องไปพูดสิ่งที่ไม่ได้ตั้งใจจะพูดแล้วกลับมาไม่ถูกก็มี ไม่รู้เป็นความโชคดีหรือโชคร้ายของท่านผู้ฟังเหมือนกันนะครับ รอบแรกมีพี่เค ทินพัฒน์ มาแจมด้วย แต่รอบสองนี่พูดคนเดียวเลย อย่างไรก็ตามต้องบอกว่าผมพยายามให้การพูดทั้งสองรอบนั้นมีใจความที่เหมือนกันครับ อาจจะมีเรื่องเล่าปลีกย่อยหรือเกร็ดเล็กเกร็ดน้อยแตกต่างกันไปบ้าง ดังนั้นในเวอร์ชันของบทความนี้จะเป็นเหมือนฉบับ Director’s Cut ที่ผู้กำกับเรียบเรียงและรวบรวมขึ้นมาใหม่ ด้วยความหวังว่าจะอ่านรู้เรื่องขึ้น

3 Body Problem

Netflix Series: 3 Body Problem Season 1

ก่อนจะถึงวันที่ผมต้องไปพูดในรอบแรก ผมก็มีช่วงเวลาในการคิดหาไอเดียในการพูด คิดไปคิดมาก็ไปจบที่ Netflix ครับ เอาจริงคือยังคิดไม่ออก ดูหนังก่อนดีกว่า หลังจากไถจอไปมา ไปสะดุดกับทีเซอร์เรื่องนึงที่ชื่อว่า 3 Body Problem เอาจริงผมเห็นเรื่องนี้มาสักพักแล้ว แต่ไม่ได้ให้ความสนใจเลย เพราะอ่านชื่อเรื่องแล้วนึกว่าเป็นเรื่องแนวสืบสวนฆาตกรรม คือดันไปแปลคำว่า Body=ศพ แล้วไถผ่านไปเลย พอได้มาเห็นทีเซอร์นี้ก็รู้สึกประหลาดใจว่า… อ้าว! นี่มันหนังไซไฟนี่หว่า ท่าทางน่าสนใจ เลยกดเข้าไปดู… อ้าว! นี่มันซีรีย์นี่หว่า มีทั้งหมด 8 ตอน ยิ่งดูยิ่งเพลินจบซีซันกันไปเลย… อ้าว! เหลือบดูนาฬิกา ตีสองวันอาทิตย์… ทีมงานบอกคิวให้ขึ้นพูดประมาณบ่ายสี่โมงเย็นวันอาทิตย์ ก็วันนี้แล้วนี่หว่า สรุปที่ว่าจะคิดหาไอเดีย กลายเป็นมาดูหนังมาราธอนซะงั้น

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

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

ทีนี้มีฉากหนึ่งที่เอเลี่ยนได้สนทนากับมนุษย์เกี่ยวกับวิวัฒนาการของมนุษย์เอง

มนุษย์วิวัฒน์จากการหาของป่าล่าสัตว์มาเป็นสังคมเกษตรกรรม ใช้เวลาประมาณ 90,000 ปี

มนุษย์วิวัฒน์จากสังคมเกษตรกรรมมาเป็นสังคมอุตสาหกรรม ใช้เวลาประมาณ 10,000 ปี

มนุษย์วิวัฒน์จากสังคมอุตสาหกรรมจนสามารถคิดค้นพลังงานปรมาณูได้ ใช้เวลาประมาณ 200 ปี

และจากยุคปรมาณู จนมาถึงยุคคอมพิวเตอร์ได้ ใช้เวลาประมาณ 50 ปี

สิ่งที่เอเลี่ยนต้องการจะสื่อผ่านทางการพูดคุยนี้ก็คือมนุษย์มีวิวัฒนาการเร็วขึ้นเรื่อย ๆ แม้ว่าตอนนี้เอเลี่ยนจะก้าวหน้ากว่ามนุษย์ แต่อีกไม่กี่ร้อยปีข้างหน้า มนุษย์จะก้าวหน้าจนแซงเอเลี่ยน(ที่อยู่ในซีรี่ย์)ได้แน่นอน

ตรงนี้ผมมีจังหวะมาถามน้อง ๆ ใน Workshop ประมาณว่า “คิดว่ายุคถัดจากคอมพิวเตอร์คือยุคอะไร?” ผมได้ยินน้อง ๆ ส่วนใหญ่ตอบมาแทบจะเป็นเสียงเดียวกันว่า “ยุคของ AI”

เอเลี่ยนมีจริงไหมผมก็ไม่รู้เหมือนกัน

แต่โลกเรามีวิวัฒนาการไปอย่างรวดเร็วอันนี้คือของจริง และดูจะเร็วมากกว่าที่เราเองคาดการณ์ไว้เสียด้วย

มิติของการเปลี่ยนแปลง — ฮาร์ดแวร์

มีอีกฉากหนึ่งในซีรี่ย์ 3 Body Problem ที่ผมเล่าในการพูด ณ ลาน Workshop รอบสอง คือฉากที่เอเลี่ยนใช้ซูเปอร์คอมพิวเตอร์ชื่อ โซฟอน ที่มีขนาดเล็กเท่าโปรตอน (เอ่อ ผมไม่ได้จะเขียนท่อนแร็พนะครับ ชื่อมันมาแบบนั้นอะ) โปรตอนคืออนุภาคย่อยภายในอะตอมของธาตุ ที่ใครเรียนสายวิทย์มาน่าจะคุ้น ๆ ตอนเรียนวิชาเคมี

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

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

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

ผมจำได้ว่าคอมพิวเตอร์เครื่องแรก ๆ ใช้ระบบหลอดสูญญากาศที่มีขนาดใหญ่โตมาก

ถัดมาเป็นยุคที่ใช้ทรานซิสเตอร์

ถัดมาเป็นยุคที่ใช้วงจรไอซี หรือ Integrated Circuit

ถัดมาเป็นยุคของ Microprocessor ที่ปัจจุบันเราพัฒนาจนถึงระดับนาโนเทคโนโลยี คือเราผลิตของได้ชิ้นจิ๋วลงเรื่อย ๆ นอกจากนั้นยังเพิ่มความสามารถขึ้นไปอีกขั้น ด้วยการทำ Multiple Cores / Multiple Threads ยัดเข้าไปในชิ้นส่วนอิเล็กทรอนิกส์ที่เล็กขนาดวางบนฝ่ามือเราได้อีก

รูป CPU ที่ให้ AI ช่วยเจนออกมา

ผมยกตัวอย่าง ชิป M3 ของ Apple มีจำนวนทรานซิสเตอร์ 25,000 ล้านตัว ด้วยเทคโนโลยี 3 นาโนเมตร แถมเริ่มต้นที่ 8-Core

ถ้าเราคิดว่า “นาโน” ก็เล็กมากแล้ว ทรานซิสเตอร์ระดับหมื่นล้านตัวไม่รู้อยู่กันยังไงในแผ่นสี่เหลี่ยมเล็ก ๆ มนุษย์จะทำให้มันเล็กลงไปได้อีกเรื่อย ๆ เลยหรือเปล่า?

ต้องกลับมากาวต่อที่อนุภาคโปรตอน ซูเปอร์คอมพิวเตอร์ระดับซูเปอร์จิ๋วของเอเลี่ยนที่ผมเล่าค้างไว้ ทันทีที่ผมดูถึงตอนนี้ในซีรีย์ มันทำให้ผมคิดถึงสิ่งที่เรียกว่า “ควอนตัมคอมพิวเตอร์” ขึ้นมาทันที ผมเองก็คิดว่าคนเขียนบทภาพยนตร์เขากาวต่อมาจากสิ่งที่เห็นในโลกมนุษย์ปัจจุบันนั่นแหละ

บางคนอาจจะเคยได้ยินคำว่า ควอนตัมคอมพิวเตอร์ มาบ้าง หรืออาจจะพอจำได้จากภาพยนตร์ซูเปอร์ฮีโร่ของ Marvels เรื่อง Ant-Man ที่เข้าไปผจญภัยในมิติของควอนตัม เวลาเราพูดถึงควอนตัม เรากำลังหมายถึงสิ่งที่เล็กระดับซูเปอร์จิ๋วหลิว เทคโนโลยีระดับนาโนนี่ก็มองด้วยตาเปล่าไม่เห็นแล้ว แต่ควอนตัมคือเล็กลงไปอีกระดับอนุภาคเลย ผมรู้สึกว่าควอนตัมคอมพิวเตอร์นี่แหละคือการคิดนอกกรอบอย่างแท้จริง เอาคอมพิวเตอร์ที่มีพื้นฐานมาจากวงจรไฟฟ้าไปฟีเจอริ่งกับฟิสิกส์

Quantum Realm (Source: Marvel Entertainment)

ควอนตัมคอมพิวเตอร์

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

ถ้าใครยังจำหลักการทำงานของ CPU ในปัจจุบันได้ ประมาณว่าข้อมูลทุกอย่างที่คอมพิวเตอร์เข้าใจนั้นแท้จริงแล้วอยู่ในรูปของสัญญาณไฟเปิดปิด ที่เราเขียนแทนด้วยตัวเลข 0 กับ 1 ดังนั้นจึงเรียกได้ว่าพื้นฐานของคอมพิวเตอร์ในปัจจุบันก็คือวงจรไฟฟ้า แต่ควอนตัวคอมพิวเตอร์ทำงานอยู่บนพื้นฐานของพฤติกรรมแปลก ๆ ของอนุภาคขนาดเล็ก เช่น อิเล็กตรอน ใช่ครับ มนุษย์กำลังเอาอนุภาคขนาดเล็กมาสร้างเป็นคอมพิวเตอร์

พฤติกรรมแปลก ๆ อย่างแรกเรียกว่า Superposition ซึ่งเวลาอธิบายความหมายของคำนี้ หลายที่จะอธิบายโดยใช้การเปรียบเทียบกันระหว่างบิท (Bit) ของคอมพิวเตอร์ในปัจจุบันที่ในเวลาใดเวลาหนึ่งมีค่าไม่เป็น 0 ก็เป็น 1 “อย่างใดอย่างหนึ่งเท่านั้น” แต่บิทของควอนตัมคอมพิวเตอร์ที่เรียกว่า Qubit (ย่อมาจาก Quantum Bit) จะมีพฤติการณ์เป็นได้ทั้งค่า 0 และ 1 พร้อมกัน ย้ำอีกทีว่า “พร้อมกัน” ครับ ฟังดูกาวเหมือนมัลติเวอร์สหรือจักรวาลคู่ขนานอะไรแบบนั้นเลย

ผมยังจำความรู้สึกตอนที่ผมอ่านเจอความหมายของ Superposition ครั้งแรก มันแบบ เฮ้ยยยย… โอ้วมายก็อด มันเป็นไปได้ด้วยเรอะ! แล้วผมก็จำได้อีกว่าประโยคถัดมาในเอกสารเดียวกันนั้นเขียนว่า ในโลกของควอนตัมฟิสิกส์ นักวิทยาศาสตร์พบว่าอนุภาคขนาดเล็กพวกนี้มีพฤติกรรมแปลก ๆ ที่ไม่สามารถอธิบายได้ ประมาณว่ามันมีพฤติกรรมแบบนี้ แต่ไม่สามารถอธิบายที่มาที่ไป หรือให้เหตุผลได้ว่าทำไมมันถึงเป็นอย่างนั้น ผมก็รู้สึกเหมือนโดนคนเขียนเอกสารเขาดักคอว่าเอ็งอย่าตื่นเต้นจนเกินเหตุ

ถ้าเรายกถุงกาวขึ้นมาสูดปรื้ดดดอีกครั้ง แล้วนึกถึงคำของไอน์สไตน์ว่า “จินตนาการสำคัญกว่าความรู้” ก็รู้สึกได้แล้วว่าควอนตัมคอมพิวเตอร์ต้องเร็วกว่าคอมพิวเตอร์แบบปกติแบบสุดยอดแน่ ๆ คอมปัจจุบันมี 2 บิต ก็จะได้ความเป็นไปได้ 4 แบบ (00, 01, 10, 11) แต่ต้องรัน 4 ครั้ง แต่ควอนตัมบิต 2 บิตเหมือนจะทำงานทีเดียวได้ 4 แบบเพราะเจ้ามัลติเวิร์สนี่แหละ

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

พฤติกรรมแปลก ๆ ที่เป็นพื้นฐานของควอนตัมคอมพิวเตอร์อีกอันหนึ่งเรียกว่า Entanglement แปลให้สั้นหน่อยคือการเปลี่ยนแปลงสถานะอนุภาคตัวหนึ่งจะส่งผลให้สถานะของอนุภาคอีกตัวหนึ่งเปลี่ยนแปลงไปในแบบที่เราคาดเดาได้ ณ จุดนี้ก็พอทำให้เราสามารถนำ Qubits หลายตัวมาทำงานร่วมกันเพื่อการคิดคำนวณได้

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

Moore’s Law: Past, Present, Future จาก Intel

Moore’s Law บอกว่าจำนวนทรานซิสเตอร์ที่ไอซีจะเพิ่มขึ้นสองเท่าในทุก ๆ 2 ปี แต่ตอนนี้เราเริ่มจะกระโดดข้ามไปที่ควอนตัมคอมพิวเตอร์แล้ว

นี่คือมิติของฮาร์ดแวร์

มิติของการเปลี่ยนแปลง — ซอฟต์แวร์

ถ้าฮาร์ดแวร์มันทั้งเร็วและแรงมาก ๆ คงไม่ Make Sense แน่ที่เราจะมีแต่ซอฟต์แวร์ง่าย ๆ บ้าน ๆ แบบ Standalone Application หรือ Monolith Application

ซอฟต์แวร์เป็นเรื่องของ Developer โดยตรง คนที่เดินอยู่ในถนนสาย Software Development มานาน น่าจะเห็นพ้องต้องกันว่า บัดเดี๋ยวนี้จะพัฒนาซอฟต์แวร์ดี ๆ ขึ้นมาสักระบบหนึ่ง มันมีอะไรเยอะแยะซับซ้อนกว่าแต่ก่อนมาก

พอฮาร์ดแวร์ทำงานได้ประสิทธิผลสูงขึ้นแต่ราคาถูกลง ทุกคนเข้าถึงได้ง่ายขึ้น ปัจจุบันมี Cloud Services เกิดขึ้นอีก เราก็สามารถมี Software Architecture ที่ซับซ้อนหลากหลายมากขึ้นตามไปด้วย ความสามารถของซอฟต์แวร์ก็สูงขึ้น UX ดีขึ้น UI สวยขึ้น ส่วน Developer ก็มีโค้ดที่ต้องเขียนเยอะขึ้นด้วย

จากอดีตที่เราเขียนแค่ Shell Scripts มาเขียนเป็นโปรแกรม Standalone กลายมาเป็น Client/Server มาต่อที่ Web-based Application, 3-Tier Application, N-tier Application ขยายต่อไปเป็น Distributed Application จากนั้นเข้าสู่ยุค Web Services ผ่านมายังยุค Containerization มาคู่กับ Microservices และ Micro-Frontend และยังจะมี Decentralized Web เกิดขึ้นมาอีกในปัจจุบัน… เขียนยาวเริ่มเหนื่อย นี่ยังไม่พูดถึง Technology Stack ของแต่ละตัวเลย

ภาพแสดงเครือข่าย Microservices ของ Uber ปี 2019 (Image Source)

พอฮาร์ดแวร์รองรับการเก็บข้อมูลได้เยอะขึ้น เขียนอ่านส่งผ่านข้อมูลได้ไวขึ้น เราก็มีซอฟต์แวร์แบบใหม่ที่ใช้ Big Data เราสามารถมีอัลกอริทึมแบบใหม่ที่ซับซ้อนกว่าเดิม จาก Search Engine มาถึงปัจจุบันที่เรามี Machine Learning และ AI ที่เป็นผลิตผลจากข้อมูลมหาศาลเหล่านั้น

ยังไม่รวมภาษาในการเขียนโปรแกรมที่เกิดขึ้น มี Libraries และ Development Frameworks ใหม่ ๆ เกิดขึ้น ตั้งอยู่ และดับไปอย่างต่อเนื่อง

ภาษา Java ก็เช่นกัน

ภาษา Java เกิดขึ้น ตั้งอยู่ แต่ยังไม่ดับนะครับ เดี๋ยวจะเข้าใจผิด เพียงแต่ภาษา Java อาจจะเรียกได้ว่าผ่านช่วงวัยรุ่นมาแล้ว เป็นวัยกลางคนที่มีความเก๋า ผ่านร้อนผ่านหนาว เก็บประสบการณ์มามาก เข้ากันได้กับ Software Architecture ที่หลากหลาย สามารถใช้เขียน Application ได้แทบจะทุกรูปแบบ แต่ผมว่าหลายคนรู้จักข้อเสียของ Java มากกว่าข้อดีของมันเสียอีก

เช่นเดียวกับเทคโนโลยีทางด้านซอฟต์แวร์อื่น ๆ ภาษา Java ก็มีการเปลี่ยนแปลงไปอย่างรวดเร็ว ตัวภาษาเองก็ออกเวอร์ชันใหม่ ที่มีฟีเจอร์ใหม่ ๆ น้องคนหนึ่งบอกเสริมตอนที่พูดอยู่ว่าปัจจุบันภาษา Java อยู่ที่เวอร์ชัน 22 แล้ว โดยตั้งแต่ LTS Version ล่าสุดคือเวอร์ชัน 21 นั้นมีฟีเจอร์ที่น่าสนใจมาก ๆ คือ Virtual Threads และ Structured Concurrency

Framework ที่เราใช้อยู่ก็มีออกเวอร์ชันใหม่ด้วย ยกตัวอย่างเช่น Spring Boot ที่ชาว Java นิยมใช้กัน ส่วนเวอร์ชันเก่าก็ทยอย End of Support ไป แต่สิ่งที่สำคัญคือเรารู้หรือไม่ว่า Framework ที่เราใช้อยู่นั้น End of Support เมื่อไหร่ และเราวางแผนทำอะไรกับมันหรือไม่

ยกตาราง End of Support ของ Spring Boot มาให้ดูกันเลย

ขึ้นไปอีกขั้นหนึ่งของ Java คือ Virtual Machine ซึ่งก็มีตัวใหม่ที่ทำให้ภาษา Java ทำงานแบบ Native ได้ออกมา นั่นคือ GraalVM ที่ Framework เลือดใหม่ต่างก็ให้การสนับสนุนเป็นอย่างดี ยกตัวอย่างเช่น Quarkus, Micronaut ส่วน Spring Framework เองก็รองรับการทำงานแบบ Native ในชื่อ Spring Native โดยสิ่งต่าง ๆ เหล่านี้เกิดขึ้นเพื่อปิดช่องว่างของภาษา Java ในโลก Containerized Microservices ที่ต้องการ Memory Footprint ที่น้อยและ Startup Time ที่เร็ว ถ้าถามว่าน้อยและเร็วขนาดไหน ผมให้สเกลว่าแบบพอฟัดพอเหวี่ยงกับภาษารุ่นใหม่อย่างภาษา Go

สุดท้ายแต่ไม่ท้ายสุด แม้แต่ APIs ของชาวบ้านที่เราเรียกใช้ในซอฟต์แวร์ของเรา ก็มีเวอร์ชันใหม่ ๆ ออกมาให้ใช้งาน ให้ได้อัพเดตกัน

เคยมีข้อมูลในอินเตอร์เน็ตออกมาเมื่อนานมาแล้วว่าซอร์สโค้ดของ Microsoft Windows มีกลม ๆ มากกว่า 50 ล้านบรรทัด และซอร์สโค้ดภายใน Google ทั้งบริษัทมีมากกว่า 2 ล้านล้านบรรทัด

ลองหันมาดูในโปรเจคของเราครับ ว่าซอฟต์แวร์ที่เรากำลังพัฒนาอยู่นั้นมีกี่บรรทัด แล้วส่วนต่าง ๆ ของมันเปลี่ยนแปลงบ่อยไหม อย่างไร เพราะเหตุใดมันจึงไม่ยอมเปลี่ยนแปลง (:P)

นี่คือมิติของซอฟต์แวร์

มิติของการเปลี่ยนแปลง — วิธีปฏิบัติ (Practices)

ถ้าฮาร์ดแวร์เร็วปรู๊ด ซอฟต์แวร์เร็วปรี๊ด มันคงไม่ค่อย Make Sense ถ้านักพัฒนาซอฟต์แวร์ทำงานได้ช้ามากกกกกกกกกกก

ถ้าอยากเร็วทำอย่างไรครับ… ง่ายมาก เพิ่มคน!

พอซอฟต์แวร์มีความซับซ้อน ซอร์สโค้ดมีจำนวนมาก คนเดียวทำงานไม่ไหว ต้องเพิ่มคน เราต้องทำงานเป็นทีม พอคนเยอะเข้า ทีมใหญ่แตกออกมาเป็นทีมย่อย ถ้าไม่มีแนวทางการทำงานร่วมกัน ไม่มีวิธีปฏิบัติให้ยึดถือ แทนที่จะเร็ว ก็น่าจะกลายเป็นเหลวแทน

Software Development Practices ก็เริ่มเข้ามา

บางที่เรียกว่า Engineering Practices บางทีก็ Software Development Methodology จริง ๆ แล้วแต่ละคำมีความต่างกันนิดหน่อย แต่ผมอยากเหมารวมไปเลยกับอะไรก็ตามที่มีเพื่อให้นักพัฒนาซอฟต์แวร์ทำงานร่วมกันได้อย่างมีประสิทธิภาพ ไม่แตกแถว

ลองไล่ตั้งแต่ Methodologies ก่อน

Waterfall, Spiral, Prototyping, Unified Process, eXtreme Programming, Agile, Kanban, Scrum, LeSS, Flight Level, … ผมว่าผมลืมไปหลายอันเหมือนกัน

Pair Programming, Mob Programming, Code Reviews…

Design Patterns, Refactoring, ตระกูล XXX-Driven Development ทั้งหลาย เช่น Test-Driven Development, Behavior-Driven Development, Observability-Driven Development แต่ไม่ใช่ Deadline-Driven Development นะ เห็นชอบใช้กันเยอะ

รวมไปถึงศาสตร์ของการทำ Test ที่มีหลายระดับหลายประเภทอีกเป็นตั้ง ที่ผมมองว่าเป็นส่วนหนึ่งของวิธีปฏิบัติ

ไล่ลงมาถึงการใช้เครื่องมือต่าง ๆ เช่น การ Collaboration ผ่าน Git ที่เรามีเน้นกันใน Java Bootcamp ด้วย จนถึงเดี๋ยวนี้ Collaborate กับ AI ละ

สุดท้ายที่เก็บไว้คุยหลังสุดคือเรื่อง DevOps ที่บางคนบอกว่ามันคือ Culture ซึ่งผมเองก็ลืมถามน้อง ๆ ใน Workshop ทั้งสองรอบไปเลยว่า “DevOps คืออะไร?” เพราะใน Java Bootcamp จะมีบทของ DevOps Primer ด้วย

ตอนนี้ใน KBTG จากคำว่า DevOps มันกลายร่างเป็นคำว่า DevSecOps

แต่ถ้าใครถามผม ผมจะให้คำตอบแบบขำ ๆ ว่า DevOps คืองาน Ops ของ Dev (ผมเรียนมาว่าภาษาอังกฤษให้แปลจากด้านหลังมาด้านหน้า)

DevOps คือเอางาน Operation มาให้ Developer ทำ

DevSecOps คือเอางาน Operation และงาน Security มาให้ Developer ทำ

อีกคำถามหนึ่งที่ผมอยากถามต่อคือ “เคยได้ยินคำว่า Shift Left กันไหมครับ?”

รูปนี้ ขอขอบคุณ Dynatrace

มีอยู่ช่วงหนึ่งผมพบเจอคำว่า Shift Left นี้บ่อยมาก แบบเอะอะอะไรก็จะ Shift Left ๆ

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

ดังนั้นเวลากล่าวถึง DevSecOps เราก็จะได้ยินอีกคำหนึ่งคือการ Shift Left Security อะไรประมาณนี้

คำถามถัดไปคือ “ทำไมเขาถึงชอบ Shift Left เอางานมาให้ Dev ทำกันล่ะ?”

Dev เป็นคนขยัน?

Dev ทำเร็วกว่าคนอื่น?

Dev เก่งเทพ?

Dev เงินเดือนเยอะ ใช้ให้คุ้มหน่อย?

ใครอ่านมาถึงตรงนี้ก็ช่วยตอบคำถามนี้ให้ผมหน่อยนะครับ แต่ผมว่าสเต็ปต่อไปต้องมี DevSecDesignUnitUATPerformanceLoadTestDatabaseDataInfraOps ประมาณว่าฉันทำเองหมดทุกอย่าง ถ้าให้ Requirement เองได้ด้วยนี่ เรียกได้ว่าเป็นเจ้าของกิจการละ เดี๋ยวเพิ่มคำว่า “Req” เข้าไปให้อีกคำนึง โอยย… ทำนู่นทำนี่เยอะยัง Shift Left ทำไหวไหม ทำไม่ไหว เพิ่มคน! วนไป

บริษัทไหนใหญ่เพียงพอ มีโครงสร้างที่ดี คุณมี DevOps Engineers, Platform Engineers, SREs ฯลฯ ช่วยนะครับ น้อง ๆ มือใหม่ไม่ต้องตกใจไป

นี่แหละมิติของวิธีปฏิบัติที่เปลี่ยนแปลงไป

ผู้คนและการเปลี่ยนแปลง

คิดว่าหลายคนคงเคยได้ยินคำว่า “Digital Transformation” คำนี้เคยฮ็อตฮิตอยู่พักหนึ่ง จากที่ผมเคยสัมผัสมาในหลาย ๆ ที่ ตัวเนื้องานก็วนเวียนอยู่กับเรื่องราวที่ผมเล่ามายืดยาวนี่แหละ การเปลี่ยนกระบวนการทำงาน การนำเครื่องมือที่ทันสมัยมาช่วยในการทำงาน การทำอะไรในแบบ “อัตโนมัติ” เป็นต้น และเราอาจจะเคยได้ยินว่า หัวใจของการ Transformation นั้นคือผู้คนต่างหาก

ย้อนกลับไปที่ซีรี่ย์ 3 Body Problem ฉากที่เอเลี่ยนสนทนากับมนุษย์ว่าแต่ละช่วงของวิวัฒนาการของมนุษย์นั้นใช้เวลาสั้นลงเรื่อย ๆ แบบก้าวกระโดด จากการเดินป่าล่าสัตว์ สู่ระบบเกษตรกรรม มาเป็นระบบอุตสาหกรรม การคิดค้นปรมาณู เข้าสู่ยุคคอมพิวเตอร์ และต่อจากนี้การเปลี่ยนแปลงเวฟใหญ่ ๆ มีแนวโน้มจะเกิดขึ้นภายในหนึ่งช่วงอายุคนเท่านั้น

Revolution of Human (Image by vectorpouch on Freepik)

แปลว่าตั้งแต่เกิดจนตาย เราคงได้เผชิญกับการเปลี่ยนแปลงแบบพลิกกระดานหลายครั้ง

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

ในขณะที่เรานอนหลับ ไปเที่ยวต่างประเทศ เล่นสงกรานต์…

ผมเชื่อว่ามันมีคนที่กำลังเดินหน้าวิจัย Quantum Chip

มีคนที่กำลังเขียนโค้ดเพื่อที่จะปล่อยออกเป็นแอปเวอร์ชันใหม่

น้ำแข็งขั้วโลกกำลังละลาย โลกกำลังร้อนขึ้น

มีการพัฒนาและเทรน AI โมเดลใหม่ ๆ

และมี PO หรือ User ที่กำลังคิด Requirement(s) ใหม่ ๆ มาบอกคุณในวันพรุ่งนี้… หรือหนักกว่านั้นบางคนอาจจะกำลังคิดที่จะเปลี่ยน Requirement(s) ที่เพิ่งบอกคุณและทีมไปเมื่อวาน… เจี๊ยกกกกกก

Agile บอก จง Embrace Changes

ส่วนหัวหน้าบอก ทำงานที่สั่งก่อนสิเฟ้ยย ส่งให้ตรงเวลาด้วย อย่าเลท

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

มีคนเคยบอกผมว่าการทำ Transformation ก็เหมือนเรากำลังซ่อมรถขณะที่รถกำลังวิ่งอยู่ มันยากแบบนั้นแหละ (รูปนี้ผมใช้ Bing Create สร้างขึ้นมา ผมจำได้ว่ารูปที่ผมเคยเห็นก่อนนั้นดีกว่านี้มาก)

ผมยกตัวอย่างจากปัญหาที่น่าจะใกล้ตัว Developer ก่อนเลย ก็คือ Technical Debts ที่เกิดขึ้นจากการที่เราไม่อัพเกรด Technical Stack ของซอฟต์แวร์ที่เราโค้ด ถ้าพูดให้ชัดขึ้นแบบ Java คือบางระบบทำงานอยู่บน Java 8 อยู่ตั้งแต่อดีตกาลนาน ยื้อไม่ทยอยอัพเกรด หันมาดูปัจจุบัน เผลอแป๊บเดียวไปเวอร์ชัน 21 (LTS) แล้ว (จริง ๆ ก็ไม่แป๊บเท่าไหร่นะครับ) กลายเป็นว่าอัพเกรดไม่ไหวแล้ว Debts เยอะจนล้มละลาย

จังหวะที่จะเปลี่ยนจึงเป็นสิ่งสำคัญที่ต้องวางแผน

ตัวอย่างที่ใกล้ตัวขึ้นอีกนิดที่มีอาจารย์เน้นใน Live Coaching Session ของ Java Bootcamp ด้วย คือการ Refactoring Codes ถ้าเราแก้ไขเพิ่มเติมโค้ดไปเรื่อย ๆ โดยทู่ซี้ไม่ Refactoring เลย นานเข้า ๆ ก็ไม่ต่างกันครับ หนี้ (Debts) จนล้มละลาย โค้ดจะซับซ้อนจนใครก็ไม่อยากแก้ไข ไม่อยากทำความเข้าใจ อันนี้เป็นมุมมองของความเปลี่ยนแปลงในหน่วยเล็ก ๆ ระดับซอร์สโค้ดที่เกิดขึ้น

ในระดับที่ใหญ่โตขึ้น ผมได้ยกเอาข่าวในช่วงนี้ที่คุณ Jensen Huang CEO ของบริษัททำชิปยักษ์ใหญ่ NVIDIA ออกมาบอกว่า คนในอนาคตไม่จำเป็นต้องเรียน Coding อีกต่อไป ซึ่งปฏิเสธไม่ได้ว่าในช่วงจุดเวลานี้ของปี 2024 กระแสข่าว AI แย่งงานคนนี่ยังไม่แผ่วสักเท่าไหร่ ผมจึงถามน้องคนหนึ่งใน Workshop ว่า “คิดว่าจะตกงานเพราะ AI ไหม” น้องเขาตอบว่า “ต้องไม่ตก” ผมชอบในความมุ่งมั่นของจิตวิญญาณน้องเขามาก

ทำให้ผมไม่เป็นห่วงน้อง ๆ ที่ได้มาเข้าร่วม Java Kampus Workshop ครั้งนี้เลย ผมเชื่อว่าทุกคนได้แสดงความเป็น “นักเรียน” ออกมาอย่างชัดเจน แค่รักษามันไว้ให้ดี

คนที่เรียนรู้เป็นตกน้ำไม่ไหล ตกไฟไม่ไหม้ และตกงาน เอ๊ย ไม่ตกงานเพราะ AI

จุดจบและจุดเริ่มต้น

โครงการ KBTG Kampus ClassNest: Java Software Engineering Bootcamp นี้กินระยะเวลายาวนานเป็นเดือนเลยครับ ระหว่างที่เรียนเข้าคอร์สจนมาถึง Intensive Workshop นี้ แทบทุกคนก็ทำงานประจำควบคู่กันไปด้วย

จบหลักสูตรสักที หลายคนคิด

งานเลี้ยงย่อมมีวันเลิกรา บางคนบอกว่า เราพบกันเพื่อจาก

แต่ผมบอกว่า เราจบเพื่อเริ่มต้นใหม่

เหมือนเราดูซีรีย์จบหนึ่งตอน เราก็ได้เริ่มดูตอนใหม่

เรากินเบียร์จบหนึ่งแก้ว เราก็ได้ซดแก้วใหม่

เราจบกับแฟนเก่าไป เราก็ได้เวลามีแฟนใหม่ (อันนี้มันใช่เรอะ!)

จุดจบคือจุดเริ่มต้น โดยเฉพาะกับการเรียนรู้

แล้วการเรียนรู้จะเป็นเรื่องสนุก

แล้วจุดจบจะไม่ใช่เรื่องเศร้า

เรียนจบหลักสูตรกันไปหนึ่ง ก็ได้เวลาเรียนรู้เรื่องใหม่กันแล้ว!

ซึ่งผมว่าทุกคนไม่เศร้าหรอก… จบ Bootcamp สักที ดีใจจังเล้ยยยยยยย

สำหรับกระผมเองก็เรียกได้ว่ามีส่วนร่วมตั้งแต่เริ่มต้นโครงการ ตั้งแต่ช่วงออกแบบหลักสูตรร่วมกับทีมงานและคณะอาจารย์ผู้สอน ต้องบอกว่าโครงการนี้มีความท้าทายหลายอย่างมากที่ต้องฟันฝ่า แน่นอนมันไม่ได้ Perfect พวกเราเข้าใจและน้อมรับคำชี้แนะติชม เพื่อนำไปปรับปรุงโครงการใหม่ในโอกาสหน้า สุดท้ายนี้ขอขอบคุณน้อง ๆ Software Engineers รวมไปถึงทีมงานเบื้องหน้าเบื้องหลังทุกท่านที่ทำงานอย่างตั้งใจ อดหลับอดนอน ทำงานล่วงเวลาเพื่อให้โครงการ KBTG Kampus ClassNest เราดำเนินมาถึงวันนี้ได้ หวังว่าจะได้ร่วมงานกับทุกคนในโปรเจคที่สนุก ๆ กันอีกในอนาคต

“The end is not the end, only the new beginning.” Shula said to Clive, Final Fantasy XVI DLC The Rising Tide [PS5]

Happy Learning!

สำหรับใครที่ชื่นชอบบทความนี้ อย่าลืมกดติดตาม Medium: KBTG Life เรามีสาระความรู้และเรื่องราวดีๆ จากชาว KBTG พร้อมเสิร์ฟให้ที่นี่ที่แรก

--

--

jo@sabotender
KBTG Life

principal DEVelopment eXcellence engineer — DEVX@KBTG / Full-time Daddy / Console Gamer & Gunpla Collector