ผมเขียนโปรแกรมครบ 3 ปีแล้วครับ :)

ผมเขียนโปรแกรมครบ 3 ปีแล้วครับ :) Cover Image

สวัสดีครับ บทความนี้ขอเขียนเพื่อแชร์ประสบการณ์การเขียนโปรแกรมของผมนะครับ เนื่องจากว่า วันนี้ (13 กุมภาพันธ์) เมื่อ 3 ปีที่แล้ว เป็นการหัดเขียนและเริ่มรู้จักกับโลกของการเขียนโปรแกรม หรืออาจจะเรียกว่าวันแรกที่ได้ทำงานเป็นโปรแกรมเมอร์ก็ได้ :)

ความเป็นมา

ขอเล่าคร่าวๆเกี่ยวกับตัวเองซักเล็กน้อยครับ ผมจบสายคอมมา ก็มีเรียนแทบทุกอย่างที่เกี่ยวข้องกับ Programming ไม่ว่าจะเป็น Theory, Data Structure, Algorithm, Database, OOP ซึ่งภาษาที่ผมเรียนก็คือ C และ C# (OOP) เท่านั้น และจบออกมาด้วยความรู้ที่ต้องบอกเลยว่า ไม่เป็นอะไรเลย นอกจากความรู้พื้นฐานโปรแกรมมิ่งทั่วไปแล้ว เช่น if/else, loop และ logic ซึ่งติดตัวมาบ้างนิดๆหน่อยๆ แต่ถ้าพูดถึงทฤษฎีหรือหลักการอะไรที่เรียนมานี่ ลืมไปได้เลย :) ผมเลยไม่รวมการเรียนมหาวิทยาลัยเป็นการเรียนโปรแกรมมิ่ง เพราะรู้สึกว่าตัวเองไม่ได้เรียน แต่แค่ให้ผ่านและจบไปเท่านั้นเอง ซึ่งหลายคนมักจะโทษหลักสูตร โทษสถาบันว่าสอนมาไม่ดี แต่ผมบอกเลยว่าอย่างในเคสผมต้องโทษตัวเองครับ ตอนนี้ยังมีแอบเสียดายเลย ที่ช่วงนั้นไม่ตั้งใจเรียนเลยซักนิด

Football

