อยากเป็นโปรแกรมเมอร์ละอ่อนใน 3เดือน

TiMeFF
7 min readSep 30, 2016

--

Update: 24-Mar-2018 เนื่องจากมีเพื่อนๆ ยังสนใจเยอะ เลยขออาสาอัพเดทเนื้อหาให้ทันสมัยเพิ่มเติมจากประสบการณ์การทำงานครับ

เอาหว่ะ ออกจากงานละ ขอเวลา 3 เดือน แล้วเดี๋ยวมาดูกัน

เป็นคำพูดที่ผมบอกกับเพื่อนในวันที่ลาออกจากงานประจำที่ตัวเองทำอยู่… ผมเรียนจบเศรษฐศาสตร์ครับ ชีวิตเคยแตะการเขียนเว็บบ้างในสมัยเรียน ม.ต้น แต่หลังจากนั้นก็ไม่เคยแตะอีกเลย ก็มีความคิดว่าจบมาคงทำงานสายการเงินทั้งหลายแหล่ แต่สุดท้ายได้มีโอกาสไปทำงานที่สตาร์ทอัพแห่งหนึ่ง ได้แตะงานหลายประเภท รวมถึง Coding ในบางส่วน ทำให้ตัดสินใจได้ว่า สิ่งที่เรารักมันคืออะไรแบบนี้มากกว่า (เดี๋ยวเรื่องแรงบันดาลใจ ผมไว้เขียนอีกทีนึงนะครับ)

วันนี้อยากมาเล่าเรื่องราว 3 เดือนที่ใช้ชีวิตอยู่กับการเรียน Coding ว่าเป็นอย่างไรซึ่งน่าจะมีประโยชน์กับ…

  1. เพื่อนๆ พี่ๆ น้องๆ ที่อยากรู้จักกับการเขียนโปรแกรม วิธีคิด Logic ต่างๆ อาจจะไม่ต้องเป็น Developer ก็ได้ครับ อาจจะใช้เป็นพื้นฐานบางส่วนไปต่อยอดงานที่ตัวเองทำ งานอดิเรก หรืออ่านเอามัน เป็นความรู้ก็ได้ครับ
  2. Developer ท่านอื่นที่สนใจด้าน Web Development ฝั่ง JavaScript (NodeJS,React) ผมยังไม่เก่งครับ แต่อาศัยว่าลองผิดลองถูกเยอะ อาจจะมาหยิบคอร์สบางส่วน หรือ บทความบางส่วนที่ผมจะหยิบมา ไปอ่านเล่นดูกันได้ครับ

โดยผมจะพยายามเรียนโดยใช้ Online Course ต่างๆ ซึ่งส่วนมากจะฟรี และเลือกเวลาเรียนได้เองครับ แต่ส่วนมากจะเป็นภาษาอังกฤษถือว่าฝึกภาษาไปในตัวเนอะ

ยาวไปไม่อ่าน

  1. เดือนแรกไปปูพื้นฐานกันที่ Intro to Computer Science ทำโจทย์อย่างตั้งใจและจะได้ไม่ต้องกลับมาทบทวนกันอีกครับ
  2. ครึ่งเดือนแรกของเดือนที่ 2 ลองศึกษา หาเป้าหมายว่าตัวเองอยากทำอะไร ด้านไหน ผมใช้วิธีลองมันทุกสายเลยครับตั้งแต่ Front-end Back-end Mobile บลาๆ
  3. ครึ่งเดือนต่อมา เริ่มงมกับทางที่ตัวเองเลือกครับ ค่อยๆเรียนรู้ เสมอต้นเสมอปลาย เดี๋ยวจะค่อยๆเก่งขึ้นเอง ตรงนี้อาจจะยังจับต้นชนปลายไม่ถูก พยายามหาตัวอย่างโปรเจคต่างๆมาลองศึกษาดู แกะให้รู้ไปถึงทุกส่วนครับ
  4. ต้นเดือน 3 ทำโปรเจคขึ้นมาสักอันครับ เอาที่ตัวเองชอบและถนัด อัพขึ้น Github กันเลย
  5. ปลายเดือน 3 เก็บตกสกิลที่จำเป็นอาทิเช่น Design Pattern, Testing, Deployment และเข้าสังคมหากลุ่มเพื่อน ถามหาความรู้จากคนเก่งๆครับ หา Feedback กันครับ

