ชีวิตแบบเป็ด ๆ ของโปรแกรมเมอร์บ้า ๆ บอ ๆ คนนี้

ชีวิตแบบเป็ด ๆ ของโปรแกรมเมอร์บ้า ๆ บอ ๆ คนนี้
Theethawat Savastham 14 Sep 2019


ไหน ๆ วันนี้ก็เป็นวันโปรแกรมเมอร์สากลแล้ว ขอระบายอะไรหน่อย 5555

ผมเป็นคนนึงที่ใช้ชีวิตแบบ Duck Learning มาก จึงเป็นที่มาของไอ เดอะดักส์ครีเอเตอร์นี่ไง ดักส์คืออะไรนั่นเหรอ คือทำนุ่นทำนี่เล็ก ๆ น้อย ๆ ได้หลายอย่าง แต่ไม่เก่งซักอย่าง บทความนี้สาระไม่ค่อยมีนะครับ เน้นระบาย อ่านรู้เรื่องก็อ่านนะครับ

ไหน ๆ แล้วก็รู้จักผมซะเลย

รูปผมเองแหละ

ผมชื่อตินครับ ธีร์ธวัช สวาสดิ์ธรรม ครับ อายุ 21 ปี ตอนนี้เรียนอยู่วิศวะคอมปี 4 วิชาโท Network Engineering ซึ่งผมบอกเลยว่า “ผมคอนฟิกส์เน็ตเวิร์คไม่ค่อยเป็น TTT 5555” มาเข้าสายนี้ทำไมเนี่ย แต่จริง ๆ มันก็สนุกดีนะ ผมเองก็เป็นคนสนใจการทำโปรแกรมแบบ Micro Service เช่นพวก Javascript,TypeScript พวก MongoDB, Firebase, ElectronJS อะไรพวกนี้ ยิ่งไอ Electron + TypeScript เป็น Stack ที่ผมอยากทำมาก แล้วก็พวก Cloud ต่าง ๆ แล้วมีแอบสนใจสาย .NET Framework ของ Microsoft ด้วย ผมยังชอบการทำ Server ด้วยนะ ตอนนี้ผมมี Digital Ocean อยู่ 1 Droplet เป็น Ubuntu และเคยมี VM Windows Server ที่ Azure อยู่ มันเป็นของฟรีที่มหาวิทยาลัยให้มา แต่ตอนนี้ลบไปละ เพราะไม่ได้ใช้ และถึงจะให้ใช้ฟรีแบบไม่ต้องกรอกบัตรเครดิต แต่มันก็ให้เราในรูปแบบเครดิต คือ ให้เครดิตเราประมาณ 100USD มั้ง คนที่ใช้ Cloud พวกนี้น่าจะรู้ดี ก็ถ้าเราปล่อย Virtual Machine (จำไม่ได้แล้วเขาเรียกว่ายังไงใน Azure) มันก็จะกินเครดิตไปด้วย โดยที่เราไม่ได้ใช้ ดังนั้นเบรกไว้ก่อน ใน Digital Ocean ผมคอนฟิก DNS เองนะคร้าบ (เออ แล้วไงมันยากตรงไหนเหรอ 5555) ใน Windows Server ก็เหมือนกัน เคยใช้มาหมดแล้วทั้ง Apache, Nginx, IIS แต่นั่นแหละ รู้แค่พื้น ๆ กลับมาที่หัวข้อ ก็ยังคงเป็นเป็ดเหมือนเดิม

ก็มัน Distributed อ่ะ