หลังเรียนจบ ความคิดและความรู้ที่ผมมีคือ :

  • ความคิดหลังเรียนจบ คือ ไม่เป็นโปรแกรมเมอร์แน่ๆ :)
  • จะไปเป็นนักฟุตบอล ฉะนั้นเรื่องที่ศึกษามาก็ไม่ใช้หรอก ฉะนั้นจะอ่านไปทำไมกัน
  • ผมเขียนเว็บไซต์ไม่เป็นเลยด้วยซ้ำ ไม่เคยสนใจ (เลยลองเปิด Dreamweaver แล้วพบว่า โปรแกรมไรว๊า ลากวางๆ จากนั้นก็ปิด ไม่แตะอีกเลย)
  • ผมไม่รู้จัก HTML/CSS/Javascript เลยซักนิด (ได้ยิน jQuery มาบ้าง แต่ไม่รู้ว่ามันคืออะไร)
  • เคยคิดว่าการทำเว็บไซต์ต้องเขียนด้วย Dreamweaver อย่างเดียว ทำให้ตอนนั้นไม่ได้สนใจด้านเว็บเลย
  • Java ได้รู้จักตอนฝึกงาน 2 เดือน แต่เนื่องจากการฝึกงานผมก็เหมือนกับตอนเรียน คือคิดแค่ว่าให้ผ่านก็พอ จึงแทบไม่ได้อะไรติดตัวมาเลย เสียดายจัง :(
  • Android ไม่รู้จัก (มื่อถือไม่มีใช้)
  • ฐานข้อมูล รู้จักแค่ CRUD พื้นฐานแบบทฤษฎี แต่ไม่เคยเอาไปใช้จริง
  • ที่ได้ติดตัวมา คงจะมีแค่ Logic และความรู้พื้นฐานโปรแกรมมิ่งเบื้องต้น ทั่วไป

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

ปีที่ 1 (Feb 2012 - Feb 2013)

Year 1

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

ผมพยายามอ่านและลองหัดทำตามไปทีละบทๆ รู้เรื่องซะ 20-30% อาศัยว่าอ่านหลายๆรอบ วนไปวนมา แต่ก็ไม่ได้อ่านทุกบทนะครับ ก็มีข้ามๆไปบ้าง จากที่ไม่ชอบโปรแกรมมิ่ง ก็เริ่มซึมซับไปเรื่อยๆ จากการที่ได้อยู่กับมันนานๆ บ่อยๆและทุกวัน

ที่ทำงาน ผมได้มีโอกาสเรียนรู้การเขียน iOS เล็กน้อย ประมาณ 1-2 เดือน โดยใช้เครื่องของบริษัท (ตอนนั้นผมยังไม่รู้จัก Android เลย) โดยตอนนั้น iOS เวอร์ชันอะไรก็จำไม่ได้ จำได้แต่โปรแกรม XCode น่าจะ 4.0 มั้ง ที่เปลี่ยนมาใช้ storyboard ครั้งแรก ศึกษา ios จากเว็บนี้ครับ macfeteria

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

จากนั้นก็มาหัดเขียน Java Spring ครับ ทั้งๆที่ไม่เคยแตะ Java EE หรือด้าน Java Web Application มาก่อนเลย ทำให้ตอนนั้นต้องไปศึกษา Java พื้นฐาน JSP พื้นฐานด้วย ไม่อย่างงั้นก็จะมองภาพรวม Java Spring ไม่ออก ผมก็เริ่มค้นคว้า และได้เว็บเหล่านี้ช่วยชีวิต :

  • Narisa.com : สำหรับทฤษฎี หลักการ และวิธีคิดแนวคิด Java ต่างๆ
  • jarticles.com : สำหรับบทความเกี่ยวกับ JSP
  • spring66 : สำหรับ Spring ภาษาไทย (ปัจจุบันเหลือแต่กรุ๊ป facebook) ตัวเว็บเข้าไม่ได้

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

  • Ubuntu : ได้รู้จักและหัดใช้ Ubuntu ครั้งแรก (12.04) หลักจากนั้นก็เปลี่ยนชีวิตผมไปเลย ผมหัดใช้โดยการ ปรับเปลี่ยนมาติดตั้งที่เครื่องส่วนตัว เพราะคิดว่าไหนๆก็จะใช้ทำงานแล้ว ก็ใช้มันที่บ้านด้วยไปเลย เลิกใช้ Windows เลิกเล่นเกม
  • StackOverflow : แหล่งค้นหาคำตอบ ชั้นดี จากที่แรกแก้ปัญหาด้วยคำภาษาไทย ตอนหลังเริ่มหา keyword ภาษาอังกฤษ ค้นพบว่า ทุกปัญหาของเรา มีคนพบเจอมาแล้วทั้งสิ้น
  • Github : ได้รู้จักแหล่งรวม source code ชั้นดี ไม่รอช้า รีบสมัครเลย แต่ตอนนี้ยังไม่รู้จักนะ แค่เอาไว้ดาวน์โหลดไฟล์ zip :)
  • Java SE Tutorials : Java Docs ของ Oracle เป็นแหล่งศึกษา่ที่ดีที่สุด พยายามเลือกอ่านเรื่องที่เราสนใจ หรือบางทีว่างๆ ก็นั่งอ่าน basic เล่นๆ
  • mkyong : เป็นเว็บที่ช่วยเหลือผมทั้ง Java และ Spring ที่ดีอีกเว็บ สำหรับมือใหม่
  • vogella : หัดเขียน Java พื้นฐานเบื้องต้น
  • coreservlets : ได้หัดเขียน และทำความเข้าใจ ๋JSP จากเว็บนี้

1 ปีผ่านไป ผมได้เรียนรู้พื้นฐาน Java ได้รู้จักโลกของ Open Source ได้รู้จักกับ Spring ได้หัดเขียน JSP และเป็นจุดเริ่มต้นให้เริ่มสนใจโปรแกรมมิ่งมากยิ่งขึ้นจากการที่ หาอ่านบทความภาษาอังกฤษ หัดหา keyword ภาษาอังกฤษ และพบว่า มีอะไรที่ให้ศึกษาอีกเยอะมากๆ เหมือนว่าได้เปิดหูเปิดมา มาดูโลกกว้าง จากที่เมื่อก่อน ทำอะไรก็ต้องหาแต่บทความภาษาไทย เจอภาษาอังกฤษก็ปิดทิ้ง ทันที แต่ตอนนี้พยายามค้นหาด้วยภาษาอังกฤษมากขึ้น แต่ก็ยังมีไทยผสมบาง เพราะยังอ่านไม่ค่อยเข้าใจเท่าไหร่ :)