เดือนที่ 1: ปูพื้นฐานกันก่อน

Udacity | Intro to Computer Science

ช่วงเดือนแรก ก็มานั่งวางแผนกับตัวเองก่อนครับว่าจะไปเรียนที่ไหนดี ฝั่งออนไลน์ก็มีเว็บเต็มไปหมดเช่น Udacity, Udemy, Pluralsight, Codeschool, Edx, Coursera ตรงนี้แนะนำว่าอย่าพึ่งไปกระโดดเรียนพวกคอร์สที่เราอยากทำเช่น Web, Android, iOS ทันทีนะครับ

อยากให้มีพื้นฐานให้แน่นก่อน สุดท้ายแนะนำให้มาเริ่มที่คอร์ส Intro to Computer Science ที่ Udacity เพราะไปอ่านรีวิวแต่ละที่มาคอร์สนี้ Highly Recommend อย่างยิ่ง ที่สำคัญฟรี! ครับผม

Udacity | Intro to Computer Science | Talk with Sergey Brin

เนื่องจากผมไม่ได้เรียนมาด้านสายคอมพิวเตอร์จึงอยากปูพื้นฐานตัวเองให้แน่นก่อน คอร์สนี้จะเริ่มสอนตั้งแต่ 0 กันเลยครับ ขอแค่พิมพ์ดีด เล่นคอมเป็น ถือว่าผ่าน

โดยจะเรียนภาษาคอมพิวเตอร์ชนิดหนึ่งที่เรียกว่า Python การเรียนจะครอบคลุมเนื้อหาที่หลักๆที่โปรแกรมเมอร์ควรรู้เช่น การใส่เงื่อนไขให้กับโปรแกรม (If/Else) การสั่งให้โปรแกรมทำซ้ำจนกว่าเราจะพอใจ (Loop)

และที่สำคัญพลาดไม่ได้คือพวกพื้นฐานแนวคิดอื่นๆเช่น Data Structure Algorithm การเขียนโปรแกรมแบบ Recursive Hashing ฯลฯ สุดท้ายจะมีโปรเจคจบให้ทำเป็นการเขียน Social Network ขึ้นมาครับซึ่งก็เป็นการทบทวนเรื่อง Graph Algorithm ไปในตัว (Project สุดท้ายนี่โคตรยากกกกกกก)

Udacity | Intro to Computer Science | Web Crawler Project

รูปแบบการเรียนการสอนจะเป็นแนวพูด Concept ประมาณในรูปเนี่ยแหล่ะครับ แล้วจะปล่อยให้ไปลองเขียน Program ทำ Quiz ในนั้นเองเลย ไม่มีการมานั่งไล่สอน Code ทีละบรรทัด ซึ่งบอกได้เลยครึ่งเดือนเนี่ย ฟัง Lecture สัก 5 วัน ที่เหลือนั่งงมแก้โจทย์ แก้ Quiz กันยาวๆ

ตรงนี้อยากให้ลองพยายามทำกันดูนะครับ ผมขอร้องเลยละกัน 555 เพราะมันทำให้เรามีพื้นฐานแนวคิดที่ดี มันช่วยเป็นรากฐานสำคัญในการต่อยอดเรียนอย่างอื่นได้เป็นอย่างดี และตอนผมไปสมัครงานบางที่นี่ข้อสอบง่ายกว่า Quiz ในนี้ 2–3 เท่าตัวเลยครับ ถือว่าขอนะ อย่าพึ่งดูเฉลย พยายามลองทำดูก่อน

ทางเลือกอื่นๆในช่วงเดือนแรก

ตรงนี้ผมเขียนเพิ่มเติมให้ครับ คอร์สในส่วนนี้ผมยังไม่เคยลองแต่ได้คะแนน Review มาดีและน่าเรียนมากกกกกก