มันคือการทำโปรแกรมแบบ Distributed Computing การประมวลผลแบบ Client-Server หรือ Distributed อื่นๆ และผมรู้สึกว่ามันยิ่งใหญ่ดี ถึงแม้จะต้องทำอะไรที่ยากกว่าสาย Infomation Engineering เพราะผมเองไม่ถนัดการทำงานให้มันมี Performance สูง ๆ ขนาดนั้น ผมรู้สึกว่าเน็ตเวิร์ค ซึ่งมีวิชาเลือกในสายแค่ 4 + 1 ถึง 2 ตัว แล้วผมก็ได้ความรู้ด้านโปรแกรมมิ่งจากวิชาอื่นมาพอสมควรละ มันเป็นเรื่อง ๆ ที่เป็น Core เพราะถ้าจะให้เขาสอนเราทุกเรื่อง มันเป็นไปไม่ได้ ภาษาคอมพิวเตอร์มันจะออกใหม่ทุก ๆ สัปดาห์อยู่แล้ว อันนี้ที่เขียนอยู่นี่ก็ทำบน Ruby Stack ทั้ง ๆ ที่ผมเองไม่รู้เรื่อง Ruby เลย แต่ก็เอา Jekyll ซึ่งเป็นเฟรมเวิร์คการเขียนบล็อกตัวหนึ่งซึ่งได้รับความนิยมมากพอสมควรมาใช้ แล้วก็ทำตามคอมมานด์ ตาม Doc, Tutorial ไป เออ ได้

แต่พอจะมา deploy บน Server ตัวเอง เอ้าาา ทำไงวะ จะ deploy แบบไหนดี แบบ Docker Container หรือ สร้าง Ruby Server แต่เหนือสิ่งอื่นใดคือผมยังจัดการไอ Reverse Proxy ของไอ nginx ไม่เป็นเลยเนี่ย จะทำนู่นทำนี่ ล่มเพราะ Reverse Proxy Nginx ไม่ได้เนี่ยแหละ คือไงอะ โอเคเราไม่พูดในเทอมเทคนิคมากแล้วกัน สุดท้ายก็ใช้ GitHub Page เอาแล้วกันง่ายสุด

Reverse Proxy คือการเปลี่ยนจากการปล่อยแอพพลิเคชั่นที่พอร์ตอื่น ๆ เช่น dev.theduckcreator.in.th:3000 มาเป็นพารามิเตอร์ในโดเมนแทน เช่น dev.theduckcreator.in.th/serv3 อะไรอย่างงี้

จริง ๆ Reverse Proxy ไม่ใช่มีหน้าที่ หรือ Feature แค่นี้นะ มันมีตั้งหลายแบบ เช่น handle file ตามนามสกุล อะไรหลาย ๆ อย่าง ถ้าสนใจไปลองอ่านที่เว็บของ Nginx หรือ Apache Webserver ดูนะครับ ผมก็ตอบไม่ได้ ต้องการคำตอบเหมือนกัน

เนี่ยนอกเรื่องไปไกลแล้ว กลับๆๆ

ถ้าให้นิยามตัวเอง ผมว่าผมเองเป็นคนที่ไม่เก่งนะ ไม่ขยันด้วย แต่ทำอะไรด้วย Passion ได้ดี ผมว่ามันน่าจะเป็นอะไรหลาย ๆ อย่างที่ Developer (นี่กล้าเรียกตัวเองว่า Dev แล้วเหรอนี่) เป็นมั้ง ผมมักจะคิดอะไรใหม่ ๆ แปลก ๆ ได้เสมอ เช่น ผมทำ QR Code Random Congrat หรือ แม้ตอนหลัง Server เก่าผม Inodes เต็มซะก่อนสุดท้ายก็ต้องมาใช้ HTML ธรรมดา แต่คนที่ได้รับเขาก็มีความสุขและประทับใจอยู่นะ ดู ๆ จริง ๆ แล้วผมเป็น Network Engineer Student นะ แต่ Config ห่าอะไรไม่เป็นเลย…… ล้อเล่น มันก็พอเป็นบ้างแหละ สิ่งที่ผมชอบจริง ๆ น่าจะเป็น Software in Networking ประมาณนี้มากกว่า

Duck หรือ เป็ด คือ ทำเป็นได้หลายอย่าง แต่อาจจะไม่โดดเด่นซักอย่าง

