สิ่งที่ผมเองก็ยังไม่รู้ (และบางอันก็อยากจะรู้)
![สิ่งที่ผมเองก็ยังไม่รู้ (และบางอันก็อยากจะรู้)](/_astro/cover.EXTJBAeE.jpg)
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 อาจจะยังไม่ดีมากขนาดนั้น ยังอ่อนหัดอยู่นัก
ถ้าว่างๆ ก็อยากชักชวนให้ทุกคนลองทำแบบผมดูครับ อย่างผมไล่ๆ มาก็ค้นพบว่า เออ แม่งมีบางเรื่องลืมไปเลยว่าอยากจะทำ จะได้เริ่มทำสักทีครับ
สิ่งที่อันตรายกว่าการไม่รู้ คือการไม่รู้ตัวว่าไม่รู้อะไร