edX | CS50 Intro to Computer Science
  1. CS50: Intro to Computer Science | HarvardX on edX
    ดูแล้ว โคตรอยากไปเรียน Ivy League เลยครับ 5555 ตัวนี้เรียนฟรี แต่ถ้าต้องการใบ Certificate ต้องจ่ายเงินประมาณ $90 ครับผม เคยเข้าไปดูคร่าวๆ วีดีโอ บรรยากาศน่าเรียนทีเดียว ถ้าใครเคยลองก็มาเล่าให้ฟังกันได้นะครับผม
Udacity | Intro to Programming Nanodegree

2. Intro to Programming | Udacity Nanodegree
ตัวนี้จะเป็น Course เสียตังค์ของทาง Udacity ครับ ราคา $199 ต่อเดือน เรียนจบก็หยุดจ่าย ถ้าจบใน 12 เดือนก็จะได้เงินคืน 50%

ตัวนี้ผมลองเดือนนึงแล้วต้องรีบเรียนให้จบเลยครับ โดยเนื้อหาที่เรียนจะเป็นเนื้อหาที่หยิบ Course ฟรีต่างๆของ Udacity เองมารวบรวมให้เป็น Path สำหรับผู้เรียนตามได้ง่ายขึ้น พร้อมทั้งมี Office Hour สำหรับให้เราคุยตัวต่อตัวกับคนสอนได้

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

ส่วนตัวไม่ค่อยชอบเท่าไรครับ รู้สึกว่าแตะเนื้อหาแต่ละส่วนค่อนข้างไม่ลงลึก และเสียเงินเยอะมาก กรณีใช้เวลา 2–3 เดือน

ครึ่งแรกของเดือนที่ 2: หาตัวเอง

9gag.com

เนื่องจาก Developer มันมีหลายสายไปหมดครับ ผมลองยกตัวอย่างมาคร่าวๆครับ เช่น

Front-end Developer ผู้ดูแลหน้าบ้านเว็บไซต์ (Client-side) ดูแลว่า User มาใช้งานเว็บไซต์เราแล้วจะเจออะไรบ้าง หน้าตาเป็นอย่างไร กดนั่น ขึ้นนี่ ใส่รูป ใส่ Design ต้องดึงข้อมูลจากหลังบ้านมาอย่างไร สกิลที่ต้องใช้อาทิเช่น HTML, CSS, JavaScript รวมไปถึง Framework ต่างๆอาทิเช่น Bootstrap, React, Angular, Vueเป็นต้น

Back-end Developer ผู้ดูแลหลังบ้านของ Application ของเรา (Server-side) ทำหน้าที่จัดการฐานข้อมูล ไฟล์ ต่างๆ รับส่งกับทาง Front-end อีกทีหนึ่ง เช่น User มาสมัครสมาชิกกรอกฟอร์มลงในหน้าที่ Front-end ทำไว้ Back-end ก็เขียนรับข้อมูลนั้นมาเก็บไว้ใน Database เป็นอันเสร็จ สกิลที่มีอาทิเช่นภาษา Server ทั้งหลายอาทิเช่น Python, PHP, NodeJS,Go ภาษาติดต่อฐานข้อมูลอาทิเช่น SQL เป็นต้น

Full-stack developer สายทำทุกอย่างตั้งแต่หน้าบ้านยันหลังบ้าน บางทีอาจจะไปตัดภาพ ทำ Photoshop เองก็เป็นได้ 555 ส่วนมากหลังๆ Startup บางแห่งเริ่มใช้บริการ Full-stack กันมากขึ้น เผื่อแก้ปัญหาการ Turnover ที่สูงครับ เวลามีใครออก จะได้สามารถส่งต่องานกันได้อย่างไม่มีปัญหา

Mobile Developer ชื่อตรงตัวครับ เขียน Application สำหรับมือถือซึ่งอาจเป็นได้ทั้งผู้ที่เขียนภาษา Native คือเขียนแค่ Android (Java) หรือ iOS (Swift,Objective C) หรือจะเป็นสายเขียนทีเดียวใช้ได้ทั้งสองระบบอาทิเช่น React Native, IONIC, Cordova เป็นต้น

