ส่วนตัวผมมีอาชีพหลักที่ไม่ได้เป็น Dev อยู่ แต่ทุกวันนี้คือใช้ความรู้จาก udemy นี่แหละครับ มา dev solution ต่างๆ ใช้ในที่ทำงานครับ จนแทบจะ dev เป็นหลัก งานจริงเป็นรองไปแล้ว
แต่ถ้าทำเอง ก็ต้องแล้วแต่ที่คุณถนัด และแก้ไขปัญหาด้วยตัวเองได้หากเกิดปัญหา เพราะลูกค้าเขามุ่งความสนใจใน Business Process ของเขามากกว่า ส่วนทางเทคนิคเขาก็หวังพึ่งคุณนั่นแหล่ะ ถ้าคุณเขียนแล้วแก้ไขปัญหาให้เขาไม่ได้ ชื่อเสียงของคุณก็จะพังทำให้ไม่มีเครดิตในการรับงานอื่น
Superman Model ใช้งานไม่ได้จริงในสถานการณ์จริงที่ยืดเยื้อหรอกครับ ยกเว้นไว้กรณีสถานะการณ์ฉุกเฉินเร่งด่วนมีเวลาจำกัด ตรงนี้ถึงจะใช้ Superman Model ได้ดี ใช้เงินให้เป็น และใช้คนให้ถูกกับงานนั่นคือสิ่งที่ควรทำ
เขียนโปรแกรมอ่าน id card รันเป็น local server ง่อยๆ ในเครื่อง client ให้เว็บมาเรียกเพราะนั่งกดๆ webUSB แล้วขีเกียจก็เลยใช้ node นี้่แหละ google หา lib หาวิธีเขียนชั่วโมงนึง จบ
อ่านแล้วยังไม่ค่อยเข้าใจคำถาม แต่เจอระบบงานที่รันด้วย nodejs แทบทุกอย่างก็มีอยู่ฮะ บางงานคือเหมา frontend, backend, database เลยก็ยังมี
พูดง่าย ๆ เลยก็คือ ผมเกิดคำถาม : ตกลงเรียนมาทำซ__อะไร น่ะครับ (ฮา ขำ ๆ นะ แต่มีแอบเครียด)
ตั้งแต่ C++ แล้วล่ะครับ เรียนมาแล้วไม่ได้เอามาทำงานเลี้ยงชีพ ตกลงเรียน pointer to function มาเพื่อ ?
ก็เลยมาลองถามดูน่ะครับ Node js นี่ ในโลกจริง เขาใช้ทำงานอะไรกัน
ถ้าตามที่ตอบไปทีแรกอาจจะไม่ตรงเท่าไหร่เพราะมันกล่าวครอบคลุม JS ไปเลยคือใช้ทั้ง frontend, backend, ได้จนถึง DB แต่ถ้าเอาแค่ตัว NodeJS ก็ backend ฮะ จะรวมพวก frontend ที่เป็น server-side render ไปด้วยก็ได้
คำตอบที่ผมคาดหวังก็คือ frontend เช่นอะไรบ้าง แบบฟอร์มธนาคารอะไรอย่างนี้หรือเปล่า (ผมไม่รู้เลยนะครับ)
หรือ backend ที่ว่าเช่นอะไรบ้าง เคยได้ยินมาว่ามีตำแหน่ง Database Programmer เลย (ซึ่งผมก็แค่ได้ยินมา ไม่รู้จริงไม่จริงยังไงนะครับ) เขาถูกสั่งงานอะไรบ้าง
แบบนี้เป็นต้นน่ะครับ
ถ้าหมายถึงคณะในมหาลัยฯ... IT เป็นหลักสูตรที่ไม่มีคำว่าเรียนจบครับ ต่อให้วันนี้คุณเรียนของที่เขาใช้งานจริงไป ก็ไม่ได้การันตีว่าจบมาของที่ว่าจะยังใช้งานกันอยู่ ถ้าคุณทำงานสายนี้ ยังไงคุณก็ต้องหัดของใหม่ไปเรื่อยๆ ไม่งั้นก็จะโดนคนรุ่นใหม่มาแทนที่ครับ
เพราะงั้นสิ่งที่หลักสูตรส่วนใหญ่สอน จะไม่มุ่งเน้นสอนของที่ปัจจุบันใช้งานกันจริง แต่จะเน้นในการปูความรู้พื้นฐาน ที่ช่วยให้การเรียนรู้ของที่ใช้งานกันอยู่ได้ง่ายขึ้น ทั้งปัจจุบันและอนาคตครับ
ส่วนใหญ่เท่าที่เห็น ก็จะเรียน C, C++ เพื่อทำความเข้าใจวิธีการเขียนโปรแกรมเบื้องต้น หรือไม่ก็เรียน Java เพื่อทำความเข้าใจหลักการ OOP ด้วย ซึ่งทั้งหมดเป็นพื้นฐานของภาษาใหม่ๆหลายๆภาษา ทำให้อนาคตการฝึกเรียนภาษาใหม่ๆทำให้ง่ายขึ้น
แน่นอนว่าในการทำงานจริง การรู้ภาษาอย่างเดียวยังไม่เพียงพอ ต้องรู้การนำภาษานั้นไป apply ต่างๆด้วย เช่น frontend backend ต่างๆ ซึ่งหลักสูตรต่อจากนี้ก็จะเรียนพื้นฐานเรื่องเหล่านั้น ด้วยเครื่องมือหรือ framework ต่างๆที่อาจจะไม่ได้ยอดนิยมในการทำงานจริงเท่าไหร่ในขณะนั้นเช่นเดียวกันครับ
สำหรับใครที่อยากเรียนของที่ปัจจุบันใช้งานกันจริงๆ แนะนำให้ไปเรียนจากพวกคอร์สระยะสั้นแทนจะตอบโจทย์กว่าครับ
ปล. ผมเคยเป็นผู้ช่วยอาจารย์คณะ com sci ก็เคยเจอคำถามราวๆนี้จากนักศึกษาเหมือนกัน
ผมคิดว่าภาษาส่วนมากมันใช้แทนกันได้เกือบหมด ยกเว้นภาษาเฉพาะทาง เช่น R, Julia, Shell script ถ้าบอกว่าเขียนโปรแกรมภาษานี้ได้ก็คือควรจะเขียนแอพที่ได้รับมอบหมายได้ในภาษานั้นๆ (ไม่ใช่ว่า resume บอกว่าเขียนภาษา Rust ได้แต่ถามจริงๆ บอกว่าเคยลองอยู่นิดหน่อย แค่โปรแกรมตัดเกรด)
สิ่งที่จะต่างก็คือภาษามันมี ecosystem ของมันซึ่งบางอันมันกินขาดจริงๆ เช่นงาน data sci, AI ยังไงก็ต้องใช้ Python เพราะไม่ใช้ก็ต้องไปสร้าง numpy, scipy, pytorch ในภาษาอื่นก่อน ตรงนี้ผมมองว่าเหมือนกระบี่ที่ต้องหยิบมาใช้ให้ถูกเล่มถูกโอกาส
ของ JavaScript จุดที่คิดว่า ecosystem กินขาดกว่าทุกภาษาก็คือ
อ่านสนุกมาก ขอบคุณมากครับ
..: เรื่อยไป
ในไทยตอนนี้ C++ หางานยาก (ถึงยากมาก) ครับ แต่บอกเลยมั่นใจได้ว่าถึงได้งานจริงก้ไม่ได้เขียน pointer-to-function นะ (ฮา) ถ้าเป็นทีมผม ผมจับเขียน std::function หมดล่ะ ง่ายกว่า
แต่ในประเทศที่เป็นต้นทางของเทคโนโลยีนี่ยังไปได้อยู่นะ คือภาษาดัง ๆ เอนจินดัง ๆ พอลองขุดลงไปก็จะเจอ C++ เต็มไปหมด (ยิ่ง OS นี่จะเจอ C ด้วย) ถึงแม้ว่า rust จะเริ่มเข้ามาแทนบ้างแล้วครับ
ส่วนสายเว็บผมว่ายังไงของใหม่กว่าก็น่าเล่นกว่าเสมอ rust ก็เลยมาครับ (แต่พูดตรง ๆ C++ string processing ก็ยังไม่ค่อยดี ต้องใช้ lib เพิ่ม (จุดแข็งก็อยู่ที่ใช้กับสตริงของอะไรก็ได้ ไม่ได้บังคับเหมือนภาษาอื่น) ยิ่ง C แล้วคือเข้าขั้นยากเลยล่ะ)
ในการทำงานจริง คำถามอาจจะกลับด้านครับ คือไม่ได้ตั้งต้นมาจากว่าเราจะใช้ Node.js ทำอะไรได้บ้าง
แต่มาจาก business problem ว่าเรามีปัญหาหรือต้องการ feature อย่างนึง เราจะแก้ยังไงได้บ้าง Node.js ก็จะมาเป็น option นึงจากหลายๆทางเลือก
ทั้งนี้ บริษัทส่วนใหญ่ จะมี technology ที่ใช้อยู่แล้ว เลือกมาจากหลายๆอันตาม strategy ที่คิดกันมา สุดท้ายอาจจะจบตรงที่ project นี้เราจะใช้ Node.js หรือเราจะใช้ backend technology ตัวอื่นดี เช่น .NET / Java / Golang / Python
เท่าที่เจอมา ส่วนใหญ่คนที่เลือก Node.js มาแก้ปัญหา มักจะมีเหตุผลเหล่านี้
- ง่าย ขึ้น project ใหม่ๆ เร็วๆ ได้สะดวก
- มีคนใช้เยอะ ตัวอย่างหาได้ไม่ยาก library opensource มีให้ใช้เยอะ
- javascript/typescript เป็นภาษาที่ใช้ทำ frontend ได้ด้วย ทีมเลยอาจจะเป็น fullstack ได้เลยทีมเล็กๆจบงายทุกอย่างได้
ส่วนพอทำงานไปนานๆ ระบบใหญ่ขึ้น ทีมเยอะขึ้น ก็จะเจอปัญหาบางอย่าง ส่วนมากก็จะกลับมาคิดกันใหม่อีกที เพราะว่า
- พอ project ขึ้นง่าย ตอนแรกๆก็ไม่ได้คิดว่ามันจะโตมาก ซับซ้อนขึ้น การวาง structure project เริ่มทำให้แก้ไขยาก
- performance ของแอพไม่เร็วพอ (เมื่อเทียบกับ cpu/ram consumption)
- opensource library หลายๆตัวเริ่มไม่น่าเชื่อถือ หรือเลิกทำ
- application เริ่มติดข้อจำกัดของการทำงานแบบ single thread
ขอบคุณครับ
เคยเขียน HTML ขึ้นเป็นหน้าเว็บ แล้วก็พอจะรู้จักการวาง script แล้วพ่นแท็กใส่บริเวณนั้นอยู่บ้าง
แต่เพราะไม่เคยเจอกับงานจริง โปรเจ็คจริง เลยรู้สึกว่าตัวเองเสียเปรียบมากเวลาถูกสัมภาษณ์
ความจริงของสถานที่ทำงานไม่เหมือนห้องเรียน สิ่งที่ผมมักถูกถามคือ "คุณมีประโยชน์อะไร ?"
เลยทิ้งความคิดไปแล้วว่าจะมีสถานที่ไหนรับไปเรียนรู้งานบ้าง (ผมเลยเลข 3 เข้าไปแล้วครับ)
อีกอย่างคือ สมัยอยู่มหาวิทยาลัย รุ่นผมไม่มีวิชาสหศึกษาครับ มารู้ทีหลังว่าพวกรุ่นน้องโดนเปลี่ยนหลักสูตร ต้องไปเข้าฝึกงานแล้วเอาลายเซ็นจากบริษัทมารับรองให้อาจารย์ (ไม่แน่ใจว่าจำถูกไหมนะครับ)
แนะนำว่า ลองซื้อคอร์สจาก udemy ที่ชอบมีช่วงลดราคาเหลือ 299-399 บาท แล้วหาคอร์สเรื่อง NodeJS มาศึกษาดูครับ
พวกคอร์สเหล่านี้ส่วนใหญ่จะให้ลองทำจริง ทำให้เห็นว่ามันเอาไปพัฒนาต่ออะไรได้บ้างครับ
ส่วนตัวผมมีอาชีพหลักที่ไม่ได้เป็น Dev อยู่ แต่ทุกวันนี้คือใช้ความรู้จาก udemy นี่แหละครับ มา dev solution ต่างๆ ใช้ในที่ทำงานครับ จนแทบจะ dev เป็นหลัก งานจริงเป็นรองไปแล้ว
เอาที่ทำมาตลอดหลายปีนะครับ
ทำ backend ให้แอพรับส่งผู้โดยสาร
ทำ micro service ส่ง notification
ทำ web scraping รัน daily task
ทำ backend ให้ระบบ wallet
ทำ backend ให้ระบบ resource management
ทำ ระบบ generate video
ทำ ระบบ machine learning สำหรับวิเคราะ+จับคู่รูปภาพ
ทำ ระบบ trade crypto เชื่อมกับ exchange
ทั้งหมดนี้ไม่จำเป็นต้องใช้ nodejs ก็ได้ ภาษาอื่นๆก็จบงานได้ ขอแค่ภาษา+runtime มีความสามารถถึง
แต่ผมเลือก nodejs เพราะถนัดแล้ว เข้ามือแล้ว จริงๆต้องบอกว่าผมสาย C# เสียมากกว่าแต่โดนโปรเจคแรกคือ ระบบ generate video ที่เขาวางเป็น nodejs ไว้แล้ว เลยต้องมางมๆ จนเข้าใจว่า nodejs มันก็เจ๋งเหมือนกันนี่นา จากนั้นก็ nodejs มายาวๆ
ถ้าให้แนะนำคือหาโปรเจคง่ายๆทำ หรือถ้ามีโปรเจคที่เคยทำแต่เขียนจากภาษาอื่นก็ลองเอามาสร้างใหม่เป็น nodejs ดูครับ แบบนี้จะให้การเรียนรู้แบบงานจริงๆได้ดีครับ
ขอบคุณครับ
ถูกคาดหวังว่าต้องเชี่ยวชาญ MySQL หรือยี่ห้ออื่น ๆ ไปโดยปริยายเลยไหมครับ ?
ส่วนใหญ่จะคาดหวังว่าแค่ Insert/update ธรรมดาแล้วถูกต้องก็พอครับ แต่พอทำไปๆ เราจะเจอโจทย์ยากเอง
แต่ถ้าไปรับงานต่อคนอื่นอันนี้จะโดนคาดหวังว่าต้องเก่งระดับหนึ่ง
ในชีวิตประจำวัน ผมใช้แทน Bash ไปแล้ว 5555555555555555+
แวะเข้ามาอ่านครับ
ส่วนตัวไม่ได้เป็นโปรแกรมเมอร์หรือสายนักพัฒนาอะไร เป็นแค่สายคนชอบไอทีทั่วไปเฉยๆ แต่ถ้ามีเวลาผมมักจะมาอ่านคอมเม้นต์ใน Blognone เสมอ เพราะรู้สึกว่าความคิดเห็นในนี้ตอบด้วยความเป็นเหตุเป็นผลดี ไม่ได้พิมพ์แซะกันไปวันๆ ถึงบางเม้นต์จะตอบสั้นๆ แต่ก็รู้ว่าไม่ได้พิมพ์ตอบแบบ "ขอไปที"
อ่านรู้เรื่องบ้าง ไม่รู้เรื่องบ้าง แต่อ่านเพลินดีครับ น่าเสียดายที่รู้จักเว็บนี้ช้าไป ในช่วงที่คนตั้งกระทู้ไม่ค่อยคึกคัก 55+
พิมพ์ซะยาว แต่ไม่ได้ตรงกับหัวข้อกระทู้เลยแม้แต่ย่อหน้าเดียว ขออภัย จขกท ด้วยนะครับ
เข้าใจครับ ผมก็แนว ๆ นั้นแหละ 555
ที่ไหนกวนทีน เยาะเย้ย มีเกรียนบ่อย ๆ ผมจะพยายามหลีก ๆ
เว็บบอร์ดพวกเกมออนไลน์มักเป็นแบบนั้นกัน
ผมไม่ขอพูดในเชิงเทคนิคแล้วกัน เนื่องจากมันมีหลายปัจจัย แต่ถ้าเป็นเรื่องเขียนแล้วขายให้ลูกค้า ก็ต้องดูว่าคุณทำเอง หรือมีทีม ถ้ามีทีมก็ต้องเลือกภาษา หรือ framework ที่จะหาคนได้ง่ายในตลาด มี document เยอะเพียงพอที่จะให้คนที่รับงานไปทำสามารถศึกษาเพื่อเขียนต่อได้ มีการบำรุงรักษา และติดตั้งที่ง่าย เพราะเวลาที่คนทำลาออกจะก่อปัญหาให้คุณมหาศาลถ้าดันไปเลือกภาษาที่มีคนใช้งานน้อย
แต่ถ้าทำเอง ก็ต้องแล้วแต่ที่คุณถนัด และแก้ไขปัญหาด้วยตัวเองได้หากเกิดปัญหา เพราะลูกค้าเขามุ่งความสนใจใน Business Process ของเขามากกว่า ส่วนทางเทคนิคเขาก็หวังพึ่งคุณนั่นแหล่ะ ถ้าคุณเขียนแล้วแก้ไขปัญหาให้เขาไม่ได้ ชื่อเสียงของคุณก็จะพังทำให้ไม่มีเครดิตในการรับงานอื่น
แต่ถ้าคุณอยากมีชีวิตสงบสุข แนะนำให้หาทีมทำงานจะดีกว่า เพราะเวลาที่ระบบมีปัญหา คุณจะต้องนั่งแก้ไขปัญหาคนเดียว และที่สำคัญอย่ามั่นใจว่าตัวเองเก่งแก้ไขปัญหาทุกอย่างได้ด้วยตัวคนเดียว อาจมีวันหนึ่งที่คุณล้มป่วย หรืออยู่ในสถานะการณ์ที่แก้ไขปัญหาอะไรไม่ได้ ลูกค้าของคุณก็จะเดือดร้อนไปด้วย (สมัยที่ผมเปิดบริษัท ผมจะใช้ตัวชี้วัดจากโทรศัพท์ลูกค้าที่โทรตรงมาหาผม ถ้ามีผู้บริหารก็จะโดนด่าเป็นคนแรก เพราะแสดงว่าลูกค้าเกินจะรับไหวแล้ว ลูกค้าส่วนใหญ่เขาก็ไม่ได้ขี้ฟ้องอะไรหรอก ถ้าไม่เกินความอดทนเขา เขาก็จะคุยกับคนที่แก้ไขให้เขาได้มากกว่า)
Superman Model ใช้งานไม่ได้จริงในสถานการณ์จริงที่ยืดเยื้อหรอกครับ ยกเว้นไว้กรณีสถานะการณ์ฉุกเฉินเร่งด่วนมีเวลาจำกัด ตรงนี้ถึงจะใช้ Superman Model ได้ดี ใช้เงินให้เป็น และใช้คนให้ถูกกับงานนั่นคือสิ่งที่ควรทำ
เคยทำที่แรกและ learn the hard way มาครับ
- อย่าว่าแต่ซูเปอร์แมน ผมอ่อนกว่าหลาย ๆ คนด้วยซ้ำ
- การจะเชี่ยวชาญสักภาษาให้ได้ต้องใช้เวลาหลักปีและความอดทน ยังไม่นับเรื่องอิทธิบาท 4
- ทำให้ไม่กล้าคิดอีกเลยที่จะไปตายเอาดาบหน้าขณะสัมภาษณ์
- แม้จะมีความรู้ C++ Java C# ก็ตาม คือมันสำคัญแต่มันไม่ได้เป็นยาวิเศษ
- Runtime error "หลาย ๆ ครั้ง" ทำให้ผมปวดไมเกรน บางครั้งก็เคยร้องไห้ ผมเคยทำให้เพื่อนร่วมงานรำคาญ
- ทำให้รู้ด้วยว่าตัวเองยังต้องฝึกเย็น ๆ นิ่ง ๆ อีกเยอะ
- และทำให้เข้าใจว่าความรู้กับปัญญาไม่เหมือนกัน รู้มากไม่ได้การันตีว่าจะแก้ปัญหาได้
เพราะงั้น Freelance งานแบบนี้ สำหรับผมน่ากลัวมากครับ
... แต่ตอนสมัครไปเรียน ASP.NET อาจารย์เคยเปรยว่าคนสายนี้ถูกคาดหวังว่าต้องเป็นซูเปอร์แมน รู้มันทุกอย่าง ผมก็เลยคิดว่า :
"..."
ก่อนอื่นเลย NodeJS เป็นรันไทม์ภาษา JavaScript (JS) มันทำให้เรารันคำสั่งภาษา JS นอกเว็บบราวเซอร์ได้เพราะตัวมันเองใช้ V8 JS engine เหมือนกับบราวเซอร์เจ้าดัง และมันไม่ใช่ Framework ถ้าพูดถึง Framework ฝั่ง Backend ก็ NestJS ฯ, Frontend ก็พวก Angular, VueJS, NextJS ฯ
ในแง่ของการใช้งานจริงผมคล้ายหลายๆท่านอธิบายไว้ครับ เช่น ทำ Backend ระบบจัดการข้อมูล, ใช้ทำหน้าที่ batch ให้โหลดข้อมูลจากอีกที่มาเก็บไว้ ส่วนนึงขึ้นกับความถนัดของเราและทีม
เท่าที่ได้เขียนมา ผมรู้สึกว่างานส่วนใหญ่ที่เจอกับภาษา JavaScript (และ Node.js) มักจะเป็นแนวๆ "เขียนเชื่อม" (เท่าที่ผมเรียกเองนะครับ) คือแนวๆ ว่า ข้อมูลเราก็เอาจาก Database, assets ต่างๆ ก็เอามาจาก storage อื่นๆ, หรือในฝั่ง Browser ก็ยังพึ่งความสามารถของ framework ต่างๆ รวมทั้งความสามารถของ browser เอง ในการทำงาน
ดังนั้น โค้ดที่เราเขียน ก็มักจะไม่ได้เหลืออะไรไปมากกว่า เรียกข้อมูล รับข้อมูล ตรวจสอบ ส่งต่อ หรือส่งไปเก็บ หรือคำนวณนิดหน่อยครับ ซึ่ง ส่วนใหญ่ก็คือระบบทั่วไปที่ เรียกข้อมูลมาดู สร้าง ลบ แก้ วนไปครับ จะยากง่ายก็คือตัว policy หรือลักษณะข้อมูลของแต่ละระบบ
แต่ถ้ามาพูดถึงความสะดวกในการเอามาใช้งาน
- ด้วยความที่มันเป็น script เลยไม่ต้องคอมไพล์ สะดวกใช้งาน
- ด้วยความที่ว่า Node.js และ Browser เป็นภาษา JavaScript เหมือนกัน ดังนั้น ผมว่ามันสะดวกดี
- ขึ้น project ง่าย (ผมว่าใกล้ๆ กับ PHP แต่ระบบ module มันติดมาให้แล้ว เลยอาจจะง่ายกว่า)
- syntax ที่ยืดหยุ่น (และพาหลายคนงง) บวกกับ REPL ทำให้มันสามารถเอามาใช้เป็น command-line หรือ script หลายๆ อย่างได้ โดยไม่ต้องกังวลเรื่อง Windows/macOS/Linux มากสักเท่าไหร่
ลืมพูดการทำงานจริงของตัวเองไปเลย
ถ้าไม่ได้ใช้ Framework ที่กำหนดว่าต้องใช้อะไรเป็นพิเศษไหม โค้ด Node.JS ที่ผมเขียนใช้งานจริงแทบจะเป็น Boilerplate ทุกอย่างเลย แค่ว่าผมจะเขียนแบบ Procedural ให้คนอื่นตามอ่านได้ง่าย ลองเขียนตามหลักสถาปัตยกรรมซอฟต์แวร์แล้วออกมาไม่จืดเลยทีเดียว ระดับที่ว่า TS ก็ไม่ช่วย อย่างแรกสเกลงานมันมีแค่นั้น อย่างสองคือยิ่งถ้าเขียนซับซ้อนขึ้น Test ก็เยอะขึ้นเป็นเงาตามตัว
กฎเหล็กที่ผมยึดมั่นตอนเขียน Node.JS ทุกครั้งคือ อย่ากลัว Error และพยายามจัดการกับมันทุกครั้ง ให้ศึกษาเลยว่าแต่ละคำสั่งที่เสี่ยง ๆ เช่น Disk IO, Database, 3rd Party Lib จะปล่อย Error อะไรออกมาบ้าง เพราะ Node.JS ชอบปล่อยปัญหาให้เกิดตอน Runtime และ TS ก็ช่วยอะไรไม่ได้ อย่าแค่ว่าอัดใส่ try...catch แล้วจบ โค้ดผมติด try...catch ส่วนมากผม Throw ต่อไปยัง Upper Stack ด้วยซ้ำเพราะจะปล่อยให้ตัวด้านบนจัดการแสดง Error อย่างถูกต้องอีกที พยายามอย่า Default Value ของ Data ที่เข้าไปในระบบด้วยถ้าฟิลด์ใด ๆ จำเป็นสำหรับกระบวนการนั้น ปล่อยให้มัน Error แล้วตอบกลับอย่างถูกต้องดีกว่า จากนั้นกำหนดขอบเขตการทำงานให้ชัดเจนว่า โปรแกรมจะได้รับอะไร แล้วจะตอบกลับด้วยอะไร เท่านี้เราจะได้เขียนเฉพาะที่มันได้ทำงาน แล้วเอาเวลาที่เหลือไป Smooth Out ไปกลบ Error ที่เป็นไปได้ในระหว่าง Process แล้วเขียน Test ปิดเฉพาะส่วนที่ต้องใช้งาน แล้วที่เหลือให้เป็นงาน Smart Monkey ไปทุบงานของเราให้เละอีกทีแล้วให้เราตามไปอุดต่อ
สรุปคือ ถ้าไม่ได้ใช้ Framework ครอบทับ สเกลงาน Node.JS จะเท่ากับความสามารถของโปรแกรมเมอร์ คูณด้วย 0.1 เพราะกับงานสเกลใหญ่ด้วย Node.JS มันตีขอบเขตและออกแบบยากจริง ผมคิดว่าผมใช้เวลาเขียนโปรแกรมง่าย ๆ กับ Node.JS มากกว่าภาษาอื่น ๆ ด้วยซ้ำ แค่ว่า Entry Point ของภาษามันง่ายมาก ๆ แค่นั้น แต่เขียนจริงให้เรียบร้อยและคงทนน่ะยากมาก ฉะนั้นไม่ต้องโทษตัวเอง ^^
เขียนโปรแกรมอ่าน id card รันเป็น local server ง่อยๆ ในเครื่อง client ให้เว็บมาเรียกเพราะนั่งกดๆ webUSB แล้วขีเกียจก็เลยใช้ node นี้่แหละ google หา lib หาวิธีเขียนชั่วโมงนึง จบ
ส่วนตัวใช้ Node อยู่แค่ 2 อย่างครับ
- เขียนเว็บ Frontend (ผ่าน Framework อย่าง React)
- เขียนพวก helper script สลับกับ Python แต่แค่บางกรณี เช่นที่ต้องรันบน Windows ด้วย ส่วนบน Unix/Linux เพราะผมชอบ script ที่โบราณอย่าง bash มากกว่า
ส่วนงาน Backend ชอบเป็นภาษาที่เป็น strongly typed มากกว่าครับ อันนี้แค่ความชอบส่วนตัว :)
..: เรื่อยไป
เคยใช้ทำ API อยู่บ้าง ผมว่า ... มันก็เป็นภาษาที่ดีจนกระทั่งมันมีปัญหาน่ะครับ (ฮา)
ถ้ามี Resource เหลือเฟือ มีซีพียูเหลือเฟือ มีแรมเหลือเฟือ แล้วไม่ได้มีปัจจัยอะไรมาบีบเยอะมากมาย ผมว่า JS ก็ดีครับ มันก็ง่ายดี และมันก็มักง่ายได้เยอะดีเหมือนกัน
แต่ถ้าแบบว่าเริ่มมี requirement อะไรมาบีบเยอะขึ้นก็ต้องวิเคราะห์ดูครับว่า ใช้ JS แล้วมันจะโอเคหรือเปล่า แต่เดี๋ยวนี้มันก็ดีขึ้นมากแล้วครับ คือ resource สมัยนี้มันดีกว่าเมื่อก่อนน่ะ (ตัว runtime มันก็มีส่วนแหละแต่ผมให้ที่ฝั่ง hardware มากกว่า 555)
มันทำได้หลายอย่างมากครับ แต่เรื่อง performance/throughput คงไม่สู้พวก Rust / C อะไรแนวนั้น จะเขียนให้เป็น OOP จ๋าๆ ก็ได้แหละ แต่ข้อจำกัดทางภาษาก็เยอะ
แต่ถ้าสนใจเอาไว้หางานสาย opensource แนว client/server ก็ nodejs, php, sql (mysql) นี่แหละครับ
เขียน go,Ruby,Rust ได้เงินเดือนจะสูง แต่ไม่ค่อยมีแหล่งงานรองรับ
ถ้าไปสาย enterprise ก็ Java / C / .NET / SQL Server / Oracle ครับ