ถ้าเปรียบผมเหมือนโนบิตะ ผมก็คล้าย ๆ อยู่นะ คือเออก็ไม่เก่ง กีฬาเนี่ยยิ่งห่วยเลย แต่ไอโนบิตะมันยังมีความรัก แล้วก็มีพลังอยู่ แต่ผมเป็นแบบถ้าเรื่องนี้ผมชอบ ผมทำ ยาว ๆ ก็ได้นะ ผมทำทั้ง Arduino, Raspberry Pi, NodeMCU คือเคยเอามาทำ IoT ที่บ้านครับ แล้วก็มาต่อไฟ เพื่ออำนวยความสะดวกให้กับตัวเอง เอ้า เจ๋งป่าวหละ แต่ในทางกลับก็เขียน พอเขียนได้ หลายภาษาอยู่นะ (พอเปิด Doc) อ่านรู้เรื่องอ่ะ แต่นั่นแหละ ไม่เก่งซักเรื่อง Python ก็ไม่เป็น (ภาษาอะไรวะ โคตรฮิตเลย) , ภาษาตระกูล OOP พวก Java, Kotlin, C# ก็พอเป็นบางส่วน เน็ตเวิร์ค คลาวด์คอมพิวติ้ง ก็รู้บางส่วน เออ แล้วอยากทำอะไรก็ทำ นั่นสิ แล้วไม่ให้เรียกว่าเป็ดแล้วเรียกอะไรหละครับ

โอกาสไม่ได้มาหลายคลั้ง บางทีต้องตอนนั้นเท่านั้น

เป็นสิ่งที่ผมพบมาจริงเลยคีอบางทีโอกาสมันมา แต่เราทำให้ไม่ทัน เช่น ตอนทำ Congrat ปี 2562 ที่ผ่านมาเตรียมดอกไม้มาอย่างดี มน้ำดืมให้คนละขวด แล้วก็เออ ว่าจะทำกับ Firebase ครั้งนี้ดีไซด์ UI ก่อนด้วย ทำกับ React ซึ่งเป็นการแก้เข็ดงานที่ตอนทำ QR Code Congrat แรก ๆ ปัญหามีอยู่ว่า มันเป็นงานรับปริญญาเว้ย แล้วมันอาจจะ เข้าใจมั้ยว่าบางทีนั้น ความพิเศษมันก็อยู๋ในวันนั้นนั่่นแหละ แล้วไม่เสร็จ เรามีพี่ ๆ หลายคนที่รู้จัก คืนก่อนนั่งทำถึงประมาณตี 2 แล้วนอน ตื่นมา 7 โมง ทำต่อ ซึ่งจริง ๆ เนี่ย วันรับปริญญาเนี่ยถ้าจะไปแสดงความยินดีเขาให้ไปเช้า ๆ แต่สุดท้าย ยังไงมันก็ไม่เสร็จอยู่ดี ก็เลยโอเค ตัดสินใจเลิก ประมาณซัก 9 โมงกว่า ๆ แต่ไปถึงก็สิบโมงได้ ซึ่งก็ไม่ค่อยทันแล้ว พอจะไปถ่ายรูปได้แค่กับพี่รหัส และ พี่เทคกรุ๊ปแค่นั้น ดังนั้นเนี่ย การทำงานในเวลาเร่งด่วน บางทีการเรียนรู้ใหม่ หรือการลองของใหม่มันก็อาจจะไม่ถูกต้องซะทีเดียว

ทำนู่นทำนี่ไม่เก่งไม่เป็นไร แต่ความเสถียร จำเป็นนะ

คนเป็นเรื่องที่เถียงไม่ขึ้นสำหรับคนเป็ด ๆ อย่างผม ก็คือ แล้วถ้าเราได้รับโจทย์ที่ต้องการเสถียรภาพสูงหละ เราจะทำยังไง เราจะลองนู่นลองนี่อ่ะ เป็นเรื่องดี แต่สุดท้าย มันต้องมีซักภาษาป่าวว่ะ หรือ ซักเรื่องป่าววะ ที่เราสามารถทำให้เป็นระดับ Enterprise ได้ เขาสามารถจ้างเราทำได้ ทุกคนว่าจริงมั้ย ยังไงก็เป็นกำลังใจให้ผมด้วยละกันนะครับ น้อ ฝากติดตามผลงานด้วย จบดื้อ ๆ แบบนี้เลยเหรอ เออ ใช่สิ


Source Code - GitHub