ปีที่ 2 (Feb 2013 - Feb 2014)

Year 2

เริ่มต้นปีที่ 2 ของชีวิตการทำงานและชีวิตการเขียนโปรแกรม ผมยังคงศึกษา Java ต่อไป โดยผมเน้นบทความเฉพาะภาษาอังกฤษ ค้นหาแต่ภาษาอังกฤษ เพื่อฝึกภาษาอังกฤษไปในตัวด้วย ต่อมาก็เริ่มสนใจ Open Source และ OS อื่นๆ ทำให้ได้มีโอกาสได้ลองจับ Linux Distro ตัวอื่นๆ เช่น Mint, Fedora มีโอกาสได้หัดใช้ command line บ้าง หลักจากที่ตอนใช้ Ubuntu ทำได้แค่ apt-get update, apt-get install เท่านั้น :)

เมื่อหัดใช้ command line และต้อง config, install server บ่อยๆ ทำให้ต้องจดบันทึก และนั่งอ่านทุกๆครั้ง จึงเกิดมีความคิดทำบล็อคขึ้นมาซะเลย ก็เลยหัดใช้ Wordpress ทั้งๆที่ไม่เป็น php เลย (คนละเว็บกับปัจจุบัน) ช่วงนั้นก็พยายามศึกษา theme wordpress ไปด้วย เนื่องจากได้อ่านบทความนี้ Peerapong Sells over $2 Million Worth of Themes แล้วเกิดมีแรงบันดาลใจ จากลองทำดูบ้าง ก็เลยพยายามอ่าน Wordpress Codex และอ่านบทความจาก Tutsplus บ่อยๆ สุดท้ายก็รู้สึกว่า PHP ไม่ใช่ทางของเราแฮะ

จริงๆผมพยายามจะศึกษา PHP มาหลายครั้งแล้ว ทุกๆครั้ง ผมรู้สึกว่าไม่ชอบทุกที อาจจะเป็นเพราะเจอคนเขียนโค๊ดที่ห่วยด้วย เลยทำให้มันดูอ่านยาก และเข้าใจยากสำหรับผม

ช่วงกลางปี ผมได้มีโอกาสดูคลิปวิดีโอ Google I/O 2013 แล้วเห็นว่ามีการเปิดตัว Android Studio นั่นคือจุดเริ่มต้นที่ผมเริ่มศึกษา Android เลย ไม่รอช้า โหลดมาติดตั้งทันที

วันรุ่งขึ้นลบทิ้งครับ :) เพราะใช้ไม่เป็นและไม่มีแหล่งศึกษาเลย ก็เลยหัดเขียน Android โดยใช้ Eclipse แทน (จนกระทั่งถึง เวอร์ชันราวๆ 0.3 -0.4 ถึงได้กลับมาลองติดตั้งอีกครั้ง คราวนี้ชื่นชอบมาก และใช้ Android Studio ยาวๆเลยจนถึงทุกวันนี้)

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

  • Android Training : แน่นอนเว็บต้นฉบับ มีข้อมูลทุกอย่างที่ต้องการ
  • mkyong : นอกจาก Java และ Spring ที่ผมอ่านแล้ว ก็ยังมี Android จากเว็บนี้ให้อ่านด้วย
  • Android Hive : เว็บนี้เป็นอีกเว็บที่น่าสนใจ เนื่องจากยกตัวอย่าง มาเป็นเรื่องๆให้อ่านเลย
  • Sleeping for Less : เว็บไทยเว็บนี้ เป็นแหล่งอ้างอิงตอนผมหัดทำ Google Map ครั้งแรก (และปัจจุบัน ยกให้เป็นเว็บ Android อันดับ 1 ของไทยเลย)
  • Tutsplus Android

