Natcha Luang - Aroonchai

Trust me I'm Petdo

Bangkok, Thailand

[Blog] 2015 Year in Review

สวัสดีครับห่างหายไปจากการเขียนบทความเป็นเดือนเลย เปิดมาบทความแรกของปี 2016 ก็เลยมาสรุปความเป็นไปในปีที่แล้วกันหน่อย ถึงแม้จะเกือบสิ้นเดือนมกราคมแล้วก็ตาม แต่ก็ยังดีกว่าไม่ได้เขียน :D

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

กลับมาเขียนบล็อกอีกครั้ง

ผมจดโดเมน nomkhonwaan.com ตั้งแต่สมัยเป็นนักศึกษาและเริ่มเขียนบล็อก โดยบทความแรก ๆ ก็เป็นเรื่องราวเกี่ยวกับเทคนิคการเขียนโปรแกรมคล้าย ๆ กับในตอนนี้แหละ แต่จะมีพวกบทความเกี่ยวกับการ setup เซิฟเวอร์เยอะหน่อยเพราะช่วงนั้นกำลังเห่อ Linux (Ubuntu 10.04LTS) ก่อนที่จะหยุดเขียนไปพักใหญ่ ๆ

จากนั้นก็กลับมาเขียนอีกครั้งในปีที่แล้วโดยเริ่มจากไปใช้ WordPress ก่อนจะย้ายมา Ghost และจบที่ Hugo อย่างที่เห็นในปัจจุบัน ซึ่งก็ไม่แน่นอนว่าในอนาคตจะย้ายไปใช้อย่างอื่นอีกหรือปล่าว

เหตุผลที่ผมกลับมาเขียนบล็อกก็เพื่อต้องการบันทึกสิ่งที่ได้เรียนรู้จากการทำงานบ้าง จากการอ่านบ้างหรือแม้แต่ปัญหาที่พบเจอในระหว่างการทำงาน ถ้าเป็นเรื่องที่น่าสนใจก็จะนำมาเขียนเล่าเอาไว้ในนี้ เพื่อเก็บไว้อ่านเองหรือแบ่งปันสำหรับคนที่เจอปัญหาอย่างเดียวกัน ไม่ได้คิดจะหาเงินจากการเขียนบล็อกและตั้งใจว่าจะไม่หาเงินจากบล็อกนี้ด้วย ซึ่งก็มีบทความที่เขียนไว้เยอะอย่างที่ตั้งใจ (ตั้งใจว่าจะเขียนเดือนละ 1 บทความ) ก็ยังคงมีบางบทความที่ยังไม่ได้ทยอยลงก็จะพยายามหาเวลาว่างมาทยอยลงให้

เรียนรู้เทคโนโลยีใหม่

สำหรับชีวิต developer การเรียนรู้เป็นเหมือนเรื่องที่ต้องทำทั้งชีวิต ซึ่งนั่นก็ไม่ใช่เรื่องยากอะไรเพราะเป็นสิ่งที่ผมชอบอยู่แล้ว เลยลองมาสรุปดูว่าในปีที่ผ่านมาผมเรียนรู้อะไรไปบ้าง เอาเฉพาะที่เป็นเรื่องหลัก ๆ แล้วกันเพราะเรื่องย่อย ๆ มีเยอะแยะมากมาย :D

Golang

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

ข้อดีหลัก ๆ ของภาษา Go คือมันถูกสร้างด้วยแนวทางการแก้ปัญหาที่เกิดขึ้นกับภาษาโปรแกรมรุ่นเก่า ๆ ไม่ว่าจะเป็น concurrent, code format หรือ documentation ไม่พอยังมี testing แพคเกจมาให้ด้วยอีก ทำให้ตัวมันเองค่อนข้างที่จะมีฟังก์ชันการทำงานหลัก ๆ มาหมดแล้ว

อีกข้อที่ผมชอบคือมันเป็น static typing ทำให้ลดความปวดหัวในการ debug ได้พอสมควรซึ่งถ้ามีการเขียนโปรแกรมที่ไม่รัดกุมพอมันก็จะพบ error ตั้งแต่ compile time แล้ว

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

Docker

เป็นอีกเทคโนโลยีหนึ่งที่ตอนนี้น่าจะกลายเป็นมาตรฐานขององค์กรใหญ่ ๆ กันไปแล้ว เจ้า Docker เนี่ยจริง ๆ ไม่ใช่เจ้าแรกที่คิดค้นเทคโนโลยี container แต่มันดังเพราะว่าการใช้งานที่ง่ายและ UI เป็นมิตรกับผู้ใช้งาน แถมยังมีเว็บไซต์สำหรับแจกจ่าย Docker image ให้กับชุมชนนักพัฒนาอย่าง https://hub.docker.com เลยทำให้มันดังมาก ส่วนตัวผมเองก็สนับสนุนให้ใช้งาน Docker แทนที่จะเป็น Virtual Machine หรือ Vagrant เพราะว่ามัน config ได้ง่ายกว่ามาก แถมระบบคลาวด์หลาย ๆ เจ้าก็รองรับเทคโนโลยีนี้กันหมดแล้วอีกต่างหาก

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