สาย Data Scientist ออกตัวก่อนว่าสายนี้ผมก็ไม่เคยสัมผัสมาเหมือนกันนะครับ แต่เท่าที่เข้าใจหลักๆคือการเล่นกับข้อมูล ดึงข้อมูลออกมาเพื่อตอบโจทย์ที่คิดไว้ หรือการทำ Machine Learning / Deep Learning กับ Big Data ทั้งหลายที่กำลังมาแรง

และอื่นๆอีกมากมายไม่ว่าจะเป็น DevOps, BA ซึ่งคงยกมาไม่หมดครับ

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

คำถามสำคัญ คือแล้วเราจะรู้ได้ไงว่าชอบอันไหน ถ้าหาคำตอบไม่ได้ผมเสนอว่า ลองให้หมดเลยครับ 555 ที่ผมหยิบมาจะเป็น Course สั้นๆ ซึ่งใช้เวลาต่อคอร์สไม่เกิน 2–3 วัน ซึ่งคาดว่าใช้เวลาประมาณ 1 อาทิตย์ก็น่าจะครบหมดและพอได้ Idea คร่าวๆครับ

  1. Front-end Developer ตัวนี้จะเป็นการเขียนหน้าเว็บไซต์ของเราด้วย HTML, CSS, Javascript รวมไปถึงการใช้ Framework ที่ช่วยให้งานง่ายขึ้นอย่าง Bootstrap ด้วยครับ
    Intro to HTML and CSS
    JavaScript Basics
  2. Back-end Developer ตรงนี้เชื่อว่าทุกคนน่าจะสัมผัส Python มาระดับนึงแล้ว ตอนนี้ลองมาเขียนเพื่อให้ Python ติดต่อกับฐานข้อมูล PostgreSQL ดูครับ
    Intro to Relational Database (ให้ทำฐานข้อมูลสำหรับ Swiss system ในการจับคู่ผู้แข่งขัน เหมือนในเกมส์หมากรุกครับ)
  3. Mobile Developer ตัวนี้ผมเลือก Android มาก่อนนะครับ รู้สึก iOS ตัว Beginner ยังไม่มี
    Android Development for Beginners
  4. Data Scientist บอกตามตรงว่ายังไม่เคยแตะเหมือนกันครับ ถ้าลองได้ความยังไงรบกวน Feedback มาด้วยนะครับผม :)
    Intro to Data Analysis

มาถึงตรงนี้คิดว่าเพื่อนๆ น่าจะได้ไอเดีย ไม่มากก็น้อยครับ หลายๆคนคงจะเริ่มมีความมั่นใจในการเขียนโปรแกรมมากขึ้นครับ แต่เดี๋ยวก่อน ของจริงมันพึ่งจะเริ่มเท่านั้น ….

ครึ่งหลังเดือนที่ 2: Cliff of Confusion

พักครึ่งกันก่อน พอดีพึ่งได้อ่านบทความหนึ่งของคุณหมอ Rath (A Doctor Who Codes & Travels) นำมาครับ ชื่อว่า Why Learning to Code is So Damn Hard

The Learn-to-Code Journey

ที่ผ่านมาที่เราเรียนกันใน Udacity เปรียบเสมือนช่วง Hand-holding honeymoon ครับ คือฮันนีมูนของเราถูกจูงมือให้ทำนู่นทำนี่อย่างเป็นขั้นเป็นตอน เราจะมีความรู้สึกมั่นใจขึ้นหลังจากทำ Quiz ใน Course ได้ดีขึ้น เร็วขึ้น

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

ถ้าคำตอบของคำถามนั้น คุณสามารถตอบได้อย่างเป็นขั้นเป็นตอน พร้อมลงมือทำได้อย่างง่ายดาย ยินดีด้วยครับคุณ ข้ามไปอ่านเดือนที่ 3 ได้เลย

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

