DISCLAIMER: เนื้อหาต่อไปนี้เป็นเพียงความคิดเห็นส่วนตัวเท่านั้น แต่ค่อนข้างหาข้อมูลมาประกอบอยู่พอสมควร
Spoiler: บล็อกนี้คือติล้วน ๆ ไม่มีชมเลย ในคลิปจะเจอกับคำพูดที่ทำให้รู้สึก "อิหยังวะ" อยู่เป็นเนือง ๆ
เรื่องนี้เกี่ยวกับหนังสือเล่มหนึ่งที่ชื่อ Beginning NodeJS Programming เขียนโดยคนดังแห่งวงการ developer ไทย (ด้านไหนไม่รู้) ที่ Riffy ซื้อมาลองอ่าน
หลังจากนั้นซักพัก SaltyAom แห่ง BRIKL ก็ได้เขียนบล็อกรีวิวหนังสือเล่มนี้แบบจัดเต็มมาก ส่วนตัวที่ได้ลองอ่านก็รู้สึกเห็นด้วยกับรีวิวนี้ไม่น้อย
แต่หลังจากนั้นผู้เขียนก็ได้ออกมาชี้แจงเกี่ยวกับรีวิวอันนี้ โดยทำเป็นคลิปลง Youtube
ในบล็อกนี้เราจะมาพูดถึงคลิปอันนี้กัน
ในคลิปนี้มีหลายข้อที่ขัดใจกับสิ่งที่พูดมามาก ไล่เป็นข้อ ๆ เลย
เอ้า ก็นี่ไงคนอ่าน อ่านแล้วรู้สึกว่ามันห่วยไงถึงมารีวิว ยังมีหน้ามาด่าแบบสุภาพอีก แล้วถ้าไม่ได้เขียนนี่วิจารณ์ไม่ได้ใช่มั้ย
เนื้อหามันเบสิกมากถึงขั้นมากที่สุด แบบ search google เองก็เจอใน 2-3 ชม. อยู่ดี ในขณะที่ใน codecademy มีคอร์สที่สอนทำแบบเดียวกัน ซึ่งราคา pro subscription ก็แค่ $15.99/month เท่านั้นเอง (อ้างอิงจากวันที่โพส) ถูกกว่าหนังสือเล่มนี้เกือบครึ่งแถมได้ interactive ด้วย
เดี๋ยวแจกวาร์ปให้เลยครับ ไม่ได้ค่าโฆษณาด้วยนะ
Search ดี ๆ เจอนะ อย่างเช่นอันข้างบนไง แล้วต่อให้ในคอร์สไม่ได้สอนการต่อ database ครบทุกตัว แต่ยังไงก็จะได้พื้นฐานที่ถูกต้องและมี "good practice" ประมาณนึง จะหาอ่านต่อเองก็คงไม่ยาก
เอิ่ม คุณเขียนหนังสือได้ยังไงถ้าไม่รู้จักสองคำนี้ แสดงว่า "ประสบการณ์ของผม" ที่เอามาเขียนไม่ได้มี Best practice เลย แค่ใช่ verb GET ในการลบข้อมูลนี่ก็ Anti-pattern สุดโต่งแล้ว
ไม่มีอะไร ขยี้เฉย ๆ
เหมือนเดิม ขยี้จนสะอาดละ
ประเด็นคือ font แนวนี้ไม่เหมาะเอามาเขียนหนังสือแบบนี้เพราะมันอ่านยาก ซึ่งขัดกับที่คุณบอกว่าหนังสือเล่มนี้ตั้งใจให้อ่านง่าย
ยังมีเรื่องอื่นอีก เช่น การเว้นวรรคคำไม่สม่ำเสมอเลย พิมพ์ผิดก็เยอะ ยิ่งส่วนโค้ดควรใช้ font แบบ monospace เพื่อให้อ่านง่าย เพราะหนังสือก็เป็นขาวดำไม่ได้มี highlight
กลับไปข้อ 1
เห้ย!! เขียนหนังสือ JavaScript ยังไงไม่รู้จัก Callback hell (อยากรู้ว่า Callback hell คืออะไรอ่านได้ที่นี่เลย https://medium.com/thinc-org/callback-promise-async-await-วายร้าย-แห่ง-javascript-f5a842e59d9e)
ทำได้ไม่ได้แปลว่าควรทำ ก็บอกอยู่ไงว่ามันเป็น Bad practice และ Anti-pattern คือถ้าอยากจะบอกว่ามันทำได้ก็ควรเขียนไว้เลยว่านี่ไม่ใช่ตัวอย่างที่ดี ไม่ต้องมาอ้างว่ามันแล้วแต่เคสด้วย ตามหลักทั่วไปเค้าไม่ทำกัน และการสวนกระแสเรื่องนี้ก็ไม่ได้ทำให้คุณดูเก่งกว่าคนอื่นแต่อย่างใด
ใช่และเป็นเรื่องที่ดี แต่ในเมื่อหนังสือชื่อ "Beginning NodeJS Programming" คุณก็ไม่ควรคาดหวังให้คนอ่านที่เป็นมือใหม่เข้าใจความต่างของ Promise กับ async/await ไง (ถ้าอยากรู้ว่ามันคืออะไรดู medium ในข้อ 9 หรือ google เอาเลยก็ได้ครับ)
what??
Meanwhile...
ถ้าดูจาก benchmark ของ fastify ใน github แล้วจะพบว่า fastify เร็วกว่า bare Node.js ด้วยซ้ำ แต่ก็ยังถือว่าช้าถ้าเทียบกับหลาย ๆ ตัวในตลาดอยู่ดี อ้างอิงจาก https://www.techempower.com/benchmarks/
ไม่รู้จัก console.log
สินะ แต่เอ๊ะ! ในหนังสือก็ใช้นี่นา (คือเขียนผิดก็ยอมรับตรง ๆ ไม่น่ายากนะครับ)
อะไรกันเนี่ย!! ทำหนังสือมาขายราคา 2,500 (ลดเหลือ 900) ให้มือใหม่อ่าน แต่ไม่คิดจะสอนเรื่อง practice (แนวทาง) ที่ดีในการเขียนโค้ด!! คุณคิดจะเอาเงินแล้วไม่สนคุณภาพแบบ product บางตัวของคุณไม่ได้!
node_modules
) "ตรงนี้ผมไม่เข้าใจว่ากำลังสื่ออะไร"กำลังสื่อว่าไม่ควรไปยุ่งกับ node_modules
ด้วยประการทั้งปวงยังไงเล่า!!!
โดยปกติแล้วเราจะไม่แตะต้องอะไรกับ node_modules
แต่จะจัดการผ่าน package manager ทั้งหลาย (เช่น npm, yarn หรือ pnpm) ดังนั้นตามหลักทั่วไปแล้วเราจะไม่ไปสร้างไฟล์ใน node_modules
แน่นอน
จริงอยู่ที่ library อย่าง underscore และ lodash มีประโยชน์หลายอย่าง มันเกิดมาในยุดที่ JavaScript ยังไม่มีตัวจัดการ array ที่ดี แต่ในปัจจุบันหลาย ๆ feature มีใน JavaScript เองอยู่แล้วและไม่จำเป็นต้องลงเพิ่ม การลง lib เพิ่มนอกจากจะเพิ่มขนาดของโปรเจกแล้วยังมีความเสี่ยงด้าน security อีกด้วย ถ้าไม่จำเป็นคิดว่าก็ไม่ควรลง
และเอาจริง ๆ ในตอนนี้การใช้ lodash ก็ไม่ใช่เรื่องที่ดีเท่าไหร่แล้ว ลองอ่านจากบล็อกนี้แล้วจะพอเข้าใจว่าทำไม
ก็เพราะมันเป็นมาตรฐานยังไงเล่าถึงต้องอธิบาย!! นี่ตกลงทำหนังสือให้มือใหม่จริงมั้ยเนี่ย
ห้ะ!! ถ้างั้นจะมี status 400, 401, 403, 500 etc. ไปทำไมล่ะ status code ก็เป็นส่วนหนึ่งใน response หนิ ฝั่ง client แค่ต้องจัดการ status code แปลก ๆ แต่ไม่ได้จะพังแต่อย่างใด
มันทำได้แต่ไม่ควรอย่างยิ่ง เพราะ Xampp มีปัญหาเรื่อง security และ config ยาก อย่างที่ใน StackOverflow ได้กล่าวไว้
หนังสือสำหรับมือใหม่แต่ไม่คิดจะสร้าง good practice ให้คนอ่าน แต่เอาเถอะ ตัวคนเขียนก็เหมือนจะไม่รู้จักเรื่องพวกนี้อยู๋แล้ว (แต่เขียนหนังสือราคาหลักพันอ่ะนะ)
เคยได้ยินกิตติศัพท์เกี่ยวกับคนนี้มาบ้าง แต่ไม่เคยสัมผัสจริง ๆ ว่าเป็นยังไง แต่ตลอดเวลาที่ดูคลิปจะมีข้อสังเกตบางอย่าง
โดยสรุปแล้วหนังสือเล่มนี้ล้มเหลวในการปูพื้น NodeJS สำหรับมือใหม่ แบบไม่เป็นท่า
เข้าใจว่าเป็นหนังสือเน้นปฏิบัติ แต่การไม่อธิบายพื้นฐานหลายอย่างจะทำให้มือใหม่ไม่เข้าใจ สุดท้ายก็ก็อปโค้ดแปะแล้วรันเลย ไม่ต่างอะไรกับ search Google หรือ StackOverflow หรอก
จริง ๆ ผู้เขียนมีประวัติที่โชกโชนอยู่แล้ว และมีคนรวบรวมไว้ให้แล้วที่ repo นี้ ดังนั้นใครจะเชื่อผลงานของคน ๆ นี้ก็ใช้วิจารณญานให้ดี
สุดท้ายอยากฝากข้อความถึงผู้เขียนนะครับว่า
คุณนี่มัน "กบในกะลา" จริง ๆ
สวัสดีครับ