สิ่งที่ผมเองก็ยังไม่รู้ (และบางอันก็อยากจะรู้)
Inspire จากบล็อกของ Dan Abramov ผู้สร้าง Redux ที่ตอนนี้เขามาเขียนบล็อกส่วนตัวในเว็บ Overreacted.io Dan ได้เขียนบล็อกเล่าว่า
สิ่งที่ตัวเขาเองนั้นยังไม่รู้ มีอะไรบ้าง
ความน่าสนใจของบล็อกนั้นคือ ผมเองก็ค่อนข้างนับถือและชาบู Dan เป็นการส่วนตัวในระดับนึง ว่าต้องเก่งมากๆ แน่ๆ แต่พอมาอ่านบล็อกของ Dan เอง ยิ่งทำให้ผมรู้สึกนับถือเขามากขึ้น ไม่ใช่แค่เพราะเขาเก่งจนสร้าง Redux ได้ แต่เพราะเขากล้าที่จะบอกคนอื่นว่า เขายังมีเรื่องอีกมากมายที่ยังไม่รู้ ซึ่งผมเองก็คิดว่า เออมันก็เป็นเรื่องดีนะ เพราะปกติคนเรามักจะชอบบอกตัวเองว่าตัวเองเก่งอะไรบ้าง แต่ไม่อยากจะบอกเรื่องราวในอีกแง่มุมคือมุมที่ไม่เก่งให้คนอื่นฟัง หรือให้คนอื่นได้รู้บ้าง
ผมเลยถือโอกาสนี้ลองเขียนบล็อกหัวข้อตาม Dan ดูละกัน อย่างน้อยก็เอาไว้เป็นเช็คพ้อยท์ได้ว่าตัวเองยังอ่อนหัดในเรื่องไหนบ้าง จะได้ทบทวนตัวเองด้วย
- Python: ความตลกร้ายคือ แม้ว่าจะเคยอัดคลิปสอนของชมรมไปแล้ว แต่ ณ วันนี้ ถ้าให้ตอบว่าตนเองรู้ Python ขนาดไหน ต้องตอบว่ารู้แค่ระดับ Programming 101 แค่นั้นเอง ไม่ไกลไปกว่านั้น พวก Web Framework โดยใช้ Python หรือการใช้ Python Library ทำ Data Analytic อย่าง pandas ก็ใช้ไม่เป็นนะครัช
- Firebase: นอกเหนือจาก Hosting กับ Cloud Functions แล้วนอกนั้นคือ 0 เลย Real time Database ก็เหมือนจะเข้าใจ แต่ก็ไม่เข้าใจจริงๆ (เคยแตะตอนทำ internal hackathon ทำได้แค่อ่าน กับ เขียน และ ลบ แต่พวก permission rule คือลาก่อน เปิดแม่งหมด 5555)
- Chatbot: รู้แค่โดย idea (รู้ตอนที่ให้น้องฝึกงานทำ chatbot เมื่อปีก่อน) / มีโปรเจคส่วนตัวอันนึงทำอยู่ ก็โง่ๆ ง่อยๆ ไม่ได้เป็นแชทบอทฉลาดขนาดนั้น
- How the web really works: พอรู้พื้นฐานบ้างระดับนึงว่าเว็บทำงานยังไง เป็นผลจากปีก่อนนั่ง optimize เว็บตามพี่ตั้งและ Addy ทืี่เป็น Engineer ของ Google ที่พูดเรื่อง web optimization แต่จนบัดนี้ไม่กล้าพูดได้ว่าเข้าใจจริงๆ ในเชิงลึก
- PHP: เกิดมากับ JavaScript ครับ มาถึงซัด back-end ด้วย Node.js / เคยแตะ Laravel แต่ตอนนั้นเป็นมนุษย์ Copy & Paste อยู่ ไม่ได้เข้าใจมันมากหรอก
- Ruby: มีช่วงนึงลองไปเขียน Ruby on Rails เพราะจะสมัครฝึกงานกับบริษัทนึงที่เขียน Rails เป็นหลัก (บริษัทนั้นโดย LINE aquistions ไปแล้วด้วยรู้สึก) แต่ก็ล้มเลิกไป เพราะได้ไปฝึกงานกับ Reuters แทน (และ Reuters ก็ควบรวมเป็นอีกบริษัทไปแล้ว เอ๊ะ ทำไมที่ฝึกงานสองที่มันกลายเป็นบริษัทที่เกือบจะไม่มีอยู่จริงแล้ว 5555)
- Low-Level Programming: สมัยเรียนก็ว่าไม่ค่อยอินแล้ว พอทำงานแล้วก็ต้องบอกเลยว่าปล่อยเลยตามเลยจริงๆ อะไรที่ Low-Level จัดๆ หน่อยนี่ลาขาดได้เลย
- Hardware: พวก Arduino หรือโปรแกรมทำ hardware นี่ความรู้เท่าเดิมประมาณสมัยเรียนเลยครับ 5555
- Docker (และ Containers Technology อื่นๆ): ที่ TakeMeTour เองใช้ Docker รันเป็นหลักก็จริง แต่ใน development นั้นไม่ได้ใช้ Docker เลย
- Infrastructure: เอาจริงๆ ความรู้ Infrastructure ผมนี่ยังหางอึ่งมาก ที่ทำได้ทุกวันนี้คือทำให้มันอยู่รอดต่อไปได้ในสภาพที่มันเป็นอยู่ ยังไม่คิดว่าตัวเองเก่งกล้าพอที่จะถอดหรือย้ายไปอยู่ที่อื่น / nginx เซ็ตอัพแบบโง่ๆ ทำได้แต่ advance เนี่ยลาก่อน
- Security: จริงๆ เข้าใจว่ามันเป็นพาร์ทสำคัญที่ทุกคนต้องรู้ แต่บางทีเราเขียนโค้ดพลาดพลั้งไปไม่รู้ตัวตลอด อยากมีอารมณ์ประมาณว่า เห็นปั๊ป เอ้ย มึงเขียนโค้ดมีช่องโหว่นะเพื่อนยาก รีบแก้ซะ
- Microservice (ที่ดี): ทุกวันนี้ TakeMeTour ก็เขียนโค้ดบน idea แห่ง Microservice แต่มันก็ไม่ใช่ Microservice ที่แท้จริงอยู่ดี ทุกวันนี้ทุก service ยังรันอยู่บน Database เดียวกันอยู่เลย T-T บางที service ก็ดีไซน์ไม่ดีอีก
- TDD และการเขียน Test ทั้งหลายแหล่: ผมได้ยินแนวคิดนี้มาสักพัก กำลังหาทางลอง adopt กับที่บริษัท เพราะเราอยู่กันมาแบบไร้การเขียนเทสมานานแล้ว ผมรู้สึกว่าถ้าไม่มาเริ่มตอนนี้จะเริ่มตอนไหน ตอนนี้ก็ struggle อยู่บ้าง
mock
stub
คืออะไรอีนี่ก็ยังไม่รู้เลย และพอมีโปรเจคได้โอกาสเขียนเทส ก็ทำกันแบบงงๆ มึนๆ กันอีก ก็ต้องเรียนรู้กันไป - TypeScript: ปีก่อนได้กลับมาเขียนหลังจากห่างกันมันไปเป็นปีกว่าๆ ยังไม่ชินมือกับมัน แต่ก็มีความรู้สึกว่ามันเริ่มดีขึ้นเรื่อยๆ เป็นของที่น่าสนใจอยู่
- Go: เป็นภาษาที่ได้ยินมาเป็นปี และอยากจะเรียนมาเป็นปี สุดท้ายยังไม่ได้หัดสักที เคยหัดช่วงแรกๆ ไปตายตอนจะอ่าน JSON data
- Native Apps Development: ปัจจุบันผมเป็นสาย Cross-platform Apps ผ่าน React-Native / Expo แต่ถ้าถามว่าเขียน Native นี่มีความรู้ไหม ต้องตอบว่า “เคยมี” เพราะตอนอยู่ปี 3 เคยต้องเขียนแอพ iOS ตอนนั้น Swift ยังไม่บูม ยังเป็น Objective-C อยู่ ก็รู้แบบหางอึ่งเหมือนกันนั่นแล
- CORS: ก็เหมือนจะเข้าใจ แต่ทุกวันนี้ ตูก็ยังไม่เข้าใจ
- อ่าน JavaScript Profiler ยังไง(วะ): ครับ ใครอ่านเป็นรบกวนช่วยสอนผมที
- Software Architecture: ยังอ่อนหัดในประสบการณ์ตรงนี้จริงๆ และเป็นเรื่องนึงที่สนใจอยากศึกษาอยู่เหมือนกัน เพราะเชื่อว่าเขียนโค้ดไปโดยไร้ architecture ที่ดี อนาคตชิบหายแน่นอน
- WebGL / Web Animation: ทำ CSS Animation ทุกวันนี้ยังลำบากรากเลือดเลยครับ
- Data Engineer / Data Scientist / Machine Learning / AI: 2 ตัวแรกเคยมีความรู้บ้างสมัยเรียน ตอนนี้กลืนไปหมดละ ส่วน 2 ตัวหลังนี่ก็บอกลาได้เลยครับ 555
- Blockchain: buzzword สุดฮิตประจำปีที่แล้ว…จนทุกวันนี้ผมยังไม่เข้าใจมันเลยครับ
- Network: เอาจริงพอเข้าใจแนวคิด TCP/UDP, HTTP/HTTPS อยู่บ้างนะ แต่ก็ยังไม่คิดว่ารู้ลึกรู้จริงอยู่ดี
- VIM: ครับ ใช้ไม่เป็นครับ เคยพยายามจะใช้ VIM เขียนโค้ดละครับ productivity ไม่ออกครับ ยอมแพ้ครับ 55555555
- Functional Programming: ได้ยินคนพูดคอนเซป monad / monoid นี่ไม่กล้าบอกตัวเองว่าทำ functional programming ได้เลยครับ (ใช้เป็นแต่ map/reduce ครับ 55)
- RxJS: พอเข้าใจแนวคิดของ stream ใน Rx นะ แต่ไม่เคยทำอะไรที่ต้องพิสดารมากๆ เลย ที่เคยทำก็เหมือนๆ กับใช้ promise เด๊ะๆ
- Node.js Stream: เป็นอีกเรื่องที่ยังไม่เข้าใจจริงๆ จังๆ ใน Node.js
- redux-saga: ไม่เคยเขียน ความพีคคือมีคนสมัครงานมา เขียน saga จัดการ async action ก็ต้องมาอ่านโค้ดให้เป็น ถถถถถถถ เหตุที่ไม่เคยเขียน เพราะยังไม่เจอ use-case ที่ต้องหยิบ saga มาใช้เลย และ learning curve มันสูงพอตัว (ซึ่งมีหนทางอื่นที่ดีกว่านั้นในการจัดการ async action ในสเกลเท่าที่เป็น)
- MobX: ไม่เคยใช้จริงๆ จังๆ มาก่อนเลย พอมาเค้าลางบ้างนิดเดียว
- Game Programming: เคยผ่านโปรเจคทำเกมมาก็หลายแล้ว แต่บางส่วนก็ยังไม่เห็นภาพสักกะที
- Management Skill: ยังกล้าพูดว่าทุกวันนี้เป็น Team Lead ก็จริง แต่สกิล manage คนยังไม่โปรขนาดนั้นครับ มีคนโปรกว่าผมอีกเยอะ น้อมรับการพัฒนาตนเองไปเรื่อยๆ อยู่
- Recruit: ยังรู้สึกว่าตัวเอง recruit คนยังไม่ค่อยเก่ง บางทีเราพลาดบางจุดตอนสัมภาษณ์ไป
- Algorithm: ยังคงเป็นเหมือนแต่ก่อน คือเขียนแก้ปัญหาได้ แต่ performance อาจจะยังไม่ดีมากขนาดนั้น ยังอ่อนหัดอยู่นัก
ถ้าว่างๆ ก็อยากชักชวนให้ทุกคนลองทำแบบผมดูครับ อย่างผมไล่ๆ มาก็ค้นพบว่า เออ แม่งมีบางเรื่องลืมไปเลยว่าอยากจะทำ จะได้เริ่มทำสักทีครับ
สิ่งที่อันตรายกว่าการไม่รู้ คือการไม่รู้ตัวว่าไม่รู้อะไร