เนี่ยแหล่ะครับ คุณได้เดินทางมาถึง Cliff of Confusion หรือหน้าผาแห่งความสับสนเรียบร้อยแล้ว ความมั่นใจของคุณจะเริ่มหดหาย ไม่รู้จะเริ่มไปต่อทางไหนดี คุณจะรู้สึกว่ามีอะไรให้เรียนรู้เต็มไปหมด

  • ฝึกเขียนภาษาไหนดี
  • ภาษานั้นมีข้อดีอย่างไร เขียนไปแล้วมันจะ Work หรือเปล่า
  • Framework เขาใช้กันยังไง
  • แล้วจะเอาขึ้นไปบนเว็บไซต์ ให้เพื่อนเข้ามาดูยังไง

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

ประสบการณ์ตัวเอง (Web Developer — NodeJS, React, Socket.io, MongoDB)

ตรงนี้ผมจะขออนุญาตแชร์ประสบการณ์ตัวเองในช่วง Cliff of Confusion ครับ และถ้าเพื่อนๆ Developer ท่านใดสนใจเรื่อง JavaScript MERN Stack ก็ดูตามได้นะครับ

ตัวผมเองสุดท้ายเลือกที่จะฝึกสกิลด้านการพัฒนาเว็บไซต์ก่อน เนื่องจากอยากเข้าใจ Flow ระบบของทั้ง Back-end ไปจนถึง Front-end ครับผม ตอนแรกก็เลือกภาษาเหมือนกันว่าจะเริ่มที่ภาษาใดดี ก็ได้พี่ๆ ที่ทำงานเก่าแนะนำมาเป็นตัว JavaScript ประกอบกับหลังๆ กระแสที่ฉุดไม่อยู่ของ NodeJS, React มันมาแรงเหลือกัน

NodeJS

เกริ่นกันก่อน NodeJS เป็นการใช้ภาษา JavaScript ที่ปกติเราใช้เขียนกันแต่ในหน้าเว็บธรรมดาเนี่ยแหล่ะครับ เอามาทำให้มันสามารถเขียนเป็นภาษา Server-side ได้โดยมีจุดเด่นเรื่อง Event-driven, non-blocking I/O คือเขียนโปรแกรมแบบ Asynchronous อารมณ์ประมาณว่า สั่งให้มันอ่านไฟล์ ระหว่างอ่านยังไม่เสร็จก็ไปทำอย่างอื่นก่อน พอเสร็จแล้วค่อยกลับมาทำตรงนี้ได้ ซึ่งทำให้หลังๆก็ได้รับความนิยมมากขึ้นเรื่อยๆ ผมก็เลยเลือกใช้เจ้านี่เป็นภาษา Back-end ของผม

React

React เป็น JavaScript Library สำหรับการแสดงผลหน้าเว็บไซต์ครับ ถูกสร้างขึ้นมาโดยยักษ์ใหญ่พี่มาร์ค Facebook ของเรานี่เอง โดยเจ้านี่มันช่วยให้เราจัดการหน้าเว็บเราได้อย่างสบาย บรื๋อ ทำ SPA (Single page application เว็บแบบหน้าเดียวไม่ต้อง Refresh หน้าใหม่) รวมไปถึงการทำ Universal JavaScript ได้อีกด้วย เริ่มยากและ เดี๋ยวแปะโป้งไว้ก่อน ไว้มาเล่าให้ฟันกันอีกทีครับ (ตัว React มันไม่ยากเท่าไรหรอกครับ แต่เพื่อนมันทั้ง Redux, Router เนี่ย เอาเรื่องอยู่)

ในช่วงนี้ผมหาข้อมูลจากหลายที่มากครับ อาจจะเริ่มเสียตังค์ให้ Udemy บ้าง ผมขอคัดเน้นๆ Course เด็ดๆชนิดว่าห้ามพลาดมาให้ละกันครับ (เจ็บมาเยอะเป็นสิบๆคอร์ส T_T)

Colt Steele

Udemy — The Web Developer Bootcamp

คอร์สนี้เป็นคอร์สค่อนข้างยาวครอบคลุมตั้งแต่ HTML jQuery NodeJS MongoDB รวมไปถึงการ Deploy บน Heroku เลยครับ ตัวนี้ถ้าอยากเห็นภาพรวมแนะนำเริ่มก่อนเลย จะช่วยให้เราเริ่มจับต้นชนปลายได้

Anthony Alicea

