iStock_000001225226Small__10avt3__
ในโลกของการพัฒนา software นั้น
เรื่องเทคโนโลยี วิธีการแก้ไขปัญหา และ เครื่องมือ มันออกมาเยอะมากๆ
รวมทั้งมีการเปลี่ยนแปลงที่รวดเร็ว

ให้เชื่อเถอะว่า
สิ่งที่คุณคิดว่ามันคือสิ่งที่ดีเมื่อปีที่แล้ว
วันนี้มันอาจจะไม่ใช่สิ่งที่ดีที่สุดไปแล้ว

ดังนั้น เราจะรู้เท่าทัน หรือ เรียนรู้เพื่อรับความรู้ใหม่ๆ ได้อย่างไร
และเราจะเรียงลำดับความสำคัญในการเรียนรู้อย่างไร
มาดูกันดีกว่า

แน่นอนว่า เราไม่สามารถที่จะเรียนรู้ในทุกสิ่งทุกอย่างได้หรอกนะ

ยิ่งในโลกของการพัฒนา software แล้ว ยิ่งไม่มีทางทำได้
เพราะว่า มันเยอะมากๆ ทั้งเรื่องของ

  • เทคโนโลยี
  • เครื่องมือ
  • Framework
  • ภาษาโปรแกรม
  • วิธีการแก้ไขปัญหา
  • Technical practice ต่างๆ
  • Hardware
  • และอื่นๆ อีกมากมาย

บางคนอาจจะบอกว่า ทำได้นะ แต่ว่ามันยากมากๆๆ

โดยระหว่างที่คุณอ่าน blog นี้
อาจจะมี 20-30 project ถูกสร้างขึ้นมาที่ Github ก็ได้นะ !!

แล้วเราจะ update สิ่งต่างๆ เหล่านี้อย่างไรดีล่ะ ?

มีวิธีการง่ายๆ ที่ขอแนะนำดังนี้

1. อ่านหนังสือ พวก Technical ต่างๆ
เป็นวิธีการที่ดี สำหรับทำความเข้าใจกับ technology
แต่อาจจะช้าหน่อยนะ ซึ่งนั่นคือข้อเสียที่ใหญ่เลย
ยิ่ง technology ที่มันเฉพาะเจาะจง ยิ่ง out-of-date เร็วมากๆ

แต่ก็มีหนังสือหลายๆ เล่มที่ไม่เคยตกยุค
และนักพัฒนาทุกๆ คนควรอ่าน หรือมีไว้ติดตัว เช่น

2. อ่าน blog และ บทความตาม web ต่างๆ
รวมทั้งการตามฟัง vdo และ podcast
เป็นวิธีการสำหรับการ update ข่าวสารทางเทคโนโลยีที่ดีมากๆ
ยิ่งพวก blog นั้นทำให้เราสามารถอ่านได้ง่าย และ รวดเร็ว
เหมาะกับยุคที่อะไรๆ ก็ต้องการความรวดเร็ว
ส่วนใครต้องอยู่บนถนน หรือ เดินทางเป็นเวลานานๆ
แนะนำพวก podcast นะ ให้ทำการ download และนำไปฟังระหว่างทางซะ

3. รับข่าวสารทาง Social media ต่างๆ
ผมคิดว่าปัจจุบันส่วนใหญ่จะต้องเล่น Social media อย่างน้อยหนึ่งตัว
เช่น Facebook, Twitter, Instagram, Line เป็นต้น
แต่มีสักกี่คนที่ใช้ Social media ต่างๆ สำหรับการหาความรู้กันบ้าง !!

วิธีที่ผมขอแนะนำคือ
การใช้ twitter เป็นช่องทางในการ update ข่าวสาร
นั่นคือ คุณสามารถติดตามได้หลายรูปแบบ เช่น

  • ใช้ keyword เพื่อกรองข้อมูลตามที่เราต้องการแบบ realtime
  • ทำการ follow หรือ ติดตามคนที่เราสนใจ
  • ทำการ follow หรือ ติดตาม project ต่างๆ ที่เราสนใจ

ต่อมาคือการ follow หรือ subscribe project ต่างๆ ใน Github
จะช่วยให้เราเห็นการเปลี่ยนแปลงต่างๆ ของสิ่งที่เราสนใจได้อย่างรวดเร็ว

เรามีตั้ง 3 วิธีการ แล้วเราจะแบ่งเวลาศึกษาอย่างไรดีล่ะ ?

