ทำไมสตาร์ตอัปถึงหลีกเลี่ยง Java?
(news.ycombinator.com)ทำไมสตาร์ตอัปถึงหลีกเลี่ยง Java? คำตอบต่อคำถามที่ถูกโพสต์บน HN
- เหตุผลใหญ่ที่สุดคือ ecosystem ของ Java พังไปแล้ว และ Maven/Gradle ก็น่าหดหู่มาก
- หลีกเลี่ยงเพราะนักพัฒนาที่ยึดติดกับ Spring
- เพราะมักสับสนว่า Java คือ hibernate/springboot
- Java คือการเขียนโค้ดองค์กรที่น่าเบื่อ ไม่ใช่ของใหม่สุดฮิตแบบ Rust
- ถ้าจำเป็นต้องใช้ JVM การใช้ภาษาอื่นอย่าง Kotlin หรือ Clojure จะดีกว่า
- ในปี 2022 การบอกว่าสตาร์ตอัปใหม่ของคุณใช้ Java ก็เหมือนกับการบอกว่าใช้ Cobol
- ครั้งหนึ่งมันเคยดูเท่และอินเทรนด์ แต่แล้ว Oracle ก็ปรากฏตัวขึ้น
47 ความคิดเห็น
ขอโหวตให้ประโยคสุดท้าย หลังจาก Oracle เข้ามาถือครองก็เริ่มถดถอย
ก็รู้อยู่แก่ใจอยู่แล้วว่าพวกเขาไม่สามารถแบกรับต้นทุนกับกำลังคนได้ แล้วจะพูดอะไรอีก...
Maven/Gradle และพวกนั้นชวนสยอง
ดูจากตรงนี้ก็เหมือนจะบอกเป็นนัย ๆ ว่าระดับของผู้เขียนเป็นยังไง
รับฟังคำแนะนำจากรุ่นพี่แล้วนะครับ
ข้อดีที่หาคนสมัครได้ง่าย ก็อาจกลายเป็นข้อเสียในแง่ว่าใคร ๆ ก็สมัครมาได้เหมือนกันนะครับ
คงมีทั้งคนที่เป็นรุ่นเก๋าซึ่งเชี่ยวชาญ JVM จนแตกฉาน รวมถึง Kotlin และ Scala ด้วย และคนที่อยู่ในวงการ SI มีประสบการณ์ Java มากกว่า 10 ปี แต่ไม่มีความตั้งใจจะพัฒนาทักษะทางเทคนิค ไม่รู้จักแม้แต่ Stream API และยังคงติดอยู่กับไวยากรณ์แบบเดิม ๆ ในยุคนั้นต่อไป ถ้ารับคนด้วย golang หรือ rust สัดส่วนของคนแบบหลังน่าจะลดลงได้มากพอสมควร ส่วน Python นี่ไม่แน่ใจเหมือนกัน...
การย้ายจาก Java ไป Kotlin ไม่ได้ยาก และการย้ายจาก JSP ไป Thymeleaf ก็ไม่ได้ยากเช่นกัน แค่มันมีความไม่สะดวกเรื่อง reference เท่านั้นเอง ไม่ว่าจะทำอะไรก็ตาม ลองเริ่มจากเรื่อง object, inheritance และการออกแบบเชิงโครงสร้างก่อน การไปยึดติดกับไลบรารีหรือเครื่องมือเสริมต่าง ๆ ก็มีแต่จะพิสูจน์ว่าคุณยังเป็นมือใหม่เท่านั้น
ส่วนตัวผมคิดว่า Java เป็นภาษาที่มีประวัติยาวนาน จึงน่าจะมีปัญหาเรื่องความไม่สมดุลของข้อมูลค่อนข้างมาก
ไม่ว่าอย่างไร มันก็เคยเป็นภาษาที่ครองยุคสมัยหนึ่งมาก่อน จึงยังมีผลผลิตทางข้อมูลจากยุคนั้นหลงเหลืออยู่อีกมาก และแม้จะผ่านการออกรุ่นใหม่มานับครั้งไม่ถ้วนแล้ว ผลผลิตเหล่านั้นก็ยังถูกผลิตซ้ำราวกับว่ายังใช้ได้อยู่ในปัจจุบันอยู่บ่อยมาก
ผมจำได้ว่าการพยายามค้นหาแนวทางใหม่ที่เหมาะกับเวอร์ชันใหม่ ๆ นั้นยากมาก
ไม่ใช่ว่าภาษาอื่นจะไม่เป็นแบบนี้ แต่ถ้าจะเลือกภาษาที่มีความกระจัดกระจายสูง Python กับ Java ก็น่าจะเป็นสองตัวอย่างที่ชัดเจน
แต่ Python ยังได้รับการประเมินว่ายอดเยี่ยมในแง่ความเร็วในการพัฒนา จึงดูเหมือนว่าสตาร์ทอัพยังคงรับคนที่ใช้มันอยู่บ่อย ๆ
อย่างไรก็ตาม เหตุผลนั้นน่าจะต่างจากเหตุผลที่สตาร์ทอัพหลีกเลี่ยง Java
[เหตุผลที่สตาร์ทอัพหลีกเลี่ยง Java]
[แต่เหตุผลที่สตาร์ทอัพควรเลือก Java]
[แต่เหตุผลที่ควรคิดทบทวน]
ไม่ว่าจะมองว่า Java ดีหรือไม่ดี สิ่งที่สัมผัสได้คือ Java ดูเหมือนจะไม่ใช่กระแสหลักของสตาร์ทอัพในต่างประเทศ
ผมเคยทำงานวิเคราะห์เทคโนโลยีเพื่อการเข้าซื้อกิจการของบริษัทต่างประเทศ และไม่มีที่ไหนใช้ Java เลยแม้แต่แห่งเดียว ที่น่าสนใจคือกลับมี .NET เยอะกว่าที่คาดไว้
พอเคยมีประสบการณ์แบบนั้นมาตั้งแต่เมื่อ 2~3 ปีก่อน ก็เลยรู้สึกว่าเป็นเนื้อหาที่เห็นด้วยครับ
ผมเองก็ไม่ค่อยชอบเพราะ
mavenเยิ่นเย้อเกินไปแต่กลายเป็นว่า
gradleก็น่ากลัวไม่แพ้กันสินะสำหรับผม
npmน่ากลัวกว่าอีกนะ;แล้วก็รู้สึกว่าเอา
cobolมาเกี่ยวด้วยนี่มันเกินไปหน่อยหรือเปล่าหรือเพราะเขียนกันในหมู่นักพัฒนาบริษัทใหญ่เป็นหลักมั้ง 555
ยังไงก็ตาม ทุกครั้งที่เห็นภาพที่ Java ถูกด่าแบบเหมารวมโดยไม่ลืมหูลืมตาก็รู้สึกขำดีนะ
พอไล่ดูแต่ละกรณีก็จะเห็นประสบการณ์ด้านมืดของแต่ละคนโผล่ออกมา
Java เคยเฉื่อยเกินไปมาก
โดนด่าก็สมควรอยู่
ช่วงนี้เหมือนจะเริ่มเร่งเครื่องบ้างแล้ว แต่ผมคิดว่าก็ควรโดนด่าให้มากกว่านี้อีก
อย่างไรเสียเมื่อยุคสมัยเปลี่ยนไป ภาษาอื่นก็จะขึ้นมาเป็นกระแสหลักอีกอยู่ดี ไม่ใช่ว่าสตาร์ตอัปมีขั้นตอนการตัดสินใจที่เรียบง่ายกว่าในการนำกระแสใหม่ ๆ มาใช้ และเมื่อภาษาที่พวกเขาใช้อยู่กลายเป็นกระแสหลัก พวกเขาก็จะก้าวพ้นความเป็นสตาร์ตอัป ส่วนบริษัทขนาดใหญ่มีขั้นตอนการตัดสินใจที่ซับซ้อนและมีผลประโยชน์เกี่ยวข้อง จึงมีความต่างตรงที่จะนำมาใช้ก็ต่อเมื่อมั่นใจในเสถียรภาพแล้วหรือเปล่า
COBOL ที่ปรากฏตัวในปี 1959 เพิ่งเลือนหายไปจากวงการการเงินเมื่อเข้าสู่ศตวรรษที่ 21 อนึ่ง Java ที่หลายคนมองว่าไม่ค่อยดีนั้นก็เริ่มต้นมาในฐานะโอเพนซอร์ส และครั้งหนึ่งก็เคยเป็นภาษาที่ได้รับความนิยมสูงสุดในกลุ่ม SOHO เช่นกัน และภาพลักษณ์ว่า Java เป็นขององค์กรใหญ่ก็ยิ่งชัดขึ้นหลังจาก Oracle เข้าซื้อกิจการ และในเกาหลีเองก็มีการเกิดขึ้นของเฟรมเวิร์ก e-Government ที่ขับเคลื่อนโดยภาครัฐ
ผมสงสัยว่าความเชื่อผิด ๆ ที่ว่า 'Java ได้รับความนิยมแค่ในเกาหลี' เริ่มต้นมาจากไหนกันแน่ ในเกาหลีเองถ้าจะเรียกว่าบริษัท IT ใหญ่ ๆ ก็มีอยู่แค่สองที่ในกลุ่ม NekaRa และทั้งสองที่ก็ใช้ Java เลยทำให้เป็นแบบนั้นหรือเปล่า?
แน่นอนว่าในสหรัฐฯ มีฐานวิศวกรที่กว้างกว่ามาก จึงมีข้อได้เปรียบในการตั้งทีมด้วยภาษาอื่นอยู่บ้าง แต่แม้จะรวมถึง FAANG แล้ว Java ก็ยังเป็น tech stack ที่พบได้ทั่วไปมากในบริษัท IT ของอเมริกาทั้งหมด
เพราะเป็นบริษัทขนาดใหญ่มาก ความแตกต่างในแต่ละทีมจึงสูงมาก แต่ Amazon ถึงขั้นมีเฟรมเวิร์กมาตรฐานภายในบริษัทเป็น Java เลย (ได้ยินมาว่าในเวอร์ชัน 2 เคยใช้ Spring แล้วตอนนี้เปลี่ยนเป็น Guice แล้ว) ส่วน Google เท่าที่ผมทราบคือประมาณครึ่งหนึ่งเป็น C++ / Java และก็มีบางทีมที่ใช้ Python ด้วย ส่วน Apple เท่าที่ผมรู้ เว็บเซอร์วิสส่วนใหญ่ก็น่าจะรันอยู่บน Java
Netflix นี่ยิ่งไม่ต้องพูดถึงเลย ทั้ง Hystrix, Zuul, Eureka ก็ล้วนสร้างโดย Netflix ทั้งนั้น จึงน่าจะเป็นบริษัทที่ใช้ Spring เก่งที่สุดในโลกก็ได้
Facebook เองส่วนใหญ่จะเป็น C++ หรือไม่ก็ Hack แต่เท่าที่ทราบก็มีบางทีมที่ใช้ Java อยู่
Twitter เองก็เท่าที่ทราบ ตอนแรกเขียนด้วย Ruby แล้วค่อยย้ายไป Scala ซึ่งเป็นภาษาในตระกูล JVM และนอกจากนี้ ถ้าเป็นบริษัทใหญ่อย่าง Atlassian, VMware, Red Hat ฯลฯ กลับจะหาบริษัทที่ไม่ใช้ Java ได้ยากกว่า
Kafka, Hadoop และอีกหลายอย่างก็ล้วนรันบน JVM ดังนั้นต่อให้ไม่ได้ใช้ Java กับบริการโดยตรง ก็น่าจะแทบไม่มีบริษัทไหนที่ไม่จำเป็นต้องใช้ Java เลยจริง ๆ นะ
ไม่มีใครปฏิเสธได้ว่าที่ผ่านมามีการใช้ Java กันอย่างแพร่หลาย ดูเหมือนว่านั่นจะค่อนข้างห่างจากประเด็นหลักของบทความนี้นะครับ
ตัวบทความของคุณกำลังพูดถึงบริษัทขนาดใหญ่ทั่วไปโดยไม่ขึ้นกับประเทศอยู่แล้ว แต่ในคอมเมนต์กลับเห็นการพูดถึงทำนองว่า "ในเกาหลีเป็นแบบนั้น" หรือ "เป็นแบบนั้นเฉพาะในเกาหลี" เยอะผิดสังเกต เลยอยากทักไว้ครับ
ไม่ใช่ว่ามีแค่ในเกาหลีที่ใช้ Java กันมาก แต่ก็ดูเหมือนว่าในเกาหลีจะใช้ Java กันมากเป็นพิเศษจริง ๆ ตัวอย่างเช่น ในผลสำรวจของ JetBrains เมื่อปีที่แล้วมีข้อความว่า “Java เป็นภาษาที่ถูกใช้งานมากที่สุดในเกาหลี จีน และเยอรมนี โดยสัดส่วนการใช้งาน Java ในเกาหลีอยู่ที่ 53% จีน 47% และเยอรมนี 33%” ปรากฏการณ์นี้ก็คงได้รับอิทธิพลไม่น้อยจากการมีอยู่ของเฟรมเวิร์ก e-Government รวมถึงหลักสูตรการเรียนการสอนเขียนโค้ดที่ได้รับการสนับสนุนงบประมาณจากรัฐ ซึ่งหลายท่านก็ได้กล่าวถึงไว้มากในคอมเมนต์เช่นกัน
พอได้อ่านคอมเมนต์บางอันก็ทำให้นึกถึงบทความเกี่ยวกับ C++ ที่เคยลงมาก่อนหน้านี้เลยนะ ดูเหมือนว่าในคอมมูนิตี้นักพัฒนาของเกาหลี C++ กับ Java จะถูกยกขึ้นแทบเป็นของศักดิ์สิทธิ์ไปแล้วจริง ๆ 555 แค่เริ่มวิจารณ์เมื่อไหร่ก็เหมือนกดปุ่มกระตุกของคนจำนวนมหาศาลทันที..
แน่นอนว่าก็มีเหตุผลที่ Java กวาดตลาดในประเทศได้เหมือนกัน แต่จะให้จับ C++ มัดรวมกับ Java ก็ดูจะนิดนึง.. ฮ่าๆ
คำว่า "ปุ่มกระตุ้นอาการ" ดูเหมือนจะไม่ใช่ถ้อยคำที่เหมาะสมนัก เพราะเป็นการสื่อถึงอีกฝ่ายในทางไม่ดี
เลยขออนุญาตพูดด้วยความหวังว่า เราจะเป็นชุมชนที่ให้เกียรติกันและกันมากขึ้นอีกสักนิด ขอโทษด้วยนะครับ
เห็นด้วยครับ/ค่ะ ดูเหมือนไม่จำเป็นต้องขอโทษนะครับ/ค่ะ
ผมคิดว่าไม่ใช่เพราะสตาร์ตอัปหลีกเลี่ยง Java เสียทีเดียว แต่เป็นเพราะข้อดีของภาษา/เฟรมเวิร์กอื่นมีมากกว่า อย่างไรก็ตามผมก็เห็นด้วยว่าระบบนิเวศ Java/Spring แย่กว่าที่คิด พูดตรง ๆ ว่าถึงจะเป็นนักพัฒนา Spring แต่ก็ไม่ได้ชอบ Spring เป็นพิเศษ และเพราะมีนักพัฒนาที่เคยพัฒนาเว็บแอปพลิเคชันในสภาพแวดล้อมอื่นนอกจาก Java (ซึ่งในทางปฏิบัติก็แทบเป็นคำพ้องกับ Spring) ไม่มากนัก เลยยิ่งรู้สึกว่าปัญหานี้หนักขึ้น
Spring
Java
ข้อดีของ ecosystem บน JVM ก็มีชัดเจนอยู่ ดังนั้นในโปรเจ็กต์ใหม่ Kotlin แทบจะเป็นสิ่งจำเป็น และถ้าไม่มีเหตุผลชัดเจนว่าต้องใช้ Spring ก็ควรเริ่มด้วยเฟรมเวิร์กเบา ๆ อย่าง ktor จะเหมาะสมกว่า สำหรับข้อเสียที่ยกมานี้ก็มักมีคนบอกว่าเป็นเพราะออกแบบผิดหรือยังไม่เข้าใจปรัชญา Spring ดีพอแล้วค่อยพัฒนา แต่ OOP มันก็ทำได้ในภาษาอื่นเหมือนกัน..
ท่ามกลางช่องคอมเมนต์ที่ทั้งรกและเต็มไปด้วยการโจมตีกัน นี่เป็นคอมเมนต์ที่ชวนให้เห็นด้วยมากครับ
ผมเห็นด้วยว่าควรนำภาษาและเฟรมเวิร์กใหม่ ๆ มาใช้ให้เชิงรุกมากกว่านี้ แต่พูดกันตามตรง ความจริงในบ้านเราตอนนี้ก็คือ แม้จะเพิ่งเริ่มโปรเจกต์ใหม่สด ๆ ก็ยังมีคนจำนวนมากเลือก Java 8 ตามความเคยชินแทน Java 17 ซึ่งเป็นเวอร์ชัน LTS ล่าสุด โดยไม่มีเหตุผลที่สมเหตุสมผลอะไรเลย ถ้าไปดูตามที่อย่างบล็อก Tistory ก็จะเจอโพสต์แนว ๆ “วิธีดาวน์โหลด Java 1.8” ที่ลงวันที่เป็นปี 2022 ได้ไม่ยากเลย พอเห็นแบบนั้นก็เลยรู้สึกว่าที่หลายคนแถวนี้แสดงท่าทีเกลียด Java อย่างหนักก็คงไม่ใช่เรื่องไร้เหตุผล
แต่ถึงอย่างนั้น ผมก็คิดว่าปัญหาเหล่านี้ไม่ได้มีสาเหตุมาจากตัวภาษา Java เองเพียงอย่างเดียว ดูจะเป็นวัฒนธรรมที่ต่อต้านการเปลี่ยนแปลงซึ่งเหมือนจะหนักเป็นพิเศษในบ้านเรา และการระบาดของโค้ดแบบคัดลอกแล้ววางโดยไม่มีพัฒนาการ มากกว่าจะเป็นปัญหาใหญ่จริง ๆ เสียอีก ที่จริงแล้วผมกำลังทำงานดูแลรักษาโปรแกรมหลายประเภทที่คล้ายกันซึ่งพัฒนาด้วย C# อยู่ และแม้จะคิดว่าตัวภาษาดีกว่า Java แต่ต่อให้ภาษาดีแค่ไหนก็ไม่มีทางป้องกันความสยดสยองของโค้ดที่คนก่อนหน้าทำแบบขอไปทีด้วยการคัดลอกโค้ดโปรเจกต์เก่ามาแปะได้อยู่ดี ที่แย่กว่านั้นคือตอนนี้จากการเปลี่ยนแปลงของสภาพแวดล้อมภายนอก ทำให้โค้ดที่ซ้ำ ๆ แบบนั้นจำนวนมากต้องถูกเปลี่ยนใหม่ทั้งหมดภายในสิ้นปีอย่างไม่มีทางเลี่ยง ยิ่งน่าหวาดหวั่นเข้าไปอีกครับ
ดูจะเป็นประเด็นที่กดปุ่มอารมณ์กันเฉพาะในประเทศเลยนะครับ
คงยากที่จะเลิกใช้ Java ที่ใช้กันมาเยอะตั้งแต่ก่อนแล้ว และเพราะยังต้องการคนอยู่เรื่อย ๆ สถาบันสอนที่รัฐสนับสนุนก็ยังปั๊มคนสาย Spring ออกมาด้วยหลักสูตรแบบเดิม ๆ..
ผมเลยรู้สึกว่าวงจรแบบนี้คงตัดขาดได้ยากนะครับ
ส่วนความพยายามที่จะใช้ Kotlin + Spring ผมมองในแง่ดีครับ
พอใช้ Docker ไปเรื่อยๆ...
ขนาด Docker image ก็ใหญ่ขึ้นโดยใช่เหตุด้วย
แถมยังกินเวลานานกว่าจะรันได้อีก ฯลฯ...
ช่วงนี้พอทุกคนใช้ Docker กัน ก็เลยเหมือนจะกลายเป็นตัวเลือกที่คนไม่ค่อยชอบกันแล้ว..
ระบบนิเวศของ Java ไม่เคยพังเลยสักครั้ง
มีโปรเจกต์โอเพนซอร์สนับไม่ถ้วน และผมมองว่าระหว่างการออกรุ่นใหม่ ๆ ก็สะท้อนเทรนด์การพัฒนาปัจจุบันได้เร็วกว่าภาษาอื่นด้วยซ้ำ
gradle/maven เป็นเพียงตัวเลือกของ build tool ไม่ได้เป็นสิ่งจำเป็นเสมอไป
ยังมี build tool อื่น ๆ อีกมาก และสามารถใช้สิ่งที่ต้องการได้
ทำไมใน Node ถึงใช้ npm? ก็เพราะมันสะดวกจึงใช้กัน gradle/maven เองก็สะดวกจึงมีคนใช้กันมากเช่นกัน
แม้ว่า Java จะมีเฟรมเวิร์กมากมาย แต่เหตุผลที่ใช้ spring ก็เพราะความยืดหยุ่นในการขยาย ความสะดวกในการจัดการโปรเจกต์ และประสิทธิภาพที่เสถียร จึงทำให้ยังคงได้รับความนิยมมาจนถึงตอนนี้
ถ้าดูว่าทำไมสตาร์ตอัปถึงเปลี่ยนมาใช้ Java เมื่อขนาดธุรกิจใหญ่ขึ้น ส่วนใหญ่ก็ตัดสินใจเปลี่ยนเพราะการจัดการโปรเจกต์ที่มีเสถียรภาพ
ตอนที่พัฒนาแบบทีมเล็กด้วย Python หรือ Node จนถึงตอนนี้อาจไม่มีปัญหา แต่เมื่อธุรกิจประสบความสำเร็จจนมีนักพัฒนา 100 คน หรือ 1,000 คนมาทำโปรเจกต์เดียวกัน ก็จะใช้ข้อดีของ Python หรือ Node ได้ยากขึ้น และกลับกันข้อเสียจะมีมากขึ้น
ผมคิดว่านั่นจึงเป็นเหตุผลที่เปลี่ยนมาใช้ Java ซึ่งสามารถควบคุมคุณภาพในโปรเจกต์ขนาดใหญ่และยังรับประกันความเสถียรได้
ถ้ามีภาษาทดแทนที่ดีกว่า Java จริง ๆ ก็คงหันไปใช้ภาษาทดแทนนั้นกันเร็วกว่านี้ไม่ใช่หรือ??
สุดท้ายนี้ บริการที่สร้างด้วย Java มีอุปสรรคในการเริ่มต้นค่อนข้างสูง และต้นทุนด้านอินฟราสูง ดังนั้นในช่วงเริ่มต้นของสตาร์ตอัปจึงมักเห็นว่าพวกเขาเลือกใช้ภาษาที่นำไปใช้ได้ง่ายและรวดเร็ว โดยไม่ต้องเสียต้นทุนสูงและเวลาเป็นจำนวนมากไปกับการตั้งค่าในช่วงแรก
อย่างแรก ถ้าจำกัดแค่ในประเทศ นักพัฒนา Java ล้นตลาดอยู่แล้ว จะพูดให้แม่นคือมีแต่นักพัฒนา Spring ไม่ใช่นักพัฒนา Java จริง ๆ เพราะเฟรมเวิร์ก e-Government ใช้ Spring ก็เลยมีแต่นักพัฒนาแบบสายการผลิตที่เรียน Spring อย่างเดียวแล้วออกมาทำงาน พอคนแบบนั้นมีประสบการณ์กันเต็มตลาด มันก็เลยเป็นแบบนี้ ความหลากหลายก็ไม่มี และ ecosystem ของภาษาก็พังไปแล้ว มีคนจำนวนมากที่เรียกตัวเองว่านักพัฒนา Java แต่ถ้าไม่มี Spring ก็สร้างกระดานข่าวยังทำไม่ได้
ประเด็นของคำถามนี้คือ "สตาร์ตอัป" สิ่งสำคัญคือ "ความเร็วในการพัฒนา" มากกว่า "ความเสถียร/การขยายระบบ"
สำหรับสตาร์ตอัป เวลาเป็นเงินเป็นทอง!
(ถ้าภายหลังมีทั้งเวลาและเงิน ค่อยใช้ Java?)
และความนิยมของ Java ก็คงไม่ใช่ความเฉพาะตัวของเกาหลีเท่านั้น ตอนนี้ก็ยังติด top 3 ของภาษาโปรแกรมยอดนิยม
ดูเหมือนว่าเรื่องการย้ายไปใช้ Java ด้วยเหตุผลแบบนั้นจะใช้ได้แค่ในเกาหลีเท่านั้น
บริษัทใหญ่มักมีระบบจำนวนมากที่สร้างด้วย Java ดังนั้นเหตุผลหลักจึงเป็นเรื่องการบำรุงรักษา
เรื่องที่ Oracle จะเข้ามาหรือไม่เข้ามา จริง ๆ แล้วสำหรับบริษัทแนวหน้าโดยส่วนใหญ่มักไม่ได้เกี่ยวข้องอะไรนัก... แม้แต่ Naver, Kakao, Line, Coupang, Baemin ระบบหลักก็ยังเป็น Java กันทั้งหมด บริษัทเกมอย่าง Nexon ก็เขียนเครือข่ายแบ็กเอนด์ภายในด้วย Java เช่นกัน
ผมไม่เห็นด้วยเลยกับคำบอกว่าระบบนิเวศของ Java พังไปแล้ว หรือว่า Gradle แย่มาก
ผมไม่เข้าใจตรรกะเลยว่าการที่ Java เป็นภาษาที่เก่าแล้วและมีนักพัฒนา Java เยอะ จะหมายความว่าคนเหล่านั้นไม่อยากเรียนรู้สิ่งใหม่ ๆ หรือคุณภาพด้อยลงได้อย่างไร
NekaraKubae ต่างก็ใช้ Java เป็นหลักทั้งหมด และช่วงหลังก็เพิ่งเริ่มนำ Kotlin เข้ามาใช้ทีละนิดในระดับนั้นเอง
หรือว่ากำลังจะบอกว่าตัวจริงระดับเทพอยู่กันในสตาร์ตอัป อะไรทำนองนั้นเหรอครับ? 555
คิดว่าน่าจะมีคำแปลที่เหมาะสมกว่าสำหรับฮอตชีต ('hotshit')
"การบอกว่าในปี 2022 สตาร์ทอัพใหม่ของคุณใช้ Java ก็เหมือนกับการบอกว่าคุณใช้ Cobol"
ในเกาหลี เหตุผลที่ว่าหาคนทำ Java ได้ง่ายนั้นโต้แย้งแทบไม่ไหว ส่วนคุณภาพของนักพัฒนาที่จ้างเข้ามาแบบนั้น...ก็ไม่แน่ใจนะครับ
บอกว่าระบบนิเวศของ Java พังแล้วเหรอ? แล้วทำไม Spring ถึงใช้ไม่ได้? เหตุผลสนับสนุนอ่อนเกินไปมาก
ถ้า JVM เป็นคริปโตเคอร์เรนซี Java ก็คือบิตคอยน์
55555555555555555555
มีมีมว่า Java ต้องใช้คน 2 คนขี่มาตั้งนานแล้ว ไม่ได้เกิดขึ้นลอยๆ หรอก.. แถมพอเป็นเฟรมเวิร์กมาตรฐานของภาครัฐ งาน SI ภาครัฐและหน่วยงานสาธารณะก็แทบจะถูกบังคับกึ่งๆ ให้ใช้ JAVA ....
ผมค่อนข้างเข้าใจยากกับการบอกว่า toolchain ฝั่ง Java ไม่ค่อยดีนะครับ
วิธีจัดการของ Maven/Gradle นี่ถ้าเทียบกับตอนที่เคยเจ็บตัวกับ npm มาแล้ว ถือว่าดีกว่ามาก...
ผมเองก็เริ่มต้นอาชีพด้วย Java และเคยทำงานเป็นนักพัฒนา Java อย่างเดียวในบริษัทหนึ่งอยู่ราว 4 ปี ก่อนจะย้ายบริษัทไปเรื่อย ๆ และได้ลองสัมผัสภาษาที่หลากหลายอย่าง python, ruby, go เป็นต้น และช่วงหลังมานี้ก็กำลังสานต่อเส้นทางอาชีพในฐานะนักพัฒนา Solidity
ช่วงหลังมานี้ เมื่อสตาร์ทอัพจำนวนมากเติบโตมาถึงระดับหนึ่งและเข้าสู่ช่วงที่ธุรกิจมีเสถียรภาพ ก็เริ่มเห็นหลายกรณีที่เปลี่ยนอินฟราสตรักเจอร์ส่วนใหญ่ไปเป็น Java แต่พอลองคิดดูดี ๆ ว่าทำไมถึงเปลี่ยนกันแบบนั้น
ก็รู้สึกว่าเหมือนทุกคนทำไปเพราะความเคยชินเท่านั้นเอง
นักพัฒนาระดับลีดหลายคนคุ้นเคยกับ Java และไม่ค่อยอยากเรียนรู้ภาษาอื่น สุดท้ายก็เลยเลือกใช้ Java ที่ตัวเองถนัด และเมื่อคนแบบนั้นไหลไปรวมตัวกันในสตาร์ทอัพ ก็ดูเหมือนว่าอินฟราสตรักเจอร์ทั้งหมดจะค่อย ๆ เปลี่ยนไปเป็นฐาน Java
ส่วนตัวผมไม่ค่อยเข้าใจนักว่าการรื้ออินฟราสตรักเจอร์เพียงเพราะเหตุผลว่า "คุ้นเคย" มันสมเหตุสมผลอย่างไร แต่คนเราก็โดยธรรมชาติแล้วมักไม่อยากเรียนรู้สิ่งใหม่ ๆ และด้วยความที่ ecosystem ของ Java ในเกาหลีใต้แข็งแกร่งมาก การจะเปลี่ยนแปลงสิ่งนี้ก็คงเป็นเรื่องยากมากครับ
Java, Spring เหมาะกับการให้บริการขนาดใหญ่ได้อย่างเสถียร แต่บริการของสตาร์ตอัปในช่วงเริ่มต้นมีขนาดเล็ก จึงดึงข้อดีของ Java ออกมาใช้ได้ไม่ง่ายนัก
สตาร์ตอัประยะเริ่มต้นบางแห่งมีสถานการณ์ที่ต้องทำทั้ง Front และ Back ด้วยคนจำนวนน้อย ซึ่งเมื่อเทียบกับ Java แล้ว การเขียนรวดเดียวด้วย Node.js หรือ JS จะสะดวกกว่า
สุดท้ายพอได้รับเงินลงทุนเป็นรอบซีรีส์แล้ว ก็เห็นเปลี่ยนไปใช้ Java, Spring กันหมด
อย่างที่ทุกคนทราบกันดีว่า Java มีหลายอย่างที่ปัจจุบันเรามองว่าเป็นเรื่องพื้นฐานไปแล้วตั้งแต่เวอร์ชันแรก ๆ เช่น การจัดการหน่วยความจำแบบอัตโนมัติ และในช่วงทศวรรษ 1990 ตอนที่ Java เพิ่งปรากฏตัวนั้น ก็ยังมีการใช้ภาษาที่ความผิดพลาดเล็กน้อยของนักพัฒนาส่งผลกระทบต่อความน่าเชื่อถือของแอปพลิเคชันทั้งระบบได้ง่ายกว่ามาก เช่น C หรือ C++ มากกว่าทุกวันนี้เสียอีก ในยุคแบบนั้น การมาถึงของภาษาที่แม้อาจมีการหยุดการทำงานชั่วคราว (Stop-the-world) อยู่บ้าง แต่ลดโอกาสที่บริการจะล่มไปเลยเพราะปัญหาหน่วยความจำลงได้มาก ก็นับว่าเป็นเรื่องที่สร้างความฮือฮาอย่างมาก ดังนั้น Java จึงเริ่มต้นมาพร้อมภาพลักษณ์ว่าเสถียรกว่าภาษาอื่นอย่างชัดเจนตั้งแต่ช่วงแรก และผมคิดว่าภาพลักษณ์นั้นก็น่าจะสืบต่อมาจนถึงทุกวันนี้
นอกจากนี้ ณ เวลานี้ Java ก็มีทั้งความน่าเชื่อถือและประสบการณ์ที่สั่งสมมาจากการถูกใช้อย่างแพร่หลายในบริการหลากหลายประเภทมาอย่างยาวนาน ดังนั้นอย่างที่คุณกล่าวไว้ จึงทำทั้งการปรับแต่งประสิทธิภาพและการแก้ปัญหาได้ง่าย และยังมีเครื่องมือกับโซลูชันมากมายทั้งเชิงพาณิชย์และโอเพนซอร์ส ระบบนิเวศของผลิตภัณฑ์ที่ถูกใช้อย่างแพร่หลายมีผลทำให้การแก้ปัญหาง่ายขึ้นในตัวมันเอง และการที่เมื่อเกิดปัญหาแล้วสามารถแก้ไขได้ง่ายจนลด downtime ได้ ก็ย่อมเป็นข้อได้เปรียบอย่างมากสำหรับผู้ที่ให้ความสำคัญกับความเสถียร
ส่วน Kotlin ที่ถูกพูดถึงบ่อยในคอมเมนต์อื่นนั้น ตาม คอมเมนต์ของอีกท่านใน GeekNews ระบุว่า น่าแปลกที่จนถึงตอนนี้ก็ยังมีประเด็นเรื่องบั๊กของคอมไพเลอร์หรือปัญหาความเข้ากันได้อยู่ไม่น้อย แม้จะใช้ JVM เดียวกัน และเป็นภาษาที่เปิดตัวมาเกือบ 10 ปีแล้วก็ยังเป็นแบบนี้ ดังนั้นถ้าให้ความสำคัญกับความเสถียรเป็นเกณฑ์ตัดสินอันดับแรก การเลือกสิ่งที่ผ่านการพิสูจน์มาอย่างเพียงพอด้วยกาลเวลาแล้วก็ดูน่าจะสมเหตุสมผลอย่างยิ่ง
อนึ่ง แม้ในตอนนี้อาจฟังดูแปลกมาก แต่ตอนที่ Java เพิ่งปรากฏตัวใหม่ ๆ หากยืมสำนวนจากหนังสือ 『Polyglot Programming』(2014) ของคุณอิมแบ็กจุน ก็ว่ากันว่ามัน “ให้ความรู้สึกสดใหม่ อ่อนเยาว์ จนถึงขั้นเซ็กซี่” เลยทีเดียว ในประเด็นนี้ ขอแนะนำบทแปลของบทความที่ James Gosling บิดาแห่ง Java เขียนไว้ในปี 1997
ผมคิดว่าเหตุผลที่ไปทาง Spring นั้นอยู่ที่ลักษณะเฉพาะของตลาดนักพัฒนาในเกาหลี
ในต่างประเทศ JVM ก็กำลังเปลี่ยนไปใช้ Kotlin กันเป็นส่วนใหญ่เหมือนอย่างในบทความนี้ครับ
ผมเองก็เริ่มมีภาพลักษณ์ที่ไม่ดีกับ Java เพราะพวกสาวก Spring
โดยเฉพาะในเกาหลี ถ้าบอกว่าทำ Java ก็แทบจะหมายถึง Spring Boot กันหมด เลยมีแนวคิดแบบ Java = Spring Boot อยู่บ่อย ๆ
ผมเป็นนักพัฒนาที่เขียน Java ไม่เป็น แบบนี้ก็รู้สึกดีเหมือนกันนะ
แต่ถึงอย่างนั้น เวลาสตาร์ทอัพหาคน ก็น่าจะเร็วที่สุดอยู่ดีนะ..
แต่ในเกาหลี...
ผมเองก็เคยใช้ Java อยู่ช่วงหนึ่งเหมือนกัน แต่ตอนนี้ถ้าเป็นไปได้ก็ไม่อยากใช้ Java แล้วครับ
ทำไมถึงทั้งเศร้าและขำไปพร้อมกันล่ะครับ..? 555
(เมื่อก่อนที่สตาร์ทอัพเก่าเคยใช้ Java แต่ตอนนี้ไม่ใช้แล้ว)