Udemy — JavaScript : Understanding the Weird Parts

คอร์สโคตรมหาเทพของ Anthony Alicea ครับ เป็นคอร์สที่ทำให้ความรู้ JavaScript ของผมก้าวกระโดดอย่างมีนัยยะมากๆ Term แปลกๆเช่น Closure High-order function Lexical Scopeนี่พี่แกอธิบายจนเป็นเรื่องง่ายหมดเลย เรียนกันจนถึงขั้นแกะ jQuery ออกมาดูแล้วเขียน Library ของตัวเองเลยครับ อันนี้ 5 ดาวไม่ต้องสงสัย

Anthony Alicea

Udemy — Learn and Understand NodeJS

คอร์สของมหาเทพอีกคอร์สครับ คอร์สนี้ไปลงลึกเรื่อง Node กันแบบแกะถึง V8 Engine ด้านหลังเลย คนนี้ผมไม่พูดมากละครับ 5 ดาวทุกคอร์ส 555 อ่อ แต่คอร์สของอีตาคนนี้จะไม่ค่อยเน้นตัวอย่างนะครับ จะเน้น Concept ต่างๆ ซึ่งสามารถเอาไปพูดให้คนฟังได้อย่างไม่อายใครแน่นอน

Stephen Grider

Udemy — Modern React with Redux

น่าจะเป็นคอร์สเรื่อง React, Redux ที่ดีที่สุดใน Udemy ครับ แต่ว่ายังไม่ครอบคลุมถึงเรื่อง Server Side Rendering คนนี้สอนเน้นเป็น Project มาทำนะครับ ส่วนตัวผมชอบสไตล์ของ Anthony มากกว่า แต่อันนี้ถือว่าใช้ได้ครับ เขาจะมีคอร์สต่อเป็น Advance React แต่ผมไม่ได้ลงต่อแล้ว ละก็มีเป็น React Native อีกตัว ดูผ่านๆใช้ได้ครับ ไว้ Review กันคราวหน้าอีกที

Udacity

Udacity — How to Use Git and GitHub

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

รายงานภาษาไทย Final .doc

รายงานไทย Final จริงๆแล้วนะ .doc

อะไรพวกนี้ ตัวนี้จะช่วยให้เราแก้ปัญหานั้นไปด้วย รวมถึงการร่วมทำงานกับทีมของเราด้วยครับ รายละเอียดมีเยอะ ผม Recommend ว่าควรมีติดตัวไว้ทุกคน

ต้นเดือนที่ 3: สร้างโปรเจคขึ้นมา

Individual Project

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

ลุยกันเลยครับ แล้วอย่าลืมอัพขึ้น GitHub มาอวดเพื่อนๆกันด้วยหล่ะ

ตรงนี้สำคัญนะครับ ผมไปสมัครงานที่หนึ่ง เราก็คุยกันเล่นๆว่าบางคนชอบส่ง Resume มาแบบพลังดาว เช่น JavaScript ฝีมือ 4 ดาว จาก 5 ดาว ซึ่งมันวัดอะไรไม่ได้! ส่งกับแบบ GitHub ไปเลย เท่กว่าเยอะ

ปลายเดือนที่ 3: เก็บตกสกิลสำคัญและเข้าสังคมกันหน่อย

โลกจริงไม่ได้นะว้อย

ตอนนี้ Web หรือ Application น้อยๆ ของทุกคนคงรันได้แล้วหล่ะครับ แต่ถ้าให้ไปแกะ Code ขึ้นมา หรือเพิ่ม Function บางอย่าง ถ้าทำได้อย่างง่ายได้รวดเร็ว แปลว่าคุณมี Design Pattern อยู่ในหัวใจ เอาไปเลยสิบกะโหลก

แต่สำหรับผมตอนนี้เละครับ เละ 555 Code ที่เละนี่นอกจากเราจะอ่านเองไม่รู้เรื่องแล้ว เวลาไปทำงานกับคนอื่นก็ระวังโดนด่าพ่อมาได้นะครับ ฉะนั้นในจุดนี้ผมแนะนำให้ทุกท่านลองไปศึกษาพวกคอร์สที่ไม่ค่อยจะ Sexy เท่าไร แต่เรียกว่าจำเป็นในสายอาชีพนี้แล้วกัน

