[Day 1] Year In Review 2018 In 30 Days

Photo by Reuben Juarez on Unsplash

ช่วงนี้ได้อ่าน Review สรุปปี 2018 ของหลายๆคน ก็อยากเขียนบ้าง แต่เขียนสรุปมันก็น่าเบื่อไป เอาเป็นว่าผมจะ Challenge ตัวเองเลยละกัน ในหัวข้อ 30 Days Challenge โดยจะเขียนบล็อค วันละบล็อค เรื่องที่ตัวเองได้เรียนรู้ในปีที่ผ่านมาเกี่ยวกับ Web Development 30 วันติดต่อกัน ทดแทนช่วงที่เขียนบล็อคน้อย เลยเกิดมาเป็นบล็อคนี้ครับ (จริงๆ เดือนนี้มี 31 วัน แต่แถมสำรอง 1วัน เผื่อลืมเขียน หรือติดปัญหาอะไรก็แล้วแต่)

จุดประสงค์คือ

  1. ได้ทบทวนตัวเองว่าในปีที่ผ่านมาเรียนรู้อะไรไปบ้าง (ผมเน้นเฉพาะด้านการพัฒนาตัวเองในสายงาน IT & Software ละกันเนาะ)
  2. ได้ Research และเรียนรู้เพิ่มเติม ในเรื่องที่ผ่านมา (บางเรื่องรู้แบบเบสิคๆ เวลามาเขียนบทความ อย่างน้อยก็ต้อง Research และมั่นใจว่าคุณภาพมันต้องได้ ลดข้อผิดพลาดให้มากที่สุด ไม่เขียนมั่วๆ แต่ถ้ามีก็จะแก้ไขให้ถูกต้อง 😄)

ซึ่งมันก็ดันไปคล้ายๆเมื่อหลายปีก่อน ที่ผม Challenge ตัวเอง ตอนหัดเขียน Android ใหม่ๆโดยการเรียนและหัดใช้ Library in 30 Days และเขียนบล็อคเล่าเรื่อง มันได้อะไรหลายๆอย่าง ได้ฝึกตัวเอง ได้ทบทวน ได้เรียนรู้ ฉะนั้นใครอยากทำอะไร ปีใหม่ด้วย ถือเป็นโอกาสดีในการเริ่มต้นอะไรใหม่ๆครับ


Day 1 : Elixir & Phoenix

ผมยกเรื่อง Elixir และ Phoenix ขึ้นมาเป็น Day 1 เพราะว่าอะไร? เพราะมันเป็น Goal ของผม ตั้งแต่ 2017, 2018 และก็พบว่า เราผ่านแค่ Getting Started หรือแค่ Tutorial เท่านั้น ไม่ได้เรียนจริงๆจังๆเลย แค่ทำตาม Tutorial ได้ แต่ก็มีสิ่งที่ได้เรียนรู้อยู่เหมือนกัน ยังถือว่าเป็นมือใหม่ ปีนี้ 2019 ก็จะยังอยากลอง จริงๆจังๆอีกซักครั้ง Fail แล้วก็ตั้งใจใหม่ให้ได้ เป็นเหมือน Phoenix ที่ไม่มีวันตาย 😃

จริงๆ Elixir & Phoenix นั้นได้แรงบันดาลใจจาก Jose Valim และก็ Thougtbot เลยครับ ทำให้อยากลองศึกษา และมองว่ามันน่าสนใจ

