วันอาทิตย์ที่ 28 กุมภาพันธ์ พ.ศ. 2559

แนวทางสู่การเป็นโปรแกรมเมอร์ที่ผมเลือก

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

>> บ่อยครั้งที่ผมสับสน และมักมีคำถามทำนองว่า "ฉันจะเขียนโปรแกรมเป็นอาชีพหรือ?" ส่วนคำตอบที่ได้จากการพิจารณาของผมก็คือ "อาจจะ ถ้าทำได้" กล่าวคืออาจจะทำเป็นอาชีพ หมายถึงจริงจังกับมันไปตลอดชีวิตหรือใช้เวลาของชีวิตส่วนใหญ่กับมัน! ทีนี้จึงมีอีกความคิดหนึ่งผุดขึ้น "แล้วถ้าทำไม่ได้ล่ะ?" คำตอบของผมง่ายมากเลยครับ ทำไม่ได้ก็ไม่ต้องทำ ฮ่า (หัวเราะ)

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

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

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

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

>> แต่เพื่อนของผมก็บอกกับผมว่า แกก็เปลี่ยนงานปีต่อปีก็ได้นิว่ะ จะได้อัพเงินเดือนตัวเองด้วยการทำงานกับบริษัทใหญ่ๆ (ซึ่งแน่นอนว่าในสายตาของผม ความคิดนี้ของเขาประสบความสำเร็จไปแล้ว หลายคนที่ผมเจอทำงานสายโปรแกรมเมอร์สามถึงห้าปีก็มีเงินเดือนแตะ 60000 บาท) ผมก็มักกลับมาถามตัวเองเสมอว่า แล้วเราล่ะ จะเอายังไง?

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

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

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

1. อย่างแรกเลยของสายโปรแกรมเมอร์ (ประเทศไทยนี่แหละ) สำคัญสูงสุดคือ ภาษาอังกฤษ (แง้ๆผมจะร้องไห้ ผมไม่ชอบภาษาอักฤษ อย่าว่าแต่ภาษาอังกฤษเลย ภาษาไทยผมยังต้องอายเด็ก) ผมเน้นที่อ่านออกและแปลได้ก่อนครับ ตามมาติดๆเลยคือ พูดได้ ไม่ต้องถึงขนาดดีเลิศหรอกครับ ขอให้สื่อสารกันเข้าใจก็พอแล้ว (อาจใช้ภาษามือและภาพประกอบขณะสนทนาก็ได้นะ ฮ่า เวอร์) ที่ผมใช้และได้ผลเสมอตอนพูดกันไม่เข้าใจกับฝาหรั่งก็คือ ไอ-เลิฟ-ยู แค่นั้นแหละฝรั่งยิ้มแล้วก็เดินหนีไปเลย (บางรายตอบ me too ผมนี่ฮาเทียว)

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

3. ความคิด ความคิดที่ว่าคือความคิดในการมองปัญหา ว่าเกิดปัญหาอะไร แล้วก็ใช้ความคิดหาดูว่าจะจัดการกับปัญหาดังกล่าวได้อย่างไร ควรใช้เฟรมเวิร์ก (framework) ตัวไหนไปพิชิตปัญหา หรือต้องวางโครงสร้างหรือสร้างระบบย่อยอะไรออกมาเพื่อจะจัดการกับปัญหานั้นๆ อย่างนี้เป็นต้น, นอกจากนั้นแล้วความคิดนี้ยังใช้ในการศึกษาภาษาโปรแกรมรวมถึงเทคโนโลยีแต่ละอย่างด้วย ความคิดต้องนำก่อน ต้องรู้ว่าเราเลือกใช้ภาษานั้นนี้ด้วยสาเหตุอันใด (ได้เงินเยอะ! ตอบแบบนี้สมควรถูกตบกระบาลหนึ่งฉาดแรงๆ ฮ่า) หรือเลือกใช้เทคโนโลยี (เช่น หัวหน้าครับเราต้องใช้เว็บเซอร์วิส) นั้นๆด้วยเห็นว่ามันแก้ไขปัญหาจริงๆหรือไม่ เพราะทุกภาษาโปรแกรมรวมถึงทุกเทคโนโลยีที่เกิดขึ้น เขาประดิษฐ์เพื่อให้มาจัดการกับปัญหาแต่ละอย่าง งานแต่ละลักษณะ ในแต่ละช่วงเวลาที่แตกต่างกันครับ

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

>> สรุปว่ามีสี่ขั้นตอนที่ผมเลือกใช้สู่เส้นทางการเป็นโปรแกรมเมอร์ของผม
1. ภาษาอังกฤษ
2. ภาพรวมของทั้งระบบ
3. ความคิดนำ
4. โค้ดดิ้งตาม API ที่เลือก

ฝันดีจ๊ะ .zZ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น