นั่งอ่านบทความเรื่องการย้ายระบบงานด้วยภาษา Go จาก Golang :: Success Story 
มีหลาย ๆ เรื่องราวที่น่าสนใจ แต่มีเรื่องหนึ่งที่เขาเล่ามาได้ดีมาก ๆ
คือการย้ายจากภาษา Python มาใช้ภาษา Go
ที่ชอบคือ ลำดับขั้นตอนการศึกษา พร้อมแหล่งที่มา
ทำให้เข้าใจได้ง่าย จึงทำการสรุปไว้นิดหน่อย

สิ่งแรกที่บทความอธิบายคือ

ภาษา Python นั้นดีมาก ๆ พัฒนาได้ทั้ง
Web, เขียน script ง่าย ๆ, Machine Learning และ Data visualization
แต่ภาษา Go นั้นก็โตขึ้นมาถึงจุดที่น่าสนใจ
รวมทั้งเรื่องของ performance ที่ดี
ดังนั้นจึงเป็นอีกหนึ่งภาษาที่น่าสนใจ
มีความรู้หลาย ๆ ภาษา น่าจะดีกว่าภาษาเดียว
เพื่อช่วยให้ตัดสินใจได้ว่า งานอะไรเหมาะกับภาษาหรือเครื่องมืออะไร

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

ขั้นตอนที่ 1 เริ่มจากการศึกษาความรู้พื้นฐานของภาษา  นั่นก็คือ Go Tour 
ตอนนี้มีแปลเป็นภาษาไทยแล้วด้วย

ขั้นตอนที่ 2 ศึกษาเพิ่มเติมจากมุมมองของ Python
คือ e-book ที่ชื่อว่า Go for Python programmers
ทำให้เห็นว่าภาษา Python กับ Go ต่างกันอย่างไรบ้าง  ทั้งเรื่องของ

  • Project structure/layout ซึ่งอ่านเพิ่มเติมได้จาก How to write Go code ? 
  • เจอ Static type language เข้าไป อาจจะทำให้คนที่มาจาก Dynamic type language อย่าง Python และ Ruby สับสนหรือขัดใจได้ หรืออาจจะชอบก็ได้
  • เรื่องของ concurency ที่มีมากับภาษา Go เลย ทั้ง goroutine และ channel ตรงนี้หลาย ๆ คนชอบ โดยแนะนำให้ศึกษาเพิ่มเติมจาก Golang routine and Channel และ Behavior of channel
  • การทำงานกับ JSON data ทำการศึกษาเพิ่มเติมได้จาก Go by Example และ Go and JSON
  • เรื่องของ Clean code ซึ่งภาษา Go นั้นได้เตรียมไว้ให้ตั้งแต่ compiler และ เครื่องมือต่าง ๆ เช่น gofmt สำหรับการจัด format ของ code จะได้ไม่ต้องมานั่งเถียงกันเป็นต้น ซึ่งแนะนำให้อ่าน Effective Go ก่อนเลย

ขั้นตอนที่ 3 หา Library และ Framework ที่เหมาะสมกับงาน
เนื่องจากภาษา Python จะมี library และ framework ที่ได้รับความนิยม
เช่น Flask, Jinja2, Request และ Kazoo
แต่สำหรับภาษา Go มันยังไม่ชัดเจนเลย ว่าอะไรทำอะไรบ้าง ?
โดยเจ้าของบทความก็ได้เปรียบเทียบกับภาษา Python ไว้ดังนี้

  • Python requests เทียบได้กับ net/http package
  • Flask + Jinja2 เทียบได้กับ Gin
  • CLI creation เทียบได้กับ Cobra สำหรับสร้าง CLI application ซึ่งมีหลาย ๆ  project ที่ใช้งานเช่น Kubernetes และ OpenShift เป็นต้น
  • Viper และ Config สำหรับ configuration management

สามารถดูเพิ่มเติมได้จาก Awesome Go

สุดท้ายมี resources ต่าง ๆ เพิ่มเติมให้ศึกษาอีก