สิ่งที่ได้เรียนรู้คือ

  • สามารถติดตั้ง Elixir บน Mac ได้ โดยการติดตั้งผ่าน Homebrew brew install elixir และใช้ ASDF เป็น Version Manager ไว้จัดการได้ทั้ง Elixir, Ruby, Node
  • Elixir รันอยู่บน Erlang แต่ไม่ได้หัด Erlang เลย เอาเป็นว่าให้แก้อะไรหรือไปต่อกับ Erlang ทำไม่ได้
  • ได้รู้จัก hex ซึ่งเป็นคล้ายๆ NPM ของ Node.js นั่นแหละ แต่อันนี้เป็นของ Erlang (Elixir รันบน Erlang อีกที เลยได้อานิสงไปด้วย)
  • IEx.Helpers คือดีมากกกก 👍
  • ก็มีงงๆกับ Functional Programming อยู่บ้าง อย่างเช่น อยากวนลูปง่ายๆเองนะ ไม่ใช้ For Loop จะทำไง ใช้ list แล้ว map เอาดีมั้ย? อะไรพวกนี้
  • Elixir School และ Elixir Guide เป็นแห่งเรียนรู้ชั้นดี
  • ExUnit ตัว Testing ที่ Built in มาในตัว รู้สึกว่ามันง่ายกว่าการใช้ Test บน JavaScript ที่มันมีอยู่เต็มไปหมดบนท้องตลาด
  • Pipe Operator: ใน Elixir เป็นอะไรที่ชอบมาก อารมณ์คล้ายๆการ Chain Method ของภาษาอื่นๆ
  • Pattern Matching: เป็นเรื่องใหม่ทีเดียว ทีแรกก็จะงงๆ จากปกติถ้าภาษา JavaScript เราแค่ assign ค่าให้มัน แต่ใน Elixir ไม่ใช่การ assign
  • พยายามจะทำความเข้าใจ Agent กับ GenServer แต่ก็ยังงงๆจนถึงทุกวันนี้
  • สนใจ Phoenix และว้าวกับบทความนี้มาก The Road to 2 Million Websocket Connections in Phoenix
  • ลองหัดใช้ Phoenix Framework ทำตาม Tutorial บนหน้าเว็บ ง่ายมาก และเค้าเคลมว่า render หน้าเว็บเร็วระดับ micro second เลย ลองดูแล้วก็ไวมากๆจริงๆแหละ แต่มันเป็นแค่ Hello World ก็ถ้าเป็น Complex Web ก็ไม่รู้จะเป็นยังไง
  • Phoenix ยังต้องติดใช้ Node.js อยู่นะ คือเอาไว้ Install dependencies นะ
  • Concept ทั้งหมด คล้ายๆ Rails ก็ถ้าเคยเขียน Rails มาแล้ว ไม่ยาก จริงๆ เห็นสาย Ruby on Rails ย้ายมา Elixir & Phoenix เยอะมากๆ 😏
  • ลองใช้ Channel ตาม Tutorial จริงๆเป็น Web Socket นั่นแหละ ก็รู้สึกสะดวกดี ทำ Real Time ได้ง่ายมากๆ
  • ได้ลองหา Library ที่มันใกล้เคียงกับ Ruby on Rails เผื่อชีวิตจะง่ายขึ้น เลยได้ List มาหลายรายการ แม้ว่าบางตัวมันจะเทียบไม่ได้กับ Gem ของ Rails ก็ตาม
  • Coherence เทียบกับ Devise
  • ExAdmin เทียบได้กับพวก Rails Admin, Active Admin, Administrate
  • distilery เทียบได้กับ capistrano มั้ง ผมยังไม่มี Product จริงๆเลย ฮา
  • arc เหมือน Paperclip มั้ง หรือตอนนี้ก็ใช้ Active Storage กันละ
  • exq เหมือน Sidekiq
  • ได้ลองทำตาม Tutorial โดยการทำ Trello Clone ด้วย Phoenix และ React อันนี้ได้เรียนรู้ทั้ง Elixir ทั้ง React ได้เปิดมุมมอง การวาง Structure การไหลของ Flow การ Handle ต่างๆ จริงๆก็คล้าย Ruby และ Rails อยู่เหมือนกัน (ก็ดูชื่อคนสร้าง Elixir ซิ 😆)
  • AsesomeElixir มีทุกอย่างที่ต้องการ อยู่ที่ว่าจะค้นหาจิ๊กซอ และนำมาต่อกันได้ตามที่ต้องการรึเปล่า (ภาพแต่ละคนไม่เท่ากัน บางคนอยากต่อแค่บ้าน ต่อทั้งสวน ต่อแค่หน้าต่าง 😄)

จบแล้วครับ ก็สำหรับปี 2018 ที่ผ่านมา ผมก็ได้เรียนรู้ Elixir & Phoenix ไปประมาณนี้ ทั้งหมดไม่ได้เกี่ยวข้องกับงาน Full Time เลย อาศัยอ่าน ศึกษาช่วงว่างและหลังเลิกงาน ยังถือว่าเป็น Baby อยู่เลย ยังต้องตาม Tutorial ยังไม่ได้เริ่ม Adapt เอามาใช้เลย หวังว่าปีนี้ 2019 จะได้เห็นโปรดัคซักชิ้นด้วย Elixir & Phoenix ไม่แน่เว็บบล็อค Devahoy ผม อาจจะเป็นหนึ่งในนั้น 😎

หนังสือ 2 เล่มนี้ คือเป้าหมายที่ต้องอ่านให้จบในปี้นี้


ก่อนจากกัน

จริงๆอยากให้ผู้ที่หลงเข้ามาอ่าน มาลอง Challenge กันมั้ยครับ เอาเป็นว่าผมท้าเลยละกัน เรามาทำ 30 Days Challenge กันดีกว่า เรื่องอะไรก็ได้ จริงๆไม่เกี่ยวกับ IT&Coding ก็ได้นะครับ เช่น จะวิ่งทุกเช้า, จะอ่านหนังสือ, จะลดน้ำตาล, ออมเงิน, งดปาร์ตี้, งดเล่นเกม, ลด social, อื่นๆ ได้หมด เพราะการพัฒนาตัวเองมันทำได้ทุกเรื่อง ไม่จำกัดหัวข้ออยู่แล้ว ไม่ต้องอายว่าเราไม่รู้ ไม่เก่ง ขอแค่เราพัฒนาและเก่งขึ้นในทุกๆวันก็พอ จะแคร์คนอื่นทำไม แล้วมาแชร์กันนะครับ 💪

Happy New Year & Happy Coding ❤️