ตอนนี้เทคโนโลยีของ Docker เองก็ยังไม่นิ่งมากยังมีการเปลี่ยนแปลงอยู่ตลอดเวลาซึ่งก็ต้องคอยจับตามองดูว่าจะเป็นไปในแนวทางไหน ต้องแอบกระซิบนิดนึงว่า Docker เนี่ยเขียนด้วยภาษา Go น่ะถ้าไม่เชื่อ ดูนี่

Continuous Integration

หรือที่รู้จักกันในชื่อย่อว่า CI เป็นอีกเรื่องที่มีมานานแต่ผมเพิ่งได้มาสนใจ ต้นเหตุก็มาจากการใช้งานคลาวด์นั่นแหละ คือเบื่อที่จะต้องมาคอยจำว่าก่อน deploy จะต้องมี tasks อะไรบ้างเลยจับเอา CI มาใช้งานเสียเลย

หลัก ๆ ก็เอามาใช้กับบล็อกนี้โดยใช้ Wercker สำหรับทำ build และ deploy ขึ้น Google AppEngine ก็รู้สึกว่าถ้าใช้งานพวก CI ได้คล่อง ๆ มันทำให้ลดเวลาการทำงานพวก build & deploy tasks ตรงนี้ลงไปได้เยอะ

และถ้าต้องทำงานกับทีมใหญ่ ๆ ขั้นตอนการสอนให้คนอื่นเข้าใจ tasks การ build & deploy ก็จะหมดไปแค่สอนให้รู้ว่าต้อง click ยังไงเลือก target เป็นที่ไหนทุกอย่างก็เสร็จโดยอัตโนมัติ

คลาวด์คือที่สุดแห่งปี

ถึงกับต้องยกมาเขียนเป็นหัวข้อใหญ่เลยสำหรับเรื่องนี้ ปีที่ผ่านมาเป็นเหมือนปีทองของวงการคลาวด์อย่างมาก ทั้ง Google, Amazon หรือแม้แต่น้องใหม่ IBM ก็งัดโปรออกมาแข่งกันสนุกสนาน จนพี่ใหญ่อย่าง M$ ยังต้องออกแพคเกจ Azure ราคานักศึกษามาล่อใจกันเลยทีเดียว

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

JavaScript กับการทวงคืนบัลลัง

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

พูดถึง JavaScript แล้วจะไม่เอ่ยถึง view framework อย่าง React และ AngularJS ได้อย่างไรซึ่งสองตัวนี้กำลังเป็นกระแสที่น่าจับตามองทั้งเปิดตัวของ React ที่การันตีเรื่องความเร็ว และการมาของ AngularJS 2 ที่บอกว่าสนับสนุน ES2015 อย่างเป็นทางการ ชักสนุกแล้วสิ

อ๊ะพูดถึง ES2015 ก็เป็นอีกสิ่งที่ทำให้ JavaScript จะเป็น OOP โดยแท้จริงแล้วหลังจากที่ต้องใช้การ inject เข้า prototype กันมานานแรมปี แต่ถึงอย่างนั้นสิ่งที่ impact จริง ๆ น่าจะเป็นเรื่องของ syntax ที่ดูสะอาดตามากขึ้นและจัดเป็นระบบระเบียบอย่างดี แถมมาพร้อมกับโมดูล import/export ที่มีใน nodejs เพียงอย่างเดียว ตอนนี้มันสามารถทำงานบน web browser ได้แล้วน่ะ

ส่งท้าย

ลองมาไล่เรียงสิ่งที่ตั้งใจว่าจะทำในปีนี้กันดีกว่าว่าจะมีอะไรบ้าง

  • กลับมาเขียน nodejs ให้คล่องมากกว่าเดิมและเพิ่มเติมคือ ES2015
  • Sass น่าจะเป็นที่พึ่งของชีวิตมากกว่า Less และจะพยายามลดการพึ่งพา Susy และ Compass ลง
  • React native ถ้ามีเวลาว่างอาจจะลองเขียนแอพเล่นสักตัว
  • Flux และ Redux น่าจะเป็นสิ่งที่ช่วยให้ React เขียนได้เป็นระเบียบมากกว่านี้
  • และสุดท้ายจะพยายามเขียนบทความให้มากกว่านี้

Comments