เมื่อเริ่มศึกษา Android แล้ว ก็ได้เริ่มรู้จัก Startup ครั้งแรก แล้วดันไปเห็นโครงการ JFDI พอดี ก็เลยรวมตัวกันกับเพื่อน และทำแอพ Android แอพแรกส่งไปเลย (ปีเดียวกันกับที่ Molome ได้ไปครับ MOLOME ได้รับคัดเลือกเป็น 1 ใน 10 Startup ที่ได้เข้าร่วมโครงการ JFDI.Asia Startup Accelerator ที่สิงคโปร์

เนื่องจากว่าต้องทำแอพและโปรแกรมจริงๆ ทำให้ผมต้องหา Server เพื่อทำ Backend จะทำเองก็กลัวปัญหาหลายๆด้าน ทำให้ได้รู้จัก Parse และได้หัดใช้ Javascript จริงๆจังๆ โดยเริ่มอ่านและหัดเขียนเว็บจาก Codecademy จากนั้นก็ได้รู้จัก Node.js และ Express.js

ปีนี้ผมได้เริ่มรู้จักแหล่งเรียนออนไลน์ และได้ลองเรียนผ่านเว็บต่างๆ ทั้ง

แต่ก็ไม่ได้ subscribe ตลอดเวลา เลือกเฉพาะเดือนที่ว่าง และก็สลับเว็บไปแต่ละเดือน ให้สมัครพร้อมกันก็ไม่ไหว แพง :)

ปีนี้เช่นเดียวกัน ที่ทำให้ผมได้เริ่มรู้จักกับ Git และ Github มากขึ้น เนื่องจากเริ่มมีโปรเจ็ค Open Source ต่างๆที่ใช้ Github มากขึ้น ทำให้ผมได้หัดรู้จักใช้คำสั่ง command line เบื้องต้น เช่น clone, add, commit, push, pull เนื่องจากว่าใช้ Ubuntu ทำให้เวลาใช้ Git ก็เป็น command line เลย ไม่ได้ใช้ GUI

และแล้วปีที่ 2 ก็ผ่านไป ในปีนี้ ผมได้รู้จักกับ Android ได้รู้จักกับ Web Development อื่นๆ ทั้ง Javascript (Node.js, Express.js), Python, Ruby on Rails นอกเหนือจาก PHP ที่เคยได้ยินแต่คนพูดถึงกัน ได้มีโอกาสได้เขียนบล็อค เข้าไปตอบคำถามตามเว็บบอร์ดต่างๆ จากสิ่งที่เรารู้ให้กับคนที่เค้ายังไม่รู้ สิ่งนี้น่าจะเป็นส่วนหนึ่งที่ทำให้การเขียนโปรแกรมของผมพัฒนาขึ้น เนื่องจากว่าเมื่อผมเขียนบล็อค ก็ต้องไปค้นคว้าเรื่องนั้นๆเพิ่มเติม ทำให้เหมือนเป็นการทบทวนไปในตัว ในขณะเดียวกัน ก็มีคำถามจากผู้อ่าน ซึ่งบางคำถามผมไม่เคยคิดถึงเลย ทำให้มีคำถามเกิดขึ้นมาหลากหลาย ได้หาคำตอบไปในตัวและเรียนรู้ไปในตัว ส่วนภาษาอังกฤษดีขึ้นมาอีกนิด keyword และการค้นหากว่า 90% เป็นภาษาอังกฤษแล้วครับ

ปีที่ 3 (Feb 2014 - Feb 2015)

Goal

เริ่มต้นปีที่ 3 ผมได้เขียน Android ในระดับที่ Advanced ขึ้น ได้เริ่มรู้จักการใช้ Library อื่นๆเข้ามาช่วย อ้อ แล้วก็ได้ซื้อเครื่อง Android มาใช้จริงๆ (หลักจากหัดเขียนโดยใช้ Emulator มาโดยตลอด) และประเด็นสำคัญก็คือ หากเราอยากเป็น Android Developer ที่ดี เราก็ควรจะเป็น Android User มาก่อน หากไม่เคยใช้มาก่อน เราจะพัฒนาแอพได้อย่างไร? แต่เนื่องจากผมเป็นคนไม่ชอบใช้มือถือ นั่นอาจจะเป็นสาเหตุให้หลังๆ ผมเริ่มไม่ได้เขียน Android เท่าไหร่ เนื่องจากนึกไอเดียไม่ออกว่าจะเขียนไปทำไม และเราไม่รู้ว่าอะไรที่แก้ปัญหาผู้ใช้ได้ ผมก็เลยเริ่มมาโฟกัสที่ด้าน Web Development แทน