จะติดตาม หรือ ศึกษาทั้งหมดที่มันเปลี่ยนแปลงก็คงทำไม่ได้นะ
ลองดูวิธีการศึกษาแบบง่ายๆ ดูไหม ?

เริ่มด้วยให้เวลาไปกับสิ่งที่เกี่ยวข้องกับงานของคุณ
เช่น ทำให้คุณพัฒนาตัวเองดีขึ้น
หรือ เกี่ยวข้องกับงาน หรือ ธุรกิจหลักของคุณ

จากนั้นจึงเริ่มลงไปในรายละเอียดของแต่ละตัวที่เลือกแล้ว
สุดท้ายให้ลงมือสร้าง product อะไรออกมาสักตัว
เพื่อพิสูจน์สิ่งที่เราเลือก และ ศึกษา ว่ามันสามารถทำได้จริงๆ นะ

สิ่งที่คุณจะได้ออกมา ก็คือ product หรือ แนวคิด
ที่สามารถนำไปใช้ในงานของคุณได้ทันที หรือ ได้ง่าย
โดยไม่ต้องมาเสียเวลาศึกษาใหม่อีกนะครับ

มาดูกันหน่อยสิ ถ้าคุณเป็นนักพัฒนา software ควรทำอย่างไรดี ?

สิ่งที่ผมขอแนะนำประกอบไปด้วย 3 ส่วนเช่นกัน ดังนี้

1. ให้เวลากับสิ่งที่เรียกว่า Software Craftsmanship
เพื่อทำการปรับปรุงแนวคิด และ ความสามารถของคุณ
ไม่ใช่การเรียนรู้เฉพาะในสิ่งใหม่ๆ เท่านั้น
ตัวอย่างเช่น

  • การเรียนรู้แนวคิด Test-Driven Development (TDD)
  • การเรียนรู้เรื่อง Clean code
  • การเรียนรู้เรื่อง Design pattern
  • การเรียนรู้เรื่อง Simple Design
  • การเรียนรู้ภาษาโปรแกรมใหม่ๆ
  • การเรียนรู้รูปแบบอื่นๆ ของภาษาโปรแกรม

รวมทั้งยังมีพวก soft skill อื่นๆ อีก
รวมทั้งการอ่าน การเขียน การฟัง การพูด
นั่นคือ ปรับปรุงการเรียนรู้ของคุณนั่นเอง
คุณต้องลงทุนเวลาให้กับการเรียนรู้มากกว่านี้

2. ให้เวลากับการเรียนรู้เทคโนโลยี
เพื่อให้คุณมีความรู้ ความเข้าใจ กับเทคโนโลยีนั้นๆ ดีขึ้น
รวมทั้ง เพิ่มมุมมองสำหรับการแก้ไขปัญหาใหม่ๆ อีกด้วย

เช่น
ถ้าคุณเป็น Web developer
คุณก็ควรจะศึกษาพวก Javascript framework ใหม่ๆ บ้างนะ
เช่น AngularJS และ Ember เป็นต้น
หรือศึกษาพวก backend framework ใหม่ๆ ด้วย
เช่น Ruby On Rails และ NodeJS เป็นต้น

ถ้าคุณเป็น iOS developer ก็ควรศึกษา Android ด้วยนะ

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

3. ลองเข้าไปร่วมงานกับ project ต่างๆ ที่เราสนใจ
และเราอาจจะจะนำมาใช้ในอนาคต
เช่น สามารถเข้าไปร่วม contribute ได้

  • ทั้งการเขียน code
  • ทั้งการทดสอบ
  • ทั้งการให้ feedback ต่างๆ

มันจะทำให้เรามีความรู้ความเข้าใจมากยิ่งขึ้น
รวมทั้งจะช่วยทำให้เรารู้และเห็นว่า ในอนาคตจะเป็นอย่างไร

แต่เหนือสิ่งอื่นใด

คำแนะนำต่างๆ เหล่านี้ สามารถเปลี่ยนแปลงได้เสมอ
เนื่องจากแต่ละคนล้วนมีหน้าที่ความรับผิดชอบ
และสถานการณ์ที่แตกต่างกัน

แต่อย่างไรก็ตาม ให้จำไว้ว่า
อย่าไปสนใจเรื่องของจำนวน ว่าคุณจะเรียนรู้ได้มากเท่าไร
แต่ให้สนใจว่า คุณเรียนรู้อย่างไร และ จัดเวลาในการเรียนรู้อย่างไร

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

ปล. ทุกการลงทุนมีความเสี่ยง โปรดอ่านคำเตือนบนฉลากก่อนศึกษาทุกครั้งนะครับ !!