Udacity

Udacity — JavaScript Design Pattern

MVC MVP MVVM อ่ะรู้จักเปล่าาา มานี่เลย Course เยี่ยมยอดกระเทียมดองอันต่อมาของ Udacity ครับ โดยในคอร์สจะให้เราเขียน Code แบบที่เราทำปกติก่อนเลยแล้วจะแกล้งโดยการใส่ Requirement ไปเรื่อยๆ พอถึงจุดนึงจะพบว่ามันยุ่งเหยิงมาก ผู้สอนก็จะค่อยอธิบายการประยุกต์ใช้แนวคิด MVO (Model-View-Octopus ปลาหมึกเกี่ยวอะไรไปดูเองครับ) และก็จะเริ่มให้เราเขียนใหม่ รวมทั้งปา Code เน่าๆมาให้เราแก้ด้วย จบด้วยการเขียน Code ด้วย Organized Framework อย่าง Backbone และ Knockout คอร์สนี้นอกจากสอน Pattern แล้วยังสอนแนวคิดการทำงานอีกด้วยครับ Highly Recommend มากๆ

Testing, OOP Pattern, Data structure and Algorithm

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

Udacity — JavaScript Testing อันนี้ใช้ Jasmine ครับแต่ยังไม่ลึกเท่าไร
Udacity — Object-Oriented JavaScript ส่วนตัวไม่ค่อยแนะนำเพราะยังไม่ได้ใช้เป็นตัวคลาสของ ES6 และ Anthony สอนเข้าใจง่ายกว่าเยอะ แต่ทีเด็ดอยู่ที่ Project จบครบ เด็ดและยากมาก (ทำเกมส์คล้ายๆ Chicken Crossy Road อ่ะครับ บน HTML5 Canvas)
Udacity — Technical Interview ชื่อเป็นการสัมภาษณ์แต่ที่จริงคือคอร์ส Data Structure และ Algorithm แบบเร่งรัดครับ พอใช้คร่าวๆได้ แต่ถ้ามีเวลาแนะนำคอร์สเต็มของ Udacity ดีกว่า
Udacity — Intro to Algorithms คอร์สจี้ดอีกตัว เห็นบอกว่ายากมาก ถ้ามีเวลาเดี๋ยวจะรีบลงแล้วมาเล่าให้ฟังครับ
Udacity-Web Development คอร์สใหญ่เรื่อง Web ของ Udacity ดูแล้วน่าสนใจมากครับ ลงลึกเรื่อง Caching, Session, Cookie ที่สำคัญใช้ Django, Flask ด้วย อยากลองๆ

เข้าสังคมกันหน่อย

ผมเชื่อว่ารวมตัวกันเรียน หรือหาคนแนะนำจะช่วยให้ความเร็วของเรามากขึ้นครับ ยิ่งเดี๋ยวนี้เรามี Application พวก Meetup ซึ่งแทบจะมี Event สาย Dev กันแทบทุกอาทิตย์ และ Speaker แต่ละคนที่มาก็ปีศาจทั้งนั้น หรือจะเป็นการสัมมนาต่างๆของทั้ง Amazon Microsoft พยายามออกไปข้างนอกเยอะๆครับ เป็นการเปลี่ยนบรรยากาศไปในตัว อยู่ที่บ้านจะเฉาเอา ไปรู้จักคนใหม่ๆ รู้จักว่าข้างนอกไปถึงไหนแล้ว

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

Tip & Tricks