Android ก็เขียนอยู่นะ เพียงแต่เขียนและปรับปรุงจากแอพเดิม ไม่ได้ทำแอพใหม่ และยิ่งแอบเซ็งเมื่อบางแอพของผมโดนแบน แต่แอพขยะๆที่ก็อปปี้คนอื่นหรือ reskin เพื่อปั่นแอพ กลับอยู่ดีมีสุข มันทำให้ผมไม่อยากคิดไอเดียหรือแอพใหม่ๆเลยแหละ

  • ได้รู้จักกับ Meteor.js ครั้งแรกก็ยังงงๆ เลยตัดสินใจซื้อหนังสือ DiscoverMeteor มาลองหัดเขียน (ปัจจุบันก็ยังอ่านไม่จบเลย) ได้รู้จักกับ Angular.js ได้รู้จักกับ CSS Framework อื่นๆ นอกเหนือจาก Bootstrap เช่น Foundation และ Skeleton

  • ได้เริ่มต้นทำบล็อคแห่งนี้ขึ้นมา โดยบางส่วนก็เป็นข้อมูลเก่าๆของบล็อคเดิม (บัจจุบันโดเมนเดิมไม่ได้ใช้แล้ว ย้ายมาใช้ devahoy แทน ตอนนั้นโดนฝรั่งหรอกว่าจะซื้อต่อ ไอ้เราก็ดีใจ นึกว่าจะขายได้ )

  • ได้รู้จักกับ Game Development หัดเขียนเกมแรกบน Android ด้วย LibGDX โดยมีเว็บไซต์และวิดีโอที่ผมศึกษาเยอะมาก ที่พอจำได้ก็มี

  • จากนั้นก็เริ่มหัดเขียน Game ด้วย HTML5/Javascript ด้วย Phaser.js โดยได้แรงบันดาลใจจาก Lessmilk.com จากนั้นผมก็ทำการซื้อนังสือ DiscoverPhaser พร้อมทั้งติดตามอ่านบทความและเว็บไซต์ต่างๆ :

และต้องบอกเลยว่าเมื่อเทียบ Phaser.js กับ LibGDX ดูเหมือนว่า Phaser.js จะมี community ที่ใหญ่กว่าและมีแหล่งศึกษาที่มากกว่า อีกทั้งการ Development และ Environment ต่างๆ ไม่ต้องตั้งค่าอะไรมาก ขอแค่คุณเขียนเว็บได้ มี Tools เขียนเว็บคุณก็เขียน Phaser.js ได้แล้ว แต่ในขณะที่ LibGDX ต้องมานั่งตั้งค่า Java JDK นั่งติดตั้ง IDE ทำการ import ซึ่งโดยรวมแล้ว มองว่า Phaser.js ทำได้สะดวกและง่ายกว่า

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

และในปีนี้ ผมได้อ่านและซื้อ Ebook เยอะมากๆ จากเมื่อก่อนอาจจะมีโหลดเอาอย่างเดียว เจอเล่มไหนไม่มีก็โหลดๆ โหลดเก็บไว้เยอะมาก (PDF ราวๆ 20 Gb) ตอนนั้นคิดว่าโหลดมาเยอะๆ อ่านจบเมื่อไหร่นะ เราจะเก่งเลยแหละ แต่เชื่อมั้ยแม้จะมีหนังสือเยอะแยะมากมาย แต่ผมกลับอ่านอยู่ไม่กี่เล่ม และไม่จบซักกะเล่ม :)

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

  • SafariFlow : เลยสมัครตอนที่เสียค่าสมาชิกเดือนละ $19.99 (ปัจจุบัน $39/mo) ตอนหลังพบว่าหนังสือเยอะมาก มันทำให้ผมหลุดโฟกัสแบบตอนโหลดอีบุ๊คเลยคือเจอเล่มไหนก็อยากอ่านไปหมด จนอ่านไม่จบซักเล่ม :)
  • Leanpub : แหล่งขาย Ebook สำหรับเหล่า Programmer/Developer มีทั้งอ่านฟรีและเสียตัง ซึ่งส่วนใหญ่แล้วก็ไม่แพงเท่าไหร่
  • Gumroad : มักจะเป็น Ebook จากเหล่า blogger หรือ developer ดังๆที่ผมติดตามผ่าน blog/twitter ของเค้าซะมากกว่า ซึ่งผมมองว่าคนเหล่านี้คลุกคลีกับการพัฒนาซอฟแวร์จริงๆ เรียนรู้จริงๆ ฉะนั้นไม่พลาดที่จะติดตามและอุดหนุนหนังสือของพวกเขา

