ในการพัฒนา software นั้นมีเครื่องมือมากมายให้เลือกใช้งาน
ต่างมีข้อดีและข้อเสียกันไป
เพื่อช่วยเพิ่ม efficiency และ productivity ของตัวเองและทีม

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

ปล.
ใครมีเครื่องมือที่น่าสนใจแนะนำกันได้นะครับ

1. Terminal

คือ command line นั่นเอง ใช้สำหรับ execute process ต่าง ๆ
ซึ่งสัมพันธ์กับงานที่พัฒนาด้วย
ว่าจะใช้บ่อย หรือมากน้อยเพียงใด
แต่ก็ต้องใช้เป็นประจำทุก ๆ วัน

ตัวอย่างการใช้งานที่เร็วมาก ๆ คือ
การ copy/move/delete ไฟล์
การ download program/app
ซึ่งทุกสิ่งที่ทำงานผ่าน command line ได้

ปล. สำหรับคนที่ใช้งาน terminal น่าจะต้องใช้ Tmux ด้วยนะ

2. Docker

สำหรับนักพัฒนาสมัยใหม่น่าจะต้องมี Docker ไว้ใช้งาน
Docker ช่วยทำให้นักพัฒนาสามารถ
หาสิ่งที่ต้องการได้ง่ายขึ้น
ทดสอบสิ่งที่ต้องการได้ง่ายขึ้น
Run สิ่งที่ต้องการได้ง่ายขึ้น
Deploy สิ่งที่ต้องการได้ง่ายขึ้น
ไม่ผูกติดกับระบบปฏิบัติการอีกต่อไปแล้ว

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

3. IntelliJ IDE

เป็น IDE (Integrated Development Environment) ที่ใช้งานเป็นประจำ
ไม่ว่าจะภาษาโปรแกรมอะไรก็ใช้งาน IntelliJ IDE เป็นหลัก
เนื่องจากมี feature ต่าง ๆ ที่ช่วยทำให้การพัฒนาเร็วและง่ายขึ้น
ทั้ง Auto-completion, UI ที่ใช้ง่าย
รวมไปถึง Error analysis และ Quick fix ให้ใช้งาน
จากการใช้งานมาพบว่า เพิ่ม productivity อย่างมาก

4. Slack

เป็น app เอาไว้ใช้ติดต่อสื่อสาร พูดคุย และ sync up กันภายในทีม
เพื่อลดการใช้งาน email กันภายในทีม
สามารถแบ่งกลุ่มหรือ channel ของการพูดคุย
มี direct message ให้คุยตรง ๆ กันได้
รวมทั้งยังสามารถ integrate เข้ากับระบบต่าง ๆ ได้ง่ายอีกด้วย
เช่น integrate เข้ากับระบบ Continuous Integration, Continuos Delivery
เมื่อเกิดปัญหาก็ให้แจ้งไปยังคนหรือกลุ่มที่เกี่ยวข้อง
รวมทั้งสามารถพัฒนา bot ไว้ใช้งานได้อีกด้วย

ปล. ถ้าเสียเงินให้ slack จะดีกว่านี้ แต่เท่าที่ใช้งานแบบฟรีก็แจ่มแล้วนะ !!

5. Feedly

สำหรับการกรองข้อมูลต่าง ๆ ในโลก online ที่มีจำนวนเยอะมาก ๆ
ผมจะทำการบันทึก feed หรือ website ที่น่าสนใจไว้ที่ Feedly
ช่วยทำให้เราสามารถ update ข่าวสารต่าง ๆ ที่สนใจได้อย่างง่ายดายและรวดเร็ว
เป็นเครื่องมือที่ผมใช้เป็นประจำทุกวัน

6. Git และ Github

Git เป็น distributed version control สำหรับการจัดการ source code หรือเอกสารของระบบงาน
เพื่อทำการบันทึกการเปลี่ยนแปลงต่าง ๆ ไว้
ทำให้การทำงานเป็นทีมง่ายและสะดวกขึ้น

ส่วน Github คือระบบ web สำหรับให้บริการ Git repository
เราสามารถ push/pull code ได้
เราสามารถ upload/download ได้
เราสามารถค้นหาสิ่งที่ต้องการได้
สามารถเลือกใช้ได้ทั้งฟรีและเสียเงิน
หลาย ๆ บริษัทใช้ Github เป็นอีกช่องทางหนึ่งในการรับพนักงานด้วยนะ !!

ถ้าต้องการติดตั้งเป็น server ของตัวเองสามารถใช้ Gitlab ได้

ปล. ใครบ้างที่ยังไม่ใช้ version control บ้างนะ ?

7. Sublime และ Atom

เป็น Text Editor ที่ใช้งานเป็นประจำ
บางคนอาจจะบอกว่าทั้งสองต่างกันหรือดีกว่ากันอย่างไร
แต่ผมก็ใช้ทั้งสองนั่นแหละ
เนื่องจากโดยพื้นฐานจะไม่ต่างกันมาก
ทั้ง shortcut key และระบบ plugin

8. Google Chrome

เป็น browser ที่ใช้บ่อยที่สุดแล้ว
เนื่องจากมันใช้งานง่าย เร็ว
แถมมี extension และ developer tool ให้ใช้แบบครบครัน

ปล. กิน RAM น่าดู !!

9. Jenkins

สำหรับการสร้างระบบ Continuous Integration (CI) ของการพัฒนาระบบงานต่าง ๆ แล้ว
จะเลือกใช้งาน Jenkins เป็นตัวแรก
ช่วยให้เราสามารถสร้างระบบ build automation ของระบบได้ง่าย
ดังนั้นเมื่อมีการเปลี่ยนแปลงเกิดขึ้นมา
ระบบ Jenkins จะทำการ build แบบอัตโนมัติให้
เป็นสิ่งที่สำคัญมาก ๆ ต่อการพัฒนา software

ถ้าเป็นระบบ Cloud จะใช้งานผ่าน Travis-CI

10. StackOverflow.com

สำหรับนักพัฒนาแล้ว StackOverflow คือคัมภีร์เปลี่ยนเส้นเอ็นเลยก็ว่าได้
เนื่องจากมีทุกคำตอบจากทุกคำถาม
เพราะว่า ถ้าไปค้นหาจาก google ก็จะพบคำตอบแรก ๆ จากที่นี่ทั้งนั้น
ดังนั้นนักพัฒนาต้องหัดใช้ให้เป็นนะครับ
แล้วจะเพิ่ม productivity อย่างมาก

ปล. อย่า copy คำถามมาใช้นะครับ !!

สุดท้ายก็ Youtube เอาไว้เปิดเพลงฟัง