Trick เล็กๆน้อยๆ ที่พบเจอระหว่างการเดินทางครับ

  • เนื่องจากผมไม่มีพื้นฐานด้านคอมพิวเตอร์มาก่อน ถ้าจะตามคนที่เรียนสายคอมมา เราต้องทำงานเพิ่มเท่าตัว ผมจึงพยายามกำหนดตัวเองให้เรียนโค้ดให้ได้วันละ 10–14 ชม. ครับผม หนักหน่อยแต่ถือว่าผลลัพท์ออกมาพอใช้ได้เลย
  • พยายามทำให้เป็นกิจวัตรจนรู้สึกว่า วันนี้ถ้าทำไม่ได้ตามเป้าจะหงุดหงิด นั่นแหล่ะแปลว่าเข้าทรงละครับ 555 ของผม แรกๆ ออกจากงานมา จะรู้สึกอยากพัก เนือยๆ ต้องพยายามบังคับตัวเองให้ได้
  • เวลามี Quiz พยายามกระโดดเข้าใส่ อย่าหนีมันครับ ทุก Quiz มาประโยชน์แก่เราเสมอ
  • อันนี้เจอใน Course Udacity สักอันครับ มีผู้สอนบอกว่า “หลายครั้งในชีวิต Developer คุณจะเจอสถานการณ์ที่เรียกว่า absolutely have no idea แต่สุดท้ายมันไม่มีอะไรทำไม่ได้ อยู่ที่ว่าใช้เวลามากน้อยแค่ไหนเท่านั้นเอง”
  • อย่ากลัวที่จะเรียนภาษาใหม่ๆ หรือ ทำอะไรที่ต่างไปจาก Stack ที่ตัวเองใช้ครับ พี่หนูเนย เคยบอกไว้ว่ายิ่งเราเรียนภาษาใหม่เรื่อยๆ Learning Curve เราก็จะ Steep ขึ้นเรื่อยๆ ทำให้เราเรียนได้เร็วขึ้นไปอีก
  • ระหว่างที่งมๆ กันในช่วงเดือนที่ 2 ที่ 3 มันจะมีจังหวะที่เราฝึกใช้หรือเรียนอะไรบางอย่างที่สุดท้ายไม่ได้ใช้จริงๆ ก็อย่าไปซีเรียสครับ มันเป็นกระบวนการเรียนรู้
  • การเรียนจากวีดีโอมีข้อดีคือผู้สอนทำการย่อยมาให้เราแล้ว รวมถึงหา Best Practice ของ ภาษา / Framework มาให้เรียบร้อย แต่ข้อเสียคือเวลาที่ใช้ค่อนข้างเยอะครับ ระหว่างที่เรียนลองฝึกอ่าน Document ไปพลางๆ ก่อนตัดสินใจเรียนวีดีโอก็ได้ครับ

สรุปทั้งหมด และ Next Step

ก็ประมาณนี้หล่ะครับ 3 เดือนที่ผ่านมา ตัวผมเองก็ยังไม่ได้เก่งอะไร มีเรื่องที่ต้องให้เรียนรู้อีกเยอะ กะจะไปลองศึกษาภาษา Java สักหน่อย หลังจากที่ภาษาที่เรียนมาไม่มีตัวไหนเป็น OOP จริงจังเลย อยู่สายนี้อย่าหยุดเรียนรู้ครับ อะไรที่ผมเขียนวันนี้อีก 2 ปีอาจเป็นเทคโนโลยีล้าหลังหมดแล้วก็ได้ครับ ต้องหมั่นเรียนรู้อยู่เสมอ

มาถึงตอนนี้ก็อยู่ที่ทุกท่านแล้วครับ ว่ามีเป้าหมายต่อไปอย่างไร ใครอยากลองทำ Software ของตัวเอง หรืออยากทำ Startups ขึ้นมา ก็ลุยกันเลย

หรืออย่างผมก็คิดว่าจะเข้าไปหางานทำก่อน ก็ลองสมัครไปดูเลยครับ เดี๋ยวนี้หลายๆที่เขาไม่ได้มาดู Degree กันแล้ว ขอแค่แสดงให้เขาเห็นว่าเราทำงานได้ มีผลงาน ก็ถือว่าใช้ได้แล้วครับ

ปล. ขอแอบประชาสัมพันธ์ ช่วงนี้ผมเริ่มเขียน Blog นี้เป็นงานอดิเรกครับ อย่าลืมกดติดตามกันได้ สับเพเหระ Tech บ้าง ไม่ Tech บ้าง ฝากไว้ด้วยนะครับ :)

--

--

TiMeFF

(timeff.io) Tech Entrepreneur, Developer ,and a million other things