และปีนี้ น่าจะเป็นปีที่ได้เรียนรู้หลากหลายที่สุดเลยก็ว่าได้ ได้รู้ทั้ง Node.js, Meteor.js หัดลองเขียน Ruby, Sinatra รวมถึงเริ่มต้น Game Development เนื่องจากได้เขียน DevAhoy แบบจริงๆจังๆ ต้องพยายามค้นคว้าอยู่ตลอดเวลา มีการ subscribe ตามบล็อคต่างๆ และพวก weekly อีกทั้งยังมีรับงาน Freelance มาทำด้วย ทำให้ได้เจองานที่หลากหลาย และเมื่อถึงตอนนี้ผมยังรู้สึกว่า ยังอยากเรียนรู้อะไรอีกเยอะแยะไปหมด บางเรื่องก็อยากศึกษาให้สุดๆไปเลย แต่ก็ยังสับสนกับตัวเองอยู่เช่นกัน ว่าชอบอะไรกันแน่ เพราะมันอยากทำหลายๆอย่างเลยนะซิ แต่ตอนนี้ก็คงต้องขอเลือกเป็น JavaScript และ Ruby on Rails ก่อนละกัน (ในอนาคตก็ไม่แน่) ส่วนภาษาอังกฤษตอนนี้ผมอ่านบล็อคอังกฤษทั้งหมด เริ่มหัดฟัง podcast ดูพวกคลิปงาน conference ต่างๆ แม้ว่าจะฟังออกบ้างไม่ออกบ้างก็เถอะ ส่วนการค้นหา ก็เฉพาะภาษาอังกฤษ ส่วนภาษาไทยนะหรอ เอาไว้ค้นหา เวลาผมจะเขียนบทความ ว่ามีคนทำบทความนี้ๆหรือยัง จะได้ไม่ทำซ้ำกัน :)

เป้าหมายปีนี้

เป้าหมายปีนี้หรอ? (เฉพาะในส่วน Programming) มี 4 ข้อครับ ถ้าทำไ่ม่ได้ก็เอาไว้ปีหน้า ฮ่าๆ :)

  • หัดใช้ Vim :) ซึ่งได้พยายามมา 2 รอบแล้วไม่สำเร็จซักที บางทีคำสั่งเบื้องต้น ไม่ได้ใช้นานๆก็ลืมไปอีกละ (นั่นจึงเป็นสาเหตุให้ผมต้องใส่ cover image ไว้บนหัวบทความเพื่อเอาไว้เตือนตัวเองด้วย)
  • หัดเขียน Angular.js : หัดลองเขียนแบบจริงๆจังๆ หลังจากที่รู้แค่เบสิคเบื้องต้นเท่านั้น
  • ทำเว็บแอพด้วย Ruby on Rails ซักเว็บนึง เอาแบบจริงๆ ไม่ใช่ demo หรือตาม tutorial
  • หัดเขียนเกม iOS : ตอนนี้ขอเก็บตังซื้อเครื่องก่อน :)

Goal

ข้อคิด

ต้องบอกเลยว่า ผมก็ยังแปลกใจตัวเองอยู่เหมือนกัน จากที่ตอนแรก ช่วงเรียนมหาวิทยาลัย บอกตามตรงว่าไม่ได้สนใจด้านโปรแกรมมิ่งเลยด้วยซ้ำ หนักขนาดที่ว่า เรียนก็ไม่ตั้งใจเรียน กลับบ้านไม่เคยเปิดโปรแกรมหัดเขียนเลยซักครั้ง บอกเลยผมเขียนโปรแกรมก็เฉพาะตอนเรียนกับตอนสอบ Lab เท่านั้น นอกนั้นอ่านทฤษฎีอย่างเดียวใน sheet รายวิชา (นี่แหละคือสาเหตุหลักที่คนเขียนโปรแกรมส่วนใหญ่ล้มเหลว เนื่องจากอ่านแต่ไม่ได้ลงมือทำ)

Keep Learning

จนตอนนี้ผมกลับชื่นชอบและสนใจโปรแกรมมิ่งมากๆ เรียกได้ว่าก่อนนอนหรือตื่นขึ้นมาก็เริ่มคิดแล้วว่า จะทำอะไรต่อ จะเขียนหรืออ่านอะไรดี หรือจะหัดเรียนรู้อะไรดี? พรสวรรค์ผมไม่มี ผมก็ต้องอาศัยพรแสวง นั่นก็คือ หมั่นศึกษา ขยัน และอดทนเข้าไว้ ซึ่งบอกเลยว่า 3 ปีมานี้ เอาแบบเฉลี่ยๆ อาจจะไม่ทุกวัน นอกจากงานประจำ 8 ชม. ไม่นับนะ ผมใช้เวลา วันละไม่ตำกว่า 6 ชม. เพื่อศึกษาโปรแกรมมิ่งเพิ่มเติม ทั้งหัดเขียนภาษาใหม่ๆ หัดรับงานเล็กๆมาลองทำ เป็นต้น

รวมๆแล้ว 14 ชม. อย่างต่ำ ห๊ะ 14 ชม. บางคนอาจสงสัยว่า ไม่ทำอย่างอื่นหรือไง อยู่แต่หน้าคอม? ผมบอกเลยว่า ผมไม่ได้อยู่แต่หน้าคอม ผมมีไปออกกำลังกาย (เตะฟุตบอล) สัปดาห์นึงก็ 2-3 ครั้งและมีแข่งทุกๆเสาร์-อาทิตย์ มีเวลากลับบ้านไปหาพ่อ แม่ ซึ่งอาจจะไม่ทุกอาทิตย์ 1-2 อาทิตย์กลับที แต่ส่ิงที่ทำให้ผมมีเวลามากขึ้นคือ ผมไม่เคยเที่ยว ไม่ดื่ม เวลาเลิกงานผมมีค่ามากกว่าการไปเที่ยวครับ เสียทั้งเงินเสียทั้งเวลา) งดเล่นเกมส์ งดดูหนัง ดูทีวี อ้อถ้าจะให้ดี งดหรือลดการเล่น social network ด้วยก็ดีครับ แค่นี้คุณก็มีเวลาเหลือเฟือที่จะศึกษาแล้วครับ :)

สรุป

ฉะนั้นก็อยากฝากประสบการณ์ของผมไปเผื่อน้องๆที่กำลังเรียนมหาลัย หรือน้องๆที่กำลังเข้าสู่วัยทำงาน ที่คิดว่าตัวเองไม่เก่งหรือไม่พร้อมที่จะทำงานเนื่องจากอะไรก็แล้วแต่หรืออาจจะไม่ตั้งใจเรียนแบบผมก็ได้ :) ผมทำได้คุณก็ต้องทำได้เช่นกัน ให้หาจุดเปลี่ยน ให้หาส่ิงที่ตัวเองชอบ ให้หาวิธีการเรียนรู้ในแบบฉบับของตัวเองให้เจอ เมื่อนั้นแหละครับ เราจะสนุกกับมัน ดังคำกล่าวของขงจื๊อ ที่ว่า :

“Choose a job you love, and you will never have to work a day in your life. ” : “เลือกงานที่คุณรัก และคุณจะไม่ต้องทำงานเลยแม้แต่วันเดียว”

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

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

ขอบคุณที่ติดตามอ่านจนจบครับ


ปล. บางเหตุการณ์ก็อาจจะมีข้ามๆไปบ้าง มีสลับไปบ้าง เนื่องจากจำเวลาแน่นอนไม่ได้ และแหล่งศึกษาผมก็พยายามจะอ้างอิงถึงให้เยอะสุดเท่าที่จะจำได้ Happy Coding <3

Images Credit

Chai Chai Phonbopit : MEAN Stack @Nextzy • ผู้ชายธรรมดาๆ ที่ชื่นชอบ Android, JavaScript (Node.js) และ Open Source มีงานอดิเรกเป็น Acoustic Guitar และ Football

บทความล่าสุด