ลองจินตนาการถึงอนาคตของ software industry, Wiki/Software Engineering และ AI ภายใน 5 ปีถัดไป คิดว่าจะมีอะไรเปลี่ยนไปมากพอสมควร
-
junior-level dev ที่ทำงานในบริษัทเล็ก ในบริษัทที่ไม่ใช่ tech company จะถูกแทนที่ด้วย low-code platform experts มากขึ้น เพราะ low-code + AI ทำให้สร้าง apps, databases และ business logic พื้นฐานง่ายขึ้น เข้าถึงได้โดยคนที่ไม่ใช่ dev มากขึ้น หาคนที่เป็น platform experts ได้ง่าย และประหยัดเงินกว่าจ้าง dev
-
large language models จะเป็นแค่จุดเริ่มต้น ต่อไปโมเดลแบบอื่นๆ เช่น multimodal models หรือ domain-specific models จะถูก democratize ให้เข้าถึงง่ายขึ้น เช่น ChatGPT ที่ทำให้คนไม่เขียนโค้ดก็ใช้โมเดลได้ หรือพอ OpenAI เปิด API ก็กลายเป็นว่ามี AI apps เกลื่อนตลาดในช่วงไม่กี่วัน ก่อนหน้านี้จริงๆ Azure, Google และ AWS ก็มี AI service ของตัวเองอยู่แล้ว ต่อจากนี้โมเดลใหม่ๆ จะกลายเป็น API และ services มากขึ้น
-
เข้าถึงได้ง่าย ไม่ได้แปลว่า open source นะ ยิ่งด้วยความที่ OpenAI เซ็ตบรรทัดฐานไว้แล้วว่าบริษัท AI มัน massively profitable และคนยอมจ่ายเงิน $20/mo กัน แถมยังมีเรื่อง AI ethics ที่เป็นประเด็นให้ไม่ต้องปล่อยโมเดลอีก ยิ่งเป็นผู้ใช้ทั่วไปยิ่งไม่แคร์ เดาว่าน่าจะมี giants ไม่กี่เจ้าที่ทำ state-of-the-art models แต่ก็จะมี open source models เล็กๆ จำนวณมากที่คุณภาพอาจจะไม่ดีเท่า
-
โปรดักต์ส่วนมากจะเริ่ม MVP และหา product-market fit จากการใช้ low-code tools อย่าง Airtable แล้วค่อย transition ไปเป็น full-code หรือเขียนโค้ดมากขึ้นเพื่อทำงานกับ low-code ที่มีอยู่ เมื่อ domain, logic, requirements หรือ scale มันซับซ้อนขึ้นกว่าที่จะคุ้มค่ากับการใช้ low-code ต่อไป ทำให้ dev จะได้ทำโปรดักต์ที่มัน mature มากขึ้น ไม่ได้เขียนแล้วลบทิ้ง
-
งานน่าเบื่ออย่าง CRUD ที่ไม่ซับซ้อนในสเกลเล็ก จะถูกแทนที่ได้ด้วย low-code platforms + AI มากขึ้น ถ้าให้เปรียบเทียบก็เหมือนที่เราเห็น web dev ยุคนี้เขียนโค้ดกันแต่ web app เป็นหลัก เพราะงานทำ static website ไปใช้ WordPress หรือ site builders อื่นๆ กันหมด
-
เราเชื่อว่า dev จะได้อยู่กับโปรดักต์ที่ mature และซับซ้อนขึ้นเป็นส่วนมาก อยู่กับ codebase ที่หลากหลาย ซับซ้อน หรือสเกลใหญ่ขึ้น เช่นทำ product/platforms ที่มี domain model หรือ logic ซับซ้อน, bio/medical research, สร้าง low-code หรือ RPA platforms ขึ้นมาเอง หรือไม่ก็สร้าง product/app ที่มาทำงานร่วมกับ low-code platform อื่นๆ แนวคล้ายๆ ChatGPT Plugins
-
dev หลายคนจะกลายมาเป็นคนสร้างนวัตกรรมฝั่งซอฟต์แวร์เลย เช่นสร้าง frameworks, languages, paradigms, algorithms, data structures, practices ใหม่ๆ จะมีความเป็น computer scientist ในตัวมากขึ้น
-
ถึง dev ระดับ entry-level/junior จะหาง่ายขึ้น แต่ปัญหาคือความต้องการ dev ที่ทำงานที่ซับซ้อนขึ้นที่ AI ทำไม่ได้ มันจะสูงมากขึ้นไปอีก แต่ dev ระดับเก่งๆ มันมีไม่พอความต้องการ ทำให้ไม่ว่าเราจะผลิต dev มาเข้า industry เยอะขนาดไหน ก็ไม่ได้แก้ปัญหานี้ มันแค่ oversaturate ตลาดเท่านั้น
-
dev เก่งๆ ระดับ mid-to-senior ส่วนมากอาจมีบรรยากาศการทำงานที่ดีขึ้น จะไปอยู่ใน tech companies และ tech startups ที่ engineering-driven และแคร์ software engineering, engineering culture และ software craftsmanship มากกว่าบริษัทเล็กๆ ที่เน้นแค่ time-to-market และตอบโจทย์ธุรกิจเฉยๆ
-
จริงๆ ข้อข้างบนเราไม่แน่ใจเหมือนกัน เพราะเราว่าเส้นแบ่งระหว่าง low-code กับ full-code อาจจะเบลอกว่าที่เราคิด เผลอๆ dev อาจจะ oversaturate ตลาด จนนายจ้างคิดว่าไม่ต้อง treat ดีๆ ก็ได้ แต่ถ้าการแข่งขันมันสูง เค้าก็ต้อง treat dev แบบดีมากๆ อยู่ดี
ปัญหาที่กำลังจะเกิดขึ้นคือ skill gap ที่กว้างขึ้นอย่างทวีคูณ
-
ถึง barrier of entry ในการ learn to code มันต่ำ แต่มันจะมี "เหวลึกและกว้าง" ก่อนที่ dev จะทำงานในสเกลใหญ่ได้ เพราะ coding bootcamps และโครงการภาคอุตสาหกรรม ยังโฟกัสที่การผลิตแรงงานให้ภาคอุตสาหกรรม คำถามคือเราจะทำให้คนที่เป็น bootcamp newgrads เค้ากลายเป็น experienced software engineer ที่พร้อมทำงานได้ยังไง
-
การสร้างซอฟต์แวร์ใน scale ที่ใหญ่และความซับซ้อนสูง สิ่งที่ต้องมีคือประสบการณ์ในการทำงานกับ codebase ที่มีความซับซ้อนสูง ทักษะและความรู้ด้าน software craftsmanship อย่างการสื่อสารที่ดี, clean architecture, system design, domain modelling, algorithm design, API interface design, optimizations, security ซึ่งบางอย่าง AI/LLMs อาจจะช่วยได้ แต่ส่วนมากยังต้องใช้คนอยู่ดี ต้องมี fundamentals แน่นขึ้น มีชั่วโมงทำงานกับโค้ดมากขึ้น
-
คำถามคือเมื่อเรามี AI และ low-code ทำให้บริษัทต้องการ junior developer น้อยลง แต่เรามี junior dev มากขึ้นเรื่อยๆ เราจะช่วยให้เค้าข้าม gap ให้เป็น senior developers ที่มีโมเดลความคิดที่ดี มีความคิดสร้างสรรค์ แก้ปัญหาที่ซับซ้อน มีพื้นฐานอยู่พอสมควรและเรียนรู้ได้ดีได้ยังไง ในเมื่อตอนนี้เราโฟกัสแค่การผลิตแรงงาน junior เข้าตลาด
-
ส่วนตัวเชื่อว่าเราต้องช่วยกันสร้าง foundation ให้ dev ที่เข้ามาใหม่ หรือเป็น junior ได้มีประสบการณ์ตรงนี้มากขึ้น เราต้องสร้าง channel ที่ทำให้คนอยากเป็นโปรแกรมเมอร์เค้ามี mindset ที่ดีตั้งแต่ต้น มี head start ที่ดี ให้พวกเค้าได้ทำโปรเจคของตัวเองที่สนุกและมีความซับซ้อน เรียนรู้ด้วยตัวเองเพื่อพัฒนา fundamentals และ skills ให้แข็งแรงขึ้นเรื่อยๆ เราว่ามันควรจะ organic มากกว่าเป็นหลักสูตรที่บังคับว่าเค้าจะต้องเรียนอะไรในแต่ละสัปดาห์
-
เราเชื่อว่า traditional computer science education แบบในมหาลัยปัจจุบันมันเวริคในกรณีที่ 1) เด็กมี intrinsic drive ที่สนใจ fundamentals อยู่แล้ว หรืออาจารย์ทำให้เด็กสนใจได้ 2) มีอาจารย์ที่อินกับมัน และ 3) หลักสูตรและเนื้อหา align กับคนเรียนและคนสอน ถ้ามีสามอย่างนี้เราว่ามหาลัยมันจะเป็นพื้นที่ที่เจ๋งมากๆ แต่น่าเสียดายที่รู้สึกว่าไม่ใช่ทุกคนที่ได้รับประสบการณ์นี้จากการเรียนมหาลัย และดูเหมือนจะเป็นส่วนน้อยด้วยซ้ำ
-
เราเลยเชื่อว่าการเปลี่ยนโมเดลการศึกษาให้สร้าง X students ที่สร้างสรรค์มากขึ้น เรียนรู้ด้วยตัวเองมากขึ้น มี intrinsic drive ที่จะเก่งขึ้น และมีวิธีการเรียนรู้ที่ดี เลยสำคัญมากกว่าการสร้าง A students ในยุคที่ AI มันเป็น Copilot ให้เรา เราไม่ต้องรู้ทุกอย่างก็ได้
-
เราเชื่อว่าโมเดลแบบ Constructionism หรือ Lifelong Kindergarten มันจะเหมาะกับการปู fundamentals ที่แน่นให้กับ developer รุ่นใหม่มากกว่าโมเดลแบบเรียนตามหลักสูตร เพราะมันจะไม่ได้เรียนเพื่อไปสอบ แต่มันมี passion กับสิ่งที่ต้องการสร้าง อินกับ algorithms และ system design แบบอินชิบหาย มี intrinsic drive ที่ทำให้เวลาไปอ่านอะไรที่มันยากและ abstract เค้าก็ไปต่อเองได้
-
[ถึงเพื่อนเรา: เราเดาว่ามีเพื่อนเราหลายคนที่จะไม่เห็นด้วยกับเราในประโยคข้างบน แต่แกเชื่อเราปะว่าถ้าพ่อแม่ให้กินแต่สลัดคุณภาพต่ำๆ ผักไม่สด น้ำสลัดไม่อร่อยตั้งแต่เด็ก เด็กที่ไหนจะชอบสลัดวะ เค้าก็กินพิซซ่าดิ ก็ช่วยพาเค้าไป salad bar ให้เค้าทำสลัดที่เค้าชอบ อาจจะเป็นซีซาร์สลัดใส่เบคอนกรอบๆ ใส่ชีสลูกเต๋าเยอะๆ อย่าลืมดิว่าเราเรียนกันแต่ computation สอนให้เป็นคอมพิวเตอร์มาตลอด เราไม่ได้เรียน mathematics กันด้วยซ้ำ ถ้าคนยังไม่อิน ชาตินี้มันก็ไม่สนุกกับ fundamentals หรอก มันไม่ใช่ความผิดเด็ก]
-
ยิ่งเราอยู่ในยุคที่ AI มันช่วยเป็น partner in crime ในการเรียนรู้เรื่องใหม่ๆ เราตั้งคำถามฉลาดๆ และโต้เถียงกับมันได้ ทำให้การศึกษา computer science มันจะสนุกขึ้น เพราะความรู้มันเปิดกว้าง
-
กลับมาเรื่องของ software engineering เราว่ามันจะเป็นยุคที่ทุกคนต้องอยู่กับ AI Copilot อย่างเป็นธรรมชาติให้ได้ เพื่อให้ได้ output velocity ที่ตามทันคนอื่น เพราะ language model มันเก่งในเรื่องภาษาอยู่แล้ว
-
จริงๆ ก่อนยุค Copilot คนก็ก็อปวาง StackOverflow กันอยู่แล้ว ตอนนี้จะมี dev ใหม่ๆ ที่ใช้ Copilot กันตั้งแต่เริ่มเขียนโค้ด แล้วไม่ได้สนใจ fundamentals แต่มองมันเป็นแค่ black box หรือเปล่า จริงๆ ปัญหานี้มันก็ปัญหาเดิมๆ น่ะแหละ แค่มันอาจจะหนักขึ้นเมื่อมี Copilot เราว่ามันก็ต้องช่วยให้เค้าก้าวข้ามผ่านความเป็น junior ให้มาเป็น senior ให้ได้
-
เรากลัวเรื่อง innovation ในวง software สูญหายเหมือนกันนะ เพราะว่าในวงการศิลปะหรือดนตรี พอคนใช้ Midjourney สร้างงานศิลปะจนชิน แล้วมันจะมีคนสร้าง concept หรือ artstyle ใหม่ๆ น้อยขึ้นหรือเปล่า เช่นเดียวกับการที่ dev จะมี incentive ที่จะสร้าง programming language, library, frameworks, algorithms น้อยลงหรือเปล่า เพราะของเดิมมันใช้ได้
-
คนที่บอกว่าเรื่องนี้เป็นเรื่องดี มี JS framework/library น้อยลงก็ดีนี่ เราว่ามันชิบหายกว่าที่คุณคิด ถ้าโลกนี้ไม่มี Solid ที่ใช้ signals หรือ Svelte ที่ใช้ compiler เราก็จะไม่รู้เลยว่ามันมีโมเดลหรือมี API interface ที่ดีกว่า React และ LLMs มันคิด API ที่ดีกว่า หรือ algorithms ใหม่ให้เราจากศูนย์ไม่ได้ อย่าลืมว่าสุดท้ายโปรแกรมเมอร์เก่งๆ ก็ยังต้องทำงานกับโค้ดอยู่ เราต้องอ่านและเขียนโค้ดด้วย ไม่ได้มีแค่ AI ที่ทำแล้วเรานั่งสั่งมัน สุดท้ายเราก็ต้อง debug and trace มันอยู่ดีในกรณีที่โมเดลมันทำไม่ได้
-
กลับมาที่พวก software engineering skills และ fundamentals เรามองว่าถึงบางส่วนจะ learn on the job ได้ หรือคนในบริษัทจะช่วยสอนได้มากขึ้น แต่ความคาดหวังมันจะสูงขึ้นพอสมควร เราควรจะช่วยกันส่งเสริมเรื่องนี้มากขึ้น ให้คนเรียนรู้ด้วยตัวเอง ทำ side projects, learn in public กันมากขึ้น จะได้ทำงานสนุกๆ ในทีมเจ๋งๆ กัน เน้นจัด meetup/unconference เรื่อง tech ที่ลึกขึ้นมากขึ้น จะได้เก่งไปด้วยกัน
-
ถ้าในมุมที่ software engineering จะ evolve ไปยังไง บอกตรงๆ ว่าไม่แน่ใจเลยว่ามันจะ stagnant หรือมันจะมี growth explosion ยิ่งคนนอกวงการมองว่างาน dev เป็นงานที่ AI มาแทนได้ และ dev ใช้ AI Copilot มากขึ้น คิดว่าเราต้องมีแรงจูงใจให้ software engineer และ computer scientist ที่เป็นคนสร้าง frameworks, libraries/languages, technologies, tools, algorithms ให้เค้าช่วยกันพัฒนาวงการต่อไป
ปล. ข้างบนอ่านยากหน่อยนะฮะ พิมพ์ออกมาจากสมองตรงๆ เลย ไม่ได้แปลภาษาให้มันสละสลวย สมองเรามันไทยคำอังกฤษคำเป็นมาตรฐาน รบกวนไปใช้ GPT-4 ให้มันแปลให้หน่อยก็ได้ฮะถ้าแปลไม่ออกว่